Geographic Landmark
About This Attraction
Punta de Tarifa, located in the southernmost part of mainland Spain, is a notable geographic point where the Mediterranean Sea meets the Atlantic Ocean. This area is well-known for its strong winds, making it a popular spot for windsurfing and kitesurfing enthusiasts. Nearby, you can visit Isla de Las Palomas, which is connected to the mainland by a causeway. While there are no specific Punta de Tarifa opening hours because it is an open natural site, visitors often enjoy exploring during daylight for safety and visibility.
Apart from watersports, Punta de Tarifa offers breathtaking views of both Africa and Europe on clear days. The town of Tarifa itself provides various amenities, including cafes and shops that cater to visitors. Historical sites like the Guzmán Castle add cultural interest to your visit. With its unique position and diverse activities available, Punta de Tarifa caters to those interested in nature and adventure alike.
Location Details
Address
Punta de Tarifa, 11380 Tarifa, Cádiz, Spain
Visitor Information
Pricing & Ratings
Ticket Prices
Adult
Free
Child
Free
Student
Free
Senior
Free
Opening Hours & Booking
Open
Days
Daily
Hours
Open 24 hours
Seasonality
Year-round
Booking
Booking Required?
No
Nearby Attractions
Playa de Los Lances is a well-known beach located in Tarifa, Spain. The beach stretches…
Learn More
Plaza de España in Seville is a notable landmark and a prime example of the…
Learn More
The Alcázar of Seville is a stunning example of Mudejar architecture, showcasing the cultural history…
Learn More
Seville Cathedral, officially known as the Cathedral of Saint Mary of the See, is located…
Learn More
Granada Cathedral, known as the Cathedral of the Incarnation, is located in the heart of…
Learn More
The Alhambra in Granada, Spain, is a historic palace and fortress complex that attracts millions…
Learn More
Al-Qarawiyyin University in Fez, Morocco, is recognized as one of the oldest existing and continually…
Learn More
Bou Inania Madrasa in Fez is an architectural marvel dating back to the 14th century,…
Learn More
The Medina of Fez, located in Morocco, is one of the largest car-free urban areas…
Learn More
The Generalife in Granada is a historic garden and summer palace that once served as…
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';
}
});
});
}
});