18 · Show more
Show more
Ver más elementos sin slice() ni JS
Ver más sin slice()
El antipatrón clásico oculta elementos cortando un array con JS (slice(0, n)) y re-renderiza la lista en cada click. El mismo resultado, con CSS puro:
El antipatrón en JS
// Antipatrón: ocultar elementos cortando un array con JS
let visibles = items.slice(0, 3); // estado inicial
visibles = items.slice(0, 6); // al hacer click en "Ver más"
// Cada click re-renderiza la lista entera desde JS
btn.onclick = () => {
visibles = items.slice(0, visibles.length + 3);
render();
};CSS puro con :has()
- 🎧 Amber‑01 — Auriculares
- ⌨️ Teclado mecánico
- 🖱️ Mouse ergonómico
- 📱 Soporte para celular
- 💡 Lámpara LED
- 🧹 Limpiador de teclado
Un <input type="checkbox"> oculto controla la visibilidad. :has(:checked) revela los ítems extra y swapea el label — sin una línea de JavaScript.
Por qué importa
Menos JS enviado, el estado vive en el DOM y el contenido ya está en el HTML (mejor para SEO y lectores de pantalla) en vez de inyectarse por script.
<!-- Sin JS: :has() reacciona al estado del checkbox -->
<input type="checkbox" id="sm-demo" class="sm-toggle">
<ul class="sm-list">
<li>Item 1</li>
<li>Item 2</li>
<li>Item 3</li>
<li class="sm-extra">Item 4</li>
<li class="sm-extra">Item 5</li>
<li class="sm-extra">Item 6</li>
</ul>
<label for="sm-demo" class="sm-btn">
<span class="sm-more">Ver más</span>
<span class="sm-less">Ver menos</span>
</label>Nota honesta sobre soporte
Muchas de estas APIs son recientes y aún no están en todos los navegadores (ver pill de cada sección). La gracia es que todas degradan bien: el carousel sigue scrolleando, el accordion abre/cierra, el textarea funciona — solo sin el "plus" animado.