Tour Virtual 3D
Explora la fachada en perspectiva interactiva
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<title>Tour Virtual 3D — Inmobiliaria Premium</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- Tipografía elegante -->
<link href="https://fonts.googleapis.com/css2?family=Playfair+Display:wght@500;700&family=Inter:wght@300;400;500&display=swap" rel="stylesheet">
<style>
body {
margin: 0;
font-family: 'Inter', sans-serif;
background-color: #f7f7f7;
color: #333;
}
.tour3d-mockup {
background-color: #fff;
padding: 80px 20px;
text-align: center;
}
.tour3d-header h2 {
font-family: 'Playfair Display', serif;
font-size: 2.8rem;
margin-bottom: 12px;
color: #222;
}
.tour3d-header p {
font-size: 1.1rem;
color: #666;
margin-bottom: 40px;
}
.parallax-container {
max-width: 1100px;
margin: 0 auto;
height: 580px;
overflow: hidden;
border-radius: 18px;
box-shadow: 0 12px 32px rgba(0, 0, 0, 0.1);
perspective: 1000px;
background-color: #eee;
}
.parallax-image {
width: 100%;
height: 100%;
object-fit: cover;
transition: transform 0.2s ease;
transform-origin: center;
will-change: transform;
}
@media (max-width: 768px) {
.tour3d-header h2 {
font-size: 2rem;
}
.parallax-container {
height: 400px;
}
}
</style>
</head>
<body>
<section class="tour3d-mockup">
<div class="tour3d-header">
<h2>Tour Virtual 3D</h2>
<p>Explora la fachada en perspectiva interactiva</p>
</div>
<div class="parallax-container">
<img src="http://realstatebarcelona.com/wp-content/uploads/2025/08/dillon-kydd-2keCPb73aQY-unsplash-scaled.jpg" alt="Fachada de casa" class="parallax-image" />
</div>
</section>
<script>
document.addEventListener("DOMContentLoaded", () => {
const image = document.querySelector('.parallax-image');
const container = document.querySelector('.parallax-container');
if (!image || !container) return;
container.addEventListener('mousemove', (e) => {
const bounds = container.getBoundingClientRect();
const x = (e.clientX - bounds.left) / bounds.width - 0.5;
const y = (e.clientY - bounds.top) / bounds.height - 0.5;
const rotateX = y * -10;
const rotateY = x * 20;
image.style.transform = `scale(1.05) rotateX(${rotateX}deg) rotateY(${rotateY}deg)`;
});
container.addEventListener('mouseleave', () => {
image.style.transform = `scale(1) rotateX(0deg) rotateY(0deg)`;
});
});
</script>
</body>
</html>