Beach
About This Attraction
Sunrise Beach in Koh Lipe is a popular destination known for its stunning sunrises and relaxed atmosphere. Located on the east side of the island, it offers clear waters and soft sandy beaches, making it a great spot for swimming and snorkeling. Visitors will find a range of accommodations along the beach, from budget-friendly options to more upscale resorts. For those looking for Sunrise Beach travel information, its important to note that the best time to visit is during the dry season from November to April.
The beach is accessible by boat from nearby destinations such as Langkawi in Malaysia and Pak Bara in Thailand. Local restaurants offer fresh seafood and traditional Thai cuisine, ensuring there are plenty of dining options available. Equipment rentals for water activities can be found along the beach, providing easy access to fun in the water. Overall, Sunrise Beach offers a peaceful retreat with practical amenities and beautiful natural surroundings.
Location Details
Address
Sunrise Beach, Koh Lipe, Satun 91000, Thailand
Visitor Information
Pricing & Ratings
Ticket Prices
Adult
Free
Child
Free
Student
Free
Senior
Free
Opening Hours & Booking
Open
Days
Open Daily
Hours
24 hours
Seasonality
Open all year
Booking
Booking Required?
No
Nearby Attractions
Scenic viewpoint offering panoramic views of Koh Lipe and surrounding islands.
A serene beach known for its clear waters and vibrant marine life, ideal for snorkeling…
Scenic viewpoint offering panoramic views of Koh Lipe and surrounding waters.
A serene beach with clear waters, ideal for relaxation and snorkeling.
Secluded beach with crystal-clear waters and white sand.
A vibrant street with shops, restaurants, and bars.
Bulow Beach is a serene and picturesque beach known for its clear waters and white…
Daya Beach is a serene and picturesque beach known for its clear waters and white…
A serene and secluded beach with clear waters and soft sand.
Koh Adang, located near the popular island of Koh Lipe in Thailand, is a part…
Learn More
";
}
// 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';
}
});
});
}
});