Tabla de Precios con Efecto Cristal
Tabla de precios moderna con diseño glassmorphism, efectos de desenfoque y acentos vibrantes
Diseño Responsivo
Sí
Soporte para Modo Oscuro
No
líneas
476
Compatibilidad del Navegador
No
Vista Previa en Vivo
Interactúa con el componente sin salir de la página.
Componente de Tabla de Precios con Efecto Cristal
Una tabla de precios moderna con diseño glassmorphism, efectos de desenfoque y acentos vibrantes para una experiencia de usuario premium.
Características
- Diseño Glassmorphism: Efecto de vidrio esmerilado usando desenfoque de fondo y transparencia
- Acentos Vibrantes: Elementos coloridos que destacan contra el fondo desenfocado
- Alternancia de Facturación: Cambia entre precios mensuales y anuales con descuento
- Resaltado de Planes: Tarjetas visualmente distintivas para planes populares y empresariales
- Iconos SVG: Iconos limpios y escalables para indicadores de características
- Diseño Responsive: Se adapta a todos los tamaños de pantalla con diseño amigable para móviles
Estructura HTML
<div class="glassmorphism-pricing-container">
<div class="pricing-header">
<h2 class="pricing-title">Precios Transparentes</h2>
<p class="pricing-subtitle">Planes cristalinos sin tarifas ocultas</p>
</div>
<div class="pricing-toggle">
<span class="toggle-label">Mensual</span>
<label class="switch">
<input type="checkbox" id="billing-toggle">
<span class="slider"></span>
</label>
<span class="toggle-label">Anual</span>
<span class="discount-badge">Ahorra 25%</span>
</div>
<div class="pricing-grid">
<div class="pricing-card">
<div class="card-header">
<h3 class="plan-name">Esencial</h3>
<p class="plan-description">Para principiantes y creadores independientes</p>
</div>
<div class="card-price">
<span class="currency">$</span>
<span class="amount" data-monthly="12" data-yearly="9.60">12</span>
<span class="period">/mes</span>
</div>
<ul class="features-list">
<li class="feature-item">
<svg class="feature-icon" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
<path d="M20 6L9 17l-5-5"></path>
</svg>
<span class="feature-text">3 Proyectos</span>
</li>
<li class="feature-item">
<svg class="feature-icon" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
<path d="M20 6L9 17l-5-5"></path>
</svg>
<span class="feature-text">20GB Almacenamiento</span>
</li>
<li class="feature-item">
<svg class="feature-icon" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
<path d="M20 6L9 17l-5-5"></path>
</svg>
<span class="feature-text">Soporte por Email</span>
</li>
<li class="feature-item disabled">
<svg class="feature-icon" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
<line x1="18" y1="6" x2="6" y2="18"></line>
<line x1="6" y1="6" x2="18" y2="18"></line>
</svg>
<span class="feature-text">Marca Personalizada</span>
</li>
<li class="feature-item disabled">
<svg class="feature-icon" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
<line x1="18" y1="6" x2="6" y2="18"></line>
<line x1="6" y1="6" x2="18" y2="18"></line>
</svg>
<span class="feature-text">Acceso API</span>
</li>
</ul>
<button class="select-button">Prueba Gratis</button>
</div>
<div class="pricing-card popular">
<div class="popular-badge">Mejor Valor</div>
<div class="card-header">
<h3 class="plan-name">Crecimiento</h3>
<p class="plan-description">Perfecto para equipos en crecimiento</p>
</div>
<div class="card-price">
<span class="currency">$</span>
<span class="amount" data-monthly="39" data-yearly="31.20">39</span>
<span class="period">/mes</span>
</div>
<ul class="features-list">
<li class="feature-item">
<svg class="feature-icon" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
<path d="M20 6L9 17l-5-5"></path>
</svg>
<span class="feature-text">Proyectos Ilimitados</span>
</li>
<li class="feature-item">
<svg class="feature-icon" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
<path d="M20 6L9 17l-5-5"></path>
</svg>
<span class="feature-text">200GB Almacenamiento</span>
</li>
<li class="feature-item">
<svg class="feature-icon" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
<path d="M20 6L9 17l-5-5"></path>
</svg>
<span class="feature-text">Soporte Prioritario por Chat</span>
</li>
<li class="feature-item">
<svg class="feature-icon" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
<path d="M20 6L9 17l-5-5"></path>
</svg>
<span class="feature-text">Marca Personalizada</span>
</li>
<li class="feature-item disabled">
<svg class="feature-icon" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
<line x1="18" y1="6" x2="6" y2="18"></line>
<line x1="6" y1="6" x2="18" y2="18"></line>
</svg>
<span class="feature-text">Acceso API</span>
</li>
</ul>
<button class="select-button">Prueba Gratis</button>
</div>
<div class="pricing-card enterprise">
<div class="card-header">
<h3 class="plan-name">Empresarial</h3>
<p class="plan-description">Para organizaciones grandes</p>
</div>
<div class="card-price">
<span class="currency">$</span>
<span class="amount" data-monthly="129" data-yearly="103.20">129</span>
<span class="period">/mes</span>
</div>
<ul class="features-list">
<li class="feature-item">
<svg class="feature-icon" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
<path d="M20 6L9 17l-5-5"></path>
</svg>
<span class="feature-text">Proyectos Ilimitados</span>
</li>
<li class="feature-item">
<svg class="feature-icon" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
<path d="M20 6L9 17l-5-5"></path>
</svg>
<span class="feature-text">2TB Almacenamiento</span>
</li>
<li class="feature-item">
<svg class="feature-icon" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
<path d="M20 6L9 17l-5-5"></path>
</svg>
<span class="feature-text">Soporte Telefónico 24/7</span>
</li>
<li class="feature-item">
<svg class="feature-icon" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
<path d="M20 6L9 17l-5-5"></path>
</svg>
<span class="feature-text">Marca Personalizada</span>
</li>
<li class="feature-item">
<svg class="feature-icon" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
<path d="M20 6L9 17l-5-5"></path>
</svg>
<span class="feature-text">Acceso API Completo</span>
</li>
</ul>
<button class="select-button">Contactar Ventas</button>
</div>
</div>
</div>Estilos CSS
.glassmorphism-pricing-container {
max-width: 1200px;
margin: 2rem auto;
padding: 2rem;
font-family: 'Inter', sans-serif;
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
min-height: 100vh;
position: relative;
overflow: hidden;
}
.glassmorphism-pricing-container::before {
content: '';
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><circle cx="20" cy="20" r="2" fill="%23ffffff" opacity="0.1"/><circle cx="80" cy="80" r="2" fill="%23ffffff" opacity="0.1"/><circle cx="40" cy="60" r="1" fill="%23ffffff" opacity="0.2"/></svg>');
pointer-events: none;
}
.pricing-header {
text-align: center;
margin-bottom: 3rem;
position: relative;
z-index: 2;
}
.pricing-title {
font-size: 2.5rem;
margin-bottom: 0.5rem;
color: white;
text-shadow: 0 2px 10px rgba(0, 0, 0, 0.3);
}
.pricing-subtitle {
color: rgba(255, 255, 255, 0.8);
font-size: 1.1rem;
}
.pricing-toggle {
display: flex;
justify-content: center;
align-items: center;
gap: 1rem;
margin-bottom: 3rem;
position: relative;
z-index: 2;
}
.toggle-label {
font-size: 1rem;
color: rgba(255, 255, 255, 0.9);
font-weight: 500;
text-shadow: 0 1px 2px rgba(0, 0, 0, 0.2);
}
.switch {
position: relative;
display: inline-block;
width: 60px;
height: 30px;
}
.switch input {
opacity: 0;
width: 0;
height: 0;
}
.slider {
position: absolute;
cursor: pointer;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: rgba(255, 255, 255, 0.2);
backdrop-filter: blur(10px);
-webkit-backdrop-filter: blur(10px);
transition: .4s;
border-radius: 34px;
border: 1px solid rgba(255, 255, 255, 0.3);
}
.slider:before {
position: absolute;
content: "";
height: 22px;
width: 22px;
left: 4px;
bottom: 3px;
background: white;
transition: .4s;
border-radius: 50%;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2);
}
input:checked + .slider {
background: rgba(255, 255, 255, 0.3);
}
input:checked + .slider:before {
transform: translateX(30px);
}
.discount-badge {
background: linear-gradient(135deg, #ff6b6b 0%, #ffa502 100%);
color: white;
padding: 0.25rem 0.75rem;
border-radius: 20px;
font-size: 0.8rem;
font-weight: 600;
margin-left: 0.5rem;
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.2);
}
.pricing-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
gap: 2rem;
position: relative;
z-index: 2;
}
.pricing-card {
background: rgba(255, 255, 255, 0.15);
backdrop-filter: blur(12px);
-webkit-backdrop-filter: blur(12px);
border: 1px solid rgba(255, 255, 255, 0.2);
border-radius: 20px;
padding: 2rem;
transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
position: relative;
overflow: hidden;
box-shadow: 0 8px 32px rgba(0, 0, 0, 0.1);
}
.pricing-card:hover {
background: rgba(255, 255, 255, 0.2);
transform: translateY(-10px);
box-shadow: 0 12px 40px rgba(0, 0, 0, 0.2);
}
.popular {
background: rgba(255, 255, 255, 0.25);
border: 1px solid rgba(255, 255, 255, 0.3);
transform: scale(1.05);
box-shadow: 0 12px 40px rgba(0, 0, 0, 0.15);
}
.popular:hover {
background: rgba(255, 255, 255, 0.3);
transform: scale(1.05) translateY(-10px);
box-shadow: 0 16px 48px rgba(0, 0, 0, 0.25);
}
.enterprise {
background: rgba(255, 255, 255, 0.1);
border: 1px solid rgba(255, 255, 255, 0.15);
}
.enterprise:hover {
background: rgba(255, 255, 255, 0.15);
}
.popular-badge {
position: absolute;
top: 1rem;
right: -30px;
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
color: white;
padding: 0.25rem 2rem;
font-size: 0.8rem;
font-weight: 600;
transform: rotate(45deg);
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.2);
}
.card-header {
text-align: center;
margin-bottom: 2rem;
}
.plan-name {
font-size: 1.5rem;
margin-bottom: 0.5rem;
color: white;
font-weight: 700;
text-shadow: 0 1px 3px rgba(0, 0, 0, 0.3);
}
.plan-description {
color: rgba(255, 255, 255, 0.8);
font-size: 0.9rem;
}
.card-price {
text-align: center;
margin-bottom: 2rem;
}
.currency {
font-size: 1.5rem;
color: rgba(255, 255, 255, 0.9);
vertical-align: top;
}
.amount {
font-size: 3rem;
font-weight: 700;
color: white;
text-shadow: 0 2px 6px rgba(0, 0, 0, 0.3);
}
.period {
color: rgba(255, 255, 255, 0.8);
font-size: 1rem;
}
.features-list {
list-style: none;
padding: 0;
margin-bottom: 2rem;
}
.feature-item {
display: flex;
align-items: center;
padding: 0.75rem 0;
border-bottom: 1px solid rgba(255, 255, 255, 0.1);
}
.feature-item:last-child {
border-bottom: none;
}
.feature-icon {
width: 20px;
height: 20px;
margin-right: 1rem;
flex-shrink: 0;
}
.feature-item:not(.disabled) .feature-icon {
color: #4ade80;
}
.feature-item.disabled .feature-icon {
color: #94a3b8;
}
.feature-text {
color: rgba(255, 255, 255, 0.9);
font-size: 0.95rem;
}
.feature-item.disabled .feature-text {
color: rgba(255, 255, 255, 0.6);
}
.select-button {
width: 100%;
padding: 1rem;
background: rgba(255, 255, 255, 0.2);
border: 1px solid rgba(255, 255, 255, 0.3);
border-radius: 12px;
font-size: 1rem;
font-weight: 600;
color: white;
cursor: pointer;
transition: all 0.3s ease;
backdrop-filter: blur(5px);
-webkit-backdrop-filter: blur(5px);
}
.select-button:hover {
background: rgba(255, 255, 255, 0.3);
transform: translateY(-2px);
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.2);
}
@media (max-width: 768px) {
.glassmorphism-pricing-container {
padding: 1rem;
}
.pricing-grid {
grid-template-columns: 1fr;
gap: 1.5rem;
}
.pricing-title {
font-size: 2rem;
}
.popular {
transform: scale(1);
}
.popular:hover {
transform: translateY(-10px);
}
}Funcionalidad JavaScript
document.addEventListener('DOMContentLoaded', function() {
const toggle = document.getElementById('billing-toggle');
const amounts = document.querySelectorAll('.amount');
toggle.addEventListener('change', function() {
amounts.forEach(amount => {
if (this.checked) {
amount.textContent = amount.getAttribute('data-yearly');
} else {
amount.textContent = amount.getAttribute('data-monthly');
}
});
});
});Guía de Implementación
- Copia la estructura HTML en tu proyecto
- Agrega los estilos CSS a tu hoja de estilos
- Incluye el código JavaScript en tu archivo de script
- Personaliza los colores del degradado, intensidad del desenfoque y texto para que coincidan con tu marca
- Actualiza los planes de precios y características para reflejar tus ofertas
La tabla de precios con efecto cristal presenta un efecto de vidrio esmerilado usando desenfoque de fondo y transparencia, creando una apariencia premium y moderna. El diseño incluye acentos vibrantes que destacan contra el fondo desenfocado, con un diseño responsive que funciona en todos los dispositivos.
HTML
157
líneas
CSS
305
líneas
JavaScript
14
líneas
<div class="glassmorphism-pricing-container">
<div class="pricing-header">
<h2 class="pricing-title">Precios Transparentes</h2>
<p class="pricing-subtitle">Planes cristalinos sin tarifas ocultas</p>
</div>
<div class="pricing-toggle">
<span class="toggle-label">Mensual</span>
<label class="switch">
<input type="checkbox" id="billing-toggle">
<span class="slider"></span>
</label>
<span class="toggle-label">Anual</span>
<span class="discount-badge">Ahorra 25%</span>
</div>
<div class="pricing-grid">
<div class="pricing-card">
<div class="card-header">
<h3 class="plan-name">Esencial</h3>
<p class="plan-description">Para principiantes y creadores independientes</p>
</div>
<div class="card-price">
<span class="currency">\$</span>
<span class="amount" data-monthly="12" data-yearly="9.60">12</span>
<span class="period">/mes</span>
</div>
<ul class="features-list">
<li class="feature-item">
<svg class="feature-icon" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
<path d="M20 6L9 17l-5-5"></path>
</svg>
<span class="feature-text">3 Proyectos</span>
</li>
<li class="feature-item">
<svg class="feature-icon" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
<path d="M20 6L9 17l-5-5"></path>
</svg>
<span class="feature-text">20GB Almacenamiento</span>
</li>
<li class="feature-item">
<svg class="feature-icon" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
<path d="M20 6L9 17l-5-5"></path>
</svg>
<span class="feature-text">Soporte por Email</span>
</li>
<li class="feature-item disabled">
<svg class="feature-icon" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
<line x1="18" y1="6" x2="6" y2="18"></line>
<line x1="6" y1="6" x2="18" y2="18"></line>
</svg>
<span class="feature-text">Marca Personalizada</span>
</li>
<li class="feature-item disabled">
<svg class="feature-icon" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
<line x1="18" y1="6" x2="6" y2="18"></line>
<line x1="6" y1="6" x2="18" y2="18"></line>
</svg>
<span class="feature-text">Acceso API</span>
</li>
</ul>
<button class="select-button">Prueba Gratis</button>
</div>
<div class="pricing-card popular">
<div class="popular-badge">Mejor Valor</div>
<div class="card-header">
<h3 class="plan-name">Crecimiento</h3>
<p class="plan-description">Perfecto para equipos en crecimiento</p>
</div>
<div class="card-price">
<span class="currency">\$</span>
<span class="amount" data-monthly="39" data-yearly="31.20">39</span>
<span class="period">/mes</span>
</div>
<ul class="features-list">
<li class="feature-item">
<svg class="feature-icon" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
<path d="M20 6L9 17l-5-5"></path>
</svg>
<span class="feature-text">Proyectos Ilimitados</span>
</li>
<li class="feature-item">
<svg class="feature-icon" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
<path d="M20 6L9 17l-5-5"></path>
</svg>
<span class="feature-text">200GB Almacenamiento</span>
</li>
<li class="feature-item">
<svg class="feature-icon" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
<path d="M20 6L9 17l-5-5"></path>
</svg>
<span class="feature-text">Soporte Prioritario por Chat</span>
</li>
<li class="feature-item">
<svg class="feature-icon" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
<path d="M20 6L9 17l-5-5"></path>
</svg>
<span class="feature-text">Marca Personalizada</span>
</li>
<li class="feature-item disabled">
<svg class="feature-icon" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
<line x1="18" y1="6" x2="6" y2="18"></line>
<line x1="6" y1="6" x2="18" y2="18"></line>
</svg>
<span class="feature-text">Acceso API</span>
</li>
</ul>
<button class="select-button">Prueba Gratis</button>
</div>
<div class="pricing-card enterprise">
<div class="card-header">
<h3 class="plan-name">Empresarial</h3>
<p class="plan-description">Para organizaciones grandes</p>
</div>
<div class="card-price">
<span class="currency">\$</span>
<span class="amount" data-monthly="129" data-yearly="103.20">129</span>
<span class="period">/mes</span>
</div>
<ul class="features-list">
<li class="feature-item">
<svg class="feature-icon" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
<path d="M20 6L9 17l-5-5"></path>
</svg>
<span class="feature-text">Proyectos Ilimitados</span>
</li>
<li class="feature-item">
<svg class="feature-icon" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
<path d="M20 6L9 17l-5-5"></path>
</svg>
<span class="feature-text">2TB Almacenamiento</span>
</li>
<li class="feature-item">
<svg class="feature-icon" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
<path d="M20 6L9 17l-5-5"></path>
</svg>
<span class="feature-text">Soporte Telefónico 24/7</span>
</li>
<li class="feature-item">
<svg class="feature-icon" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
<path d="M20 6L9 17l-5-5"></path>
</svg>
<span class="feature-text">Marca Personalizada</span>
</li>
<li class="feature-item">
<svg class="feature-icon" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
<path d="M20 6L9 17l-5-5"></path>
</svg>
<span class="feature-text">Acceso API Completo</span>
</li>
</ul>
<button class="select-button">Contactar Ventas</button>
</div>
</div>
</div>