Natural Landmark
About This Attraction
The Rock of Gibraltar is a prominent limestone formation located at the southern tip of the Iberian Peninsula. It stands about 426 meters high and offers stunning views of the surrounding area, including the Mediterranean Sea and the Atlantic Ocean. Visitors can explore several attractions on the rock, such as St. Michaels Cave, which is filled with impressive stalactites and stalagmites. Additionally, the Upper Rock Nature Reserve is home to various wildlife species, including the famous Barbary macaques.
Practical information for visitors includes checking The Rock of Gibraltar opening hours before planning a visit. Typically, the nature reserve is open from 9:30 AM to 7:15 PM during summer months, with slightly reduced hours in winter. Accessing the rock is easy via cable car, taxi, or on foot for those who enjoy hiking. Remember to bring comfortable shoes and a camera to capture the breathtaking scenery.
Location Details
Address
Gibraltar GX11 1AA, United Kingdom
Visitor Information
Pricing & Ratings
Ticket Prices
Adult
16
Child
10
Student
14
Senior
12
Opening Hours & Booking
Open
Days
Daily
Hours
09:00 - 18:15
Seasonality
Year-round
Booking
Booking Required?
No
Nearby Attractions
Markt Square in Bruges is the central hub of this historic Belgian city. It is…
Learn More
The Belfry of Bruges is a medieval bell tower located in the heart of Bruges,…
Learn More
The Basilica of the Holy Blood in Bruges is a renowned church known for housing…
Learn More
Trinity College Dublin is a renowned university located in the heart of Irelands capital city.…
Learn More
Dublin Castle is a historic site located in the heart of Dublin, Ireland. Originally built…
Learn More
The Guinness Storehouse in Dublin is a popular tourist attraction located at St. Jamess Gate…
Learn More
Scheveningen Beach in The Hague is a popular destination for locals and tourists alike. It…
Learn More
The Binnenhof in The Hague is a historic complex of buildings that houses the Dutch…
Learn More
The Mauritshuis is a renowned art museum located in The Hague, Netherlands. Known for its…
Learn More
The Prinsenhof Museum in Delft is a historic museum that offers insights into the history…
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';
}
});
});
}
});