Volver a inicio

Show More Content

Componente web personalizado para mostrar contenido colapsable con funcionalidad "mostrar más" / "mostrar menos", ideal para textos largos, descripciones de productos o cualquier contenido que requiera ser expandible.

Contenido expandible
Personalizable
Responsive

Ejemplos de uso

Descripción de producto básica

Descripción del producto

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam in est at nulla scelerisque scelerisque. Vivamus feugiat metus eu orci tincidunt, non fringilla quam sagittis. Quisque feugiat diam nec diam faucibus imperdiet. Sed vestibulum orci vel ligula tincidunt, a bibendum erat posuere. Sed in lacus vel justo consectetur lacinia. Nulla facilisi. Phasellus ac sapien vel massa pulvinar tempus.

Proin consequat turpis vel nisl congue, vel dignissim est volutpat. Mauris vel nisi at justo fermentum bibendum. Fusce non arcu at justo malesuada fermentum. Curabitur ultrices ante vel ex tincidunt, a efficitur lectus ultrices. Mauris euismod sapien vel enim malesuada, non fringilla mi tempus.

Código HTML

<!-- Importar el componente -->
<script src="show-more-content/index.js"></script>
<link rel="stylesheet" href="show-more-content/index.css">

<!-- Implementación básica -->
<show-more-content>
  <div data-collapsable>
    <h3>Descripción del producto</h3>
    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit...</p>
    <p>Proin consequat turpis vel nisl congue, vel dignissim...</p>
  </div>
  <button type="button" hidden data-toggle-button 
          data-label-not-collapsed='Leer menos' 
          data-label-collapsed='Leer más'>Leer más</button>
</show-more-content>

CSS

/* Estilo personalizado */
.long-text [data-collapsable] {
  --max-height: 100px;
}

.long-text button[data-toggle-button] {
  color: #2196F3;
  background: none;
  border: none;
  font-weight: bold;
  cursor: pointer;
}

Lista de características con altura personalizada

Características

  • Material: Aluminio de alta resistencia
  • Dimensiones: 15 x 20 x 5 cm
  • Peso: 350g
  • Batería: 5000mAh, hasta 10 horas de uso
  • Conectividad: Bluetooth 5.0, WiFi 6
  • Memoria: 8GB RAM, 128GB almacenamiento
  • Pantalla: 6.5" OLED, 120Hz
  • Resistencia: IP68 (agua y polvo)
  • Sistema operativo: Android 13
  • Cámara: 48MP principal, 12MP ultra gran angular
  • Carga: USB-C, carga rápida 65W

Código HTML

<show-more-content class="product-features">
  <div data-collapsable>
    <h3>Características</h3>
    <ul>
      <li><strong>Material:</strong> Aluminio de alta resistencia</li>
      <li><strong>Dimensiones:</strong> 15 x 20 x 5 cm</li>
      <li><strong>Peso:</strong> 350g</li>
      <!-- Más características... -->
    </ul>
  </div>
  <button type="button" hidden data-toggle-button 
          data-label-not-collapsed='Ver menos características' 
          data-label-collapsed='Ver todas las características'>
    Ver todas las características
  </button>
</show-more-content>

CSS

.product-features [data-collapsable] {
  --max-height: 150px;
}

.product-features button[data-toggle-button] {
  color: #0066cc;
  font-weight: bold;
  border: none;
  background: transparent;
  cursor: pointer;
}

Reseñas de usuarios con expansión inicial

Opiniones de clientes

★★★★★

Excelente producto

Lo compré hace un mes y funciona perfectamente. La batería dura todo el día incluso con uso intensivo. Recomendado.

★★★★☆

Muy buena relación calidad-precio

El producto cumple con lo prometido. Me gusta el diseño y la calidad de construcción. Lo único que mejoraría es el tiempo de carga.

★★★★★

Increíble

Superó mis expectativas. Funciona a la perfección y la entrega fue muy rápida.

★★★☆☆

Buen producto, pero mejorable

Funciona bien, pero esperaba un poco más de rendimiento. El servicio al cliente fue excelente cuando tuve algunas dudas sobre su uso.

Código HTML

<show-more-content class="user-reviews" data-initial-expanded>
  <div data-collapsable>
    <h3>Opiniones de clientes</h3>
    <div class="review">
      <div class="stars">★★★★★</div>
      <h4>Excelente producto</h4>
      <p>Lo compré hace un mes y funciona perfectamente...</p>
    </div>
    <!-- Más reseñas... -->
  </div>
  <button type="button" hidden data-toggle-button 
          data-label-not-collapsed='Mostrar menos opiniones' 
          data-label-collapsed='Mostrar todas las opiniones'>
    Mostrar todas las opiniones
  </button>
</show-more-content>

CSS

.user-reviews [data-collapsable] {
  --max-height: 200px;
}

.user-reviews [data-collapsable].collapsed {
  mask-image: linear-gradient(to top, transparent, rgb(0,0,0) 80%);
}

.user-reviews button[data-toggle-button] {
  padding: 8px 16px;
  border-radius: 20px;
  background-color: #f0f0f0;
  border: 1px solid #ddd;
  margin-top: 10px;
}

Contenido con estilos avanzados

Términos y condiciones

Al utilizar este componente, aceptas los siguientes términos y condiciones:

  1. El componente se proporciona "tal cual", sin garantías de ningún tipo.
  2. No se permite la redistribución del código sin la debida atribución al autor original.
  3. Las modificaciones están permitidas siempre que se mantenga la atribución original.
  4. El autor no será responsable por ningún daño derivado del uso de este componente.
  5. Este componente puede ser utilizado en proyectos personales y comerciales.
  6. El soporte técnico se proporciona a discreción del autor.
  7. Las actualizaciones se publicarán periódicamente en el repositorio oficial.

Código HTML

<show-more-content class="styled-content">
  <div data-collapsable>
    <h3>Términos y condiciones</h3>
    <p>Al utilizar este componente, aceptas los siguientes términos...</p>
    <ol>
      <li>El componente se proporciona "tal cual", sin garantías...</li>
      <!-- Más términos... -->
    </ol>
  </div>
  <button type="button" hidden data-toggle-button 
          data-label-not-collapsed='Ocultar términos completos' 
          data-label-collapsed='Leer términos completos'>
    Leer términos completos
  </button>
</show-more-content>

CSS

.styled-content [data-collapsable] {
  --max-height: 100px;
  background-color: rgba(0, 0, 0, 0.05);
  padding: 15px;
  border-radius: 8px;
}

.styled-content [data-collapsable].collapsed {
  mask-image: linear-gradient(
    to top, 
    transparent 0%, 
    rgba(0, 0, 0, 0.8) 70%, 
    rgb(0, 0, 0) 100%
  );
}

.styled-content button[data-toggle-button] {
  background-color: #4CAF50;
  color: white;
  border: none;
  padding: 8px 16px;
  border-radius: 4px;
  margin-top: 10px;
  cursor: pointer;
  transition: background-color 0.3s;
}

.styled-content button[data-toggle-button]:hover {
  background-color: #388E3C;
}