Precios con Plegado Origami
Tabla de precios innovadora con animaciones de plegado inspiradas en origami y elementos de diseño tipo papel
Diseño Responsivo
Sí
Soporte para Modo Oscuro
No
líneas
509
Compatibilidad del Navegador
No
Vista Previa en Vivo
Interactúa con el componente sin salir de la página.
Componente de Precios con Plegado Origami
Una tabla de precios innovadora con animaciones de plegado inspiradas en origami y elementos de diseño tipo papel para una experiencia de usuario única.
Características
- Diseño Inspirado en Origami: Estética de plegado de papel usando técnicas de clip-path y gradientes CSS
- Animaciones de Plegado: Animaciones sutiles al pasar el cursor que imitan efectos de plegado de papel
- Efectos de Textura de Papel: Sombras suaves y degradados que crean una apariencia tipo papel
- Acentos de Esquina: Esquinas triangulares de origami para estilo de tarjeta distintivo
- Transiciones Suaves: Animaciones elegantes para expandir y contraer elementos
- Diseño Responsivo: Se adapta a todos los tamaños de pantalla con diseño amigable para móviles
Estructura HTML
<div class="origami-pricing-container">
<div class="pricing-header">
<h2 class="pricing-title">/// PRECIOS ORIGAMI ///</h2>
<p class="pricing-subtitle">PLANES PLEGADOS PARA TU ÉXITO</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" data-tier="basico">
<div class="card-header">
<div class="origami-corner tl"></div>
<div class="origami-corner tr"></div>
<div class="origami-corner bl"></div>
<div class="origami-corner br"></div>
<h3 class="plan-name">BÁSICO</h3>
<p class="plan-description">PARA USUARIOS INDIVIDUALES</p>
</div>
<div class="card-price">
<span class="currency">$</span>
<span class="amount" data-monthly="15" data-yearly="11.25">15</span>
<span class="period">/MES</span>
</div>
<ul class="features-list">
<li class="feature-item">
<div class="feature-icon">✓</div>
<span class="feature-text">1 Proyecto</span>
</li>
<li class="feature-item">
<div class="feature-icon">✓</div>
<span class="feature-text">5GB Almacenamiento</span>
</li>
<li class="feature-item">
<div class="feature-icon">✓</div>
<span class="feature-text">Soporte por Email</span>
</li>
<li class="feature-item disabled">
<div class="feature-icon">✗</div>
<span class="feature-text">Acceso API</span>
</li>
<li class="feature-item disabled">
<div class="feature-icon">✗</div>
<span class="feature-text">Dominio Personalizado</span>
</li>
</ul>
<button class="select-button">COMENZAR</button>
</div>
<div class="pricing-card popular" data-tier="pro">
<div class="card-header">
<div class="origami-corner tl"></div>
<div class="origami-corner tr"></div>
<div class="origami-corner bl"></div>
<div class="origami-corner br"></div>
<div class="popular-badge">MÁS POPULAR</div>
<h3 class="plan-name">PRO</h3>
<p class="plan-description">PARA EQUIPOS EN CRECIMIENTO</p>
</div>
<div class="card-price">
<span class="currency">$</span>
<span class="amount" data-monthly="39" data-yearly="29.25">39</span>
<span class="period">/MES</span>
</div>
<ul class="features-list">
<li class="feature-item">
<div class="feature-icon">✓</div>
<span class="feature-text">5 Proyectos</span>
</li>
<li class="feature-item">
<div class="feature-icon">✓</div>
<span class="feature-text">50GB Almacenamiento</span>
</li>
<li class="feature-item">
<div class="feature-icon">✓</div>
<span class="feature-text">Soporte Prioritario</span>
</li>
<li class="feature-item">
<div class="feature-icon">✓</div>
<span class="feature-text">Acceso API</span>
</li>
<li class="feature-item disabled">
<div class="feature-icon">✗</div>
<span class="feature-text">Dominio Personalizado</span>
</li>
</ul>
<button class="select-button">COMENZAR</button>
</div>
<div class="pricing-card" data-tier="empresarial">
<div class="card-header">
<div class="origami-corner tl"></div>
<div class="origami-corner tr"></div>
<div class="origami-corner bl"></div>
<div class="origami-corner br"></div>
<h3 class="plan-name">EMPRESARIAL</h3>
<p class="plan-description">PARA GRANDES ORGANIZACIONES</p>
</div>
<div class="card-price">
<span class="currency">$</span>
<span class="amount" data-monthly="89" data-yearly="66.75">89</span>
<span class="period">/MES</span>
</div>
<ul class="features-list">
<li class="feature-item">
<div class="feature-icon">✓</div>
<span class="feature-text">Proyectos Ilimitados</span>
</li>
<li class="feature-item">
<div class="feature-icon">✓</div>
<span class="feature-text">500GB Almacenamiento</span>
</li>
<li class="feature-item">
<div class="feature-icon">✓</div>
<span class="feature-text">Soporte Dedicado 24/7</span>
</li>
<li class="feature-item">
<div class="feature-icon">✓</div>
<span class="feature-text">Acceso API Completo</span>
</li>
<li class="feature-item">
<div class="feature-icon">✓</div>
<span class="feature-text">Dominio Personalizado</span>
</li>
</ul>
<button class="select-button">CONTACTAR VENTAS</button>
</div>
</div>
</div>Estilos CSS
.origami-pricing-container {
max-width: 1200px;
margin: 2rem auto;
padding: 2rem;
font-family: 'Inter', sans-serif;
background: #f0f4f8;
position: relative;
overflow: hidden;
min-height: 100vh;
}
.origami-pricing-container::before {
content: '';
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background:
linear-gradient(135deg, rgba(255, 182, 193, 0.1) 0%, transparent 30%),
linear-gradient(45deg, rgba(173, 216, 230, 0.1) 0%, transparent 30%);
pointer-events: none;
animation: float 20s ease-in-out infinite;
}
.pricing-header {
text-align: center;
margin-bottom: 3rem;
position: relative;
z-index: 2;
}
.pricing-title {
font-size: 2.5rem;
margin-bottom: 0.5rem;
color: #2d3748;
text-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
letter-spacing: 2px;
}
.pricing-subtitle {
color: #4a5568;
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: #2d3748;
font-weight: 500;
}
.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: #e2e8f0;
border: 1px solid #cbd5e0;
transition: .4s;
border-radius: 34px;
}
.slider:before {
position: absolute;
content: "";
height: 22px;
width: 22px;
left: 4px;
bottom: 3px;
background: #a0aec0;
transition: .4s;
border-radius: 50%;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
}
input:checked + .slider {
background: #e2e8f0;
border-color: #a0aec0;
}
input:checked + .slider:before {
transform: translateX(30px);
background: #4a5568;
}
.discount-badge {
background: linear-gradient(135deg, #667eea 0%, #764ba2 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 6px rgba(0, 0, 0, 0.1);
}
.pricing-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
gap: 2rem;
position: relative;
z-index: 2;
}
.pricing-card {
background: white;
border: 1px solid #e2e8f0;
border-radius: 16px;
overflow: hidden;
transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
position: relative;
box-shadow: 0 4px 6px rgba(0, 0, 0, 0.05);
transform-origin: center;
}
.pricing-card::before {
content: '';
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background:
linear-gradient(135deg, rgba(255, 182, 193, 0.05) 0%, transparent 50%),
linear-gradient(45deg, rgba(173, 216, 230, 0.05) 0%, transparent 50%);
pointer-events: none;
z-index: -1;
border-radius: 16px;
}
.pricing-card:hover {
border-color: #cbd5e0;
box-shadow: 0 10px 25px rgba(0, 0, 0, 0.1);
transform: translateY(-5px) rotate(1deg);
}
.popular {
border-color: #667eea;
box-shadow: 0 10px 25px rgba(102, 126, 234, 0.15);
}
.popular:hover {
box-shadow: 0 15px 35px rgba(102, 126, 234, 0.2);
transform: translateY(-10px) rotate(2deg);
}
.origami-corner {
position: absolute;
width: 30px;
height: 30px;
background:
linear-gradient(135deg, #667eea 0%, #764ba2 100%);
clip-path: polygon(0 0, 100% 0, 0 100%);
}
.tl {
top: 0;
left: 0;
}
.tr {
top: 0;
right: 0;
transform: scaleX(-1);
}
.bl {
bottom: 0;
left: 0;
transform: scaleY(-1);
}
.br {
bottom: 0;
right: 0;
transform: scale(-1);
}
.card-header {
padding: 2rem;
text-align: center;
position: relative;
border-bottom: 1px solid #edf2f7;
}
.popular-badge {
position: absolute;
top: 1rem;
right: 1rem;
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
color: white;
padding: 0.25rem 1rem;
border-radius: 20px;
font-size: 0.7rem;
font-weight: 600;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
}
.plan-name {
font-size: 1.8rem;
margin-bottom: 0.5rem;
color: #2d3748;
font-weight: 700;
}
.plan-description {
color: #718096;
font-size: 0.9rem;
}
.card-price {
text-align: center;
margin: 2rem 0;
position: relative;
}
.currency {
font-size: 1.5rem;
color: #4a5568;
vertical-align: top;
}
.amount {
font-size: 3rem;
font-weight: 700;
color: #2d3748;
text-shadow: 0 2px 4px rgba(0, 0, 0, 0.05);
}
.period {
color: #718096;
font-size: 1rem;
}
.features-list {
list-style: none;
padding: 0 2rem;
margin-bottom: 2rem;
}
.feature-item {
display: flex;
align-items: center;
padding: 0.75rem 0;
border-bottom: 1px solid #edf2f7;
}
.feature-item:last-child {
border-bottom: none;
}
.feature-icon {
width: 24px;
height: 24px;
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
margin-right: 1rem;
font-size: 0.8rem;
font-weight: bold;
flex-shrink: 0;
}
.feature-item:not(.disabled) .feature-icon {
background: #667eea;
color: white;
box-shadow: 0 2px 4px rgba(102, 126, 234, 0.3);
}
.feature-item.disabled .feature-icon {
background: #e2e8f0;
color: #a0aec0;
}
.feature-text {
color: #4a5568;
font-size: 0.95rem;
flex: 1;
}
.feature-item.disabled .feature-text {
color: #a0aec0;
}
.select-button {
width: calc(100% - 4rem);
margin: 0 2rem 2rem;
padding: 1rem;
background: #f7fafc;
border: 1px solid #e2e8f0;
border-radius: 12px;
font-size: 1rem;
font-weight: 600;
color: #4a5568;
cursor: pointer;
transition: all 0.3s ease;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05);
}
.select-button:hover {
background: #edf2f7;
border-color: #cbd5e0;
box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
transform: translateY(-2px);
}
@keyframes float {
0%, 100% {
transform: translateY(0);
}
50% {
transform: translateY(-20px);
}
}
@media (max-width: 768px) {
.origami-pricing-container {
padding: 1rem;
}
.pricing-grid {
grid-template-columns: 1fr;
gap: 1.5rem;
}
.pricing-title {
font-size: 2rem;
}
.plan-name {
font-size: 1.5rem;
}
}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 de papel y efectos de plegado para que coincidan con tu marca
- Actualiza los planes de precios y características para reflejar tus ofertas
El componente de precios con plegado origami presenta texturas tipo papel y animaciones de plegado inspiradas en el arte tradicional japonés del origami. El diseño usa acentos de esquina triangulares y animaciones sutiles al pasar el cursor para crear una experiencia visual única que imita el arte del origami con técnicas web modernas.
HTML
136
líneas
CSS
359
líneas
JavaScript
14
líneas
<div class="origami-pricing-container">
<div class="pricing-header">
<h2 class="pricing-title">/// PRECIOS ORIGAMI ///</h2>
<p class="pricing-subtitle">PLANES PLEGADOS PARA TU ÉXITO</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" data-tier="basico">
<div class="card-header">
<div class="origami-corner tl"></div>
<div class="origami-corner tr"></div>
<div class="origami-corner bl"></div>
<div class="origami-corner br"></div>
<h3 class="plan-name">BÁSICO</h3>
<p class="plan-description">PARA USUARIOS INDIVIDUALES</p>
</div>
<div class="card-price">
<span class="currency">\$</span>
<span class="amount" data-monthly="15" data-yearly="11.25">15</span>
<span class="period">/MES</span>
</div>
<ul class="features-list">
<li class="feature-item">
<div class="feature-icon">✓</div>
<span class="feature-text">1 Proyecto</span>
</li>
<li class="feature-item">
<div class="feature-icon">✓</div>
<span class="feature-text">5GB Almacenamiento</span>
</li>
<li class="feature-item">
<div class="feature-icon">✓</div>
<span class="feature-text">Soporte por Email</span>
</li>
<li class="feature-item disabled">
<div class="feature-icon">✗</div>
<span class="feature-text">Acceso API</span>
</li>
<li class="feature-item disabled">
<div class="feature-icon">✗</div>
<span class="feature-text">Dominio Personalizado</span>
</li>
</ul>
<button class="select-button">COMENZAR</button>
</div>
<div class="pricing-card popular" data-tier="pro">
<div class="card-header">
<div class="origami-corner tl"></div>
<div class="origami-corner tr"></div>
<div class="origami-corner bl"></div>
<div class="origami-corner br"></div>
<div class="popular-badge">MÁS POPULAR</div>
<h3 class="plan-name">PRO</h3>
<p class="plan-description">PARA EQUIPOS EN CRECIMIENTO</p>
</div>
<div class="card-price">
<span class="currency">\$</span>
<span class="amount" data-monthly="39" data-yearly="29.25">39</span>
<span class="period">/MES</span>
</div>
<ul class="features-list">
<li class="feature-item">
<div class="feature-icon">✓</div>
<span class="feature-text">5 Proyectos</span>
</li>
<li class="feature-item">
<div class="feature-icon">✓</div>
<span class="feature-text">50GB Almacenamiento</span>
</li>
<li class="feature-item">
<div class="feature-icon">✓</div>
<span class="feature-text">Soporte Prioritario</span>
</li>
<li class="feature-item">
<div class="feature-icon">✓</div>
<span class="feature-text">Acceso API</span>
</li>
<li class="feature-item disabled">
<div class="feature-icon">✗</div>
<span class="feature-text">Dominio Personalizado</span>
</li>
</ul>
<button class="select-button">COMENZAR</button>
</div>
<div class="pricing-card" data-tier="empresarial">
<div class="card-header">
<div class="origami-corner tl"></div>
<div class="origami-corner tr"></div>
<div class="origami-corner bl"></div>
<div class="origami-corner br"></div>
<h3 class="plan-name">EMPRESARIAL</h3>
<p class="plan-description">PARA GRANDES ORGANIZACIONES</p>
</div>
<div class="card-price">
<span class="currency">\$</span>
<span class="amount" data-monthly="89" data-yearly="66.75">89</span>
<span class="period">/MES</span>
</div>
<ul class="features-list">
<li class="feature-item">
<div class="feature-icon">✓</div>
<span class="feature-text">Proyectos Ilimitados</span>
</li>
<li class="feature-item">
<div class="feature-icon">✓</div>
<span class="feature-text">500GB Almacenamiento</span>
</li>
<li class="feature-item">
<div class="feature-icon">✓</div>
<span class="feature-text">Soporte Dedicado 24/7</span>
</li>
<li class="feature-item">
<div class="feature-icon">✓</div>
<span class="feature-text">Acceso API Completo</span>
</li>
<li class="feature-item">
<div class="feature-icon">✓</div>
<span class="feature-text">Dominio Personalizado</span>
</li>
</ul>
<button class="select-button">CONTACTAR VENTAS</button>
</div>
</div>
</div>