Módulos NUXT

Splide

Instalación
CÓDIGO COPIADO !
COPIAR
npm install @splidejs/vue-splide
Plugin: splide.client.js
CÓDIGO COPIADO !
COPIAR
import { defineNuxtPlugin } from '#app';
import '@splidejs/splide/dist/css/splide.min.css';
import { Splide, SplideSlide } from '@splidejs/vue-splide';

export default defineNuxtPlugin((nuxtApp) => {
nuxtApp.vueApp.component('Splide', Splide);
nuxtApp.vueApp.component('SplideSlide', SplideSlide);
});
nuxt.config.ts
CÓDIGO COPIADO !
COPIAR
plugins: ['~/plugins/splide.client.js']

Uso en componente

Template
CÓDIGO COPIADO !
COPIAR
<client-only>
  <div>
    <Splide :options="{
          autoplay: true,
          interval: 3000,       // Intervalo en milisegundos (3 segundos)
          pauseOnHover: false,  // Opcional: No pausar al pasar el mouse
          pauseOnFocus: false,  // Opcional: No pausar al enfocarse
          type: 'loop', // para 'fade' agregar rewind: true
          perPage: 1, 
          gap: '1rem', 
          //height: 'auto', 
          // autoWidth: true,
          start: 0, 
          // rewind: true
      }">
      <SplideSlide>
        <img :src="img_01" alt="Sample 1">
      </SplideSlide>
      <SplideSlide>
        <img :src="img_02" alt="Sample 1">
      </SplideSlide>
      <SplideSlide>
        <img :src="img_03" alt="Sample 1">
      </SplideSlide>          
    </Splide>
  </div>
</client-only>
CSS
CÓDIGO COPIADO !
COPIAR
.splide {
  width: 100%; /* Asegura que no se salga del contenedor */
  max-width: 1200px; /* Ajusta según tu diseño */
  margin: 0 auto; /* Centrar en la pantalla */
}
.splide__slide img {
  display: block;
  width: 100%; /* Ajustar al ancho del slide */
  height: auto; /* Mantener proporción */
  object-fit: cover; /* Opcional para recortar imágenes */
}