Cathedral
About This Attraction
St. Stephens Cathedral is a prominent historical site located in the heart of Hvar, Croatia. The cathedral is known for its impressive Renaissance architecture, which dates back to the 16th and 17th centuries. Visitors can admire the intricate details of its facade and the beautiful interior that houses various religious artworks. It serves as an active place of worship, so its important for visitors to be mindful of ongoing services.
When planning a visit, be sure to check St. Stephens Cathedral opening hours, as they may vary depending on the season or religious events. The cathedral is located in Hvars main square, making it easily accessible for those exploring the town. Local guides and information centers often provide insights into its history and significance, enhancing the visitor experience. Remember to dress modestly when entering this sacred space as a sign of respect.
Location Details
Address
Trg Sv. Stjepana, 21450, Hvar, Croatia
Visitor Information
Pricing & Ratings
Ticket Prices
Adult
Free
Child
Free
Student
Free
Senior
Free
Opening Hours & Booking
Open
Days
Monday to Sunday
Hours
9:00 AM to 12:00 PM, 5:00 PM to 7:00 PM
Seasonality
April to October
Booking
Booking Required?
No
Nearby Attractions
The Riva Promenade in Split is a popular waterfront area known for its scenic views…
Learn More
St. Marks Cathedral in Korčula is a notable example of Dalmatian architecture and serves as…
Learn More
The Roman Forum in Zadar is a historic site dating back to the 1st century…
Learn More
The Sea Organ in Zadar, Croatia, is an architectural marvel that combines art and nature.…
Learn More
Zadar Cathedral, officially known as the Cathedral of St. Anastasia, is the largest church in…
Learn More
Ljubljana Castle is a historic fortress located on Castle Hill in the heart of Slovenias…
Learn More
The Triple Bridge in Ljubljana is a unique architectural feature that connects the old town…
Learn More
Dragon Bridge is a well-known landmark in Ljubljana, the capital of Slovenia. It was completed…
Learn More
Preseren Square in Ljubljana is a central point of the city and a common meeting…
Learn More
Tivoli Park in Ljubljana is the largest park in Slovenias capital, spanning an impressive 5…
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';
}
});
});
}
});