Island
About This Attraction
Nang Yuan Island is a small, picturesque destination near Koh Tao in Thailand. Known for its unique three-island formation connected by sandbars, it offers breathtaking views and clear waters ideal for snorkeling. Visitors can enjoy activities like hiking to the viewpoint, which provides a panoramic view of the surrounding area. Its important to check Nang Yuan Island travel information ahead of time, as there are specific rules such as prohibitions on plastic bottles and bringing your own fins.
The islands beach is perfect for relaxing and enjoying the serene environment. Due to its popularity, it can get crowded during peak travel seasons, so early arrival is recommended. Accommodations are limited on Nang Yuan Island itself, but many tourists choose to stay on nearby Koh Tao and visit for a day trip. Boat taxis run regularly between the islands, making access convenient and straightforward.
Location Details
Address
Nang Yuan Island, Koh Tao, Surat Thani, Thailand
Visitor Information
Pricing & Ratings
Ticket Prices
Adult
250 THB
Child
150 THB
Student
250 THB
Senior
250 THB
Opening Hours & Booking
Open
Days
Daily
Hours
9:00 AM - 5:00 PM
Seasonality
Year-round
Booking
Booking Required?
No
Nearby Attractions
Sairee Beach is the longest and most popular beach on Koh Tao, an island in…
Learn More
Mae Haad Pier is the main gateway to Koh Tao, an island in Thailand known…
Learn More
Shark Bay, located on the southern coast of Koh Tao in Thailand, is a popular…
Learn More
John-Suwan Viewpoint is a popular destination on Koh Tao, Thailand, offering stunning panoramic views of…
Learn More
Ang Thong Marine Park, located near Koh Samui in Thailand, is a stunning archipelago of…
Learn More
A tranquil beach known for its serene atmosphere and clear waters, ideal for relaxation and…
Tranquil beach with golden sands and clear waters, popular for relaxation and water sports.
Nathon Town is the administrative and commercial center of Koh Samui, known for its local…
Interactive 3D art museum with optical illusions.
Secluded beach with clear waters and white sand.
";
}
// Initialize modal controls
const initModalControls = function() {
console.log('Initializing modal controls');
const modal = document.getElementById('attraction-modal');
const closeBtn = document.querySelector('.attraction-modal-close');
if (closeBtn) {
closeBtn.addEventListener('click', function() {
modal.style.display = 'none';
document.body.style.overflow = '';
});
}
window.addEventListener('click', function(event) {
if (event.target === modal) {
modal.style.display = 'none';
document.body.style.overflow = '';
}
});
// Make attraction cards clickable
const attractionCards = document.querySelectorAll('.attraction-card');
console.log('Found ' + attractionCards.length + ' attraction cards');
attractionCards.forEach(card => {
card.addEventListener('click', function(e) {
openModalWithCardData(this);
});
});
};
// Function to open modal with card data
const openModalWithCardData = function(card) {
// Get data from hidden div
const data = card.querySelector('.attraction-full-data');
if (!data) {
console.error('No attraction data found in card');
return;
}
const modal = document.getElementById('attraction-modal');
if (!modal) {
console.error('Modal element still not found after creation attempt');
return;
}
// Helper function to safely get element text
function getElementText(selector) {
const element = data.querySelector(selector);
return element ? element.textContent : '';
}
try {
// Basic Info
document.getElementById('attraction-modal-title').textContent = getElementText('.attraction-name');
document.getElementById('attraction-modal-type').textContent = getElementText('.attraction-type-full');
document.getElementById('attraction-modal-description').textContent = getElementText('.attraction-description-full');
// Reset all containers to hidden
['attraction-modal-hours-container', 'attraction-modal-price-container',
'attraction-modal-address-container', 'attraction-modal-image-container'].forEach(id => {
const container = document.getElementById(id);
if (container) container.style.display = 'none';
});
// Rating
const ratingText = getElementText('.attraction-rating-full');
if (ratingText) {
const ratingValue = parseFloat(ratingText);
if (!isNaN(ratingValue)) {
const ratingValueEl = document.getElementById('attraction-modal-rating-value');
const ratingFillEl = document.getElementById('attraction-modal-rating-fill');
if (ratingValueEl) ratingValueEl.textContent = ratingValue.toFixed(1) + '/10';
if (ratingFillEl) ratingFillEl.style.width = (ratingValue * 10) + '%';
}
}
// Show the modal
modal.style.display = 'block';
document.body.style.overflow = 'hidden'; // Prevent background scrolling
console.log('Modal opened successfully');
} catch (error) {
console.error('Error opening modal:', error);
}
};
// Try to create the modal
const created = createModal();
console.log('Modal created:', created);
// If not created (already exists), initialize the controls
if (!created) {
initModalControls();
}
// Also initialize distance toggle
const distanceToggle = document.getElementById('distance-unit-toggle');
if (distanceToggle) {
distanceToggle.addEventListener('change', function() {
const showKm = this.checked;
// Update toggle labels
const labels = document.querySelectorAll('.toggle-label');
if (labels.length >= 2) {
labels[0].style.opacity = showKm ? '0.5' : '1';
labels[1].style.opacity = showKm ? '1' : '0.5';
}
// Update all distance displays
document.querySelectorAll('.nearby-attraction-card').forEach(card => {
const kmEl = card.querySelector('.distance-km');
const miEl = card.querySelector('.distance-mi');
if (kmEl && miEl) {
kmEl.style.display = showKm ? 'inline' : 'none';
miEl.style.display = showKm ? 'none' : 'inline';
}
});
});
}
});