Historical Site
About This Attraction
The Alhambra in Granada, Spain, is a historic palace and fortress complex that attracts millions of visitors each year. Built during the mid-13th century by the Nasrid dynasty, it showcases stunning Islamic architecture with intricate geometric patterns and ornate tilework. Its key features include the Alcazaba, a military fortress, the Nasrid Palaces with their exquisite courtyards, and the Generalife gardens, which offer a serene escape with their beautiful landscaping. For those planning a visit, it is advisable to book tickets well in advance as the site has a daily visitor limit to preserve its condition.
Alhambra travel information highlights that this UNESCO World Heritage site offers guided tours for a deeper understanding of its history and significance. Audio guides are also available for those who prefer exploring at their own pace. The site is situated on Sabika Hill, providing panoramic views of Granada and the surrounding mountains. Visitors should wear comfortable shoes as there is quite a bit of walking involved. Access to the Alhambra is facilitated through well-organized public transport links from central Granada, making it convenient for tourists staying in the city.
Location Details
Address
Calle Real de la Alhambra, s/n, 18009 Granada, Spain
Visitor Information
Pricing & Ratings
Ticket Prices
Adult
19.09 EUR
Child
Free (under 12)
Student
12.73 EUR
Senior
12.73 EUR
Opening Hours & Booking
Open
Days
Monday to Sunday
Hours
8:30 AM to 8:00 PM
Seasonality
March 15 to October 14: 8:30 AM to 8:00 PM; October 15 to March 14: 8:30 AM to 6:00 PM
Booking
Booking Required?
Yes
Advance Booking
60 days days recommended
Book Your Visit
*Prices may vary. Check official website for the most up-to-date information.
Nearby Attractions
The Generalife in Granada is a historic garden and summer palace that once served as…
Learn More
Granada Cathedral, known as the Cathedral of the Incarnation, is located in the heart of…
Learn More
Albayzín is a historic neighborhood in Granada, Spain, known for its narrow winding streets and…
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
Playa de Los Lances is a well-known beach located in Tarifa, Spain. The beach stretches…
Learn More
Punta de Tarifa, located in the southernmost part of mainland Spain, is a notable geographic…
Learn More
The Castle of Guzmán, located in Tarifa, Spain, dates back to the 10th century and…
Learn More
Al-Qarawiyyin University in Fez, Morocco, is recognized as one of the oldest existing and continually…
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';
}
});
});
}
});