Volver

Carousel Image (HIDROTECNO)

El componente “Carouse Image” es una herramienta dinámica de presentación visual que permite mostrar una secuencia de imágenes de forma automática o manual en una interfaz gráfica. Este componente suele utilizarse en páginas web, aplicaciones móviles o cualquier otro medio digital donde se desee destacar contenido visual de manera atractiva y llamativa.

Su función principal es la de exhibir imágenes de manera secuencial, permitiendo a los usuarios desplazarse a través de ellas para visualizar diferentes contenidos. Además, puede ofrecer funcionalidades adicionales como transiciones suaves entre imágenes, controles de navegación para avanzar o retroceder en la secuencia, y opciones de personalización para ajustar el estilo y comportamiento del slider según las necesidades específicas del proyecto.

El componente “Carousel Image” es especialmente útil para destacar productos, servicios, noticias, eventos o cualquier otro tipo de contenido visual relevante, proporcionando una experiencia inmersiva y atractiva para los usuarios. Su diseño versátil y su capacidad para mostrar múltiples imágenes de manera eficiente lo convierten en una herramienta fundamental para mejorar la presentación y la usabilidad de interfaces digitales.

Campos Personalizados

Carousel image

carousel-image

Layout/Group

Title

carousel-image__title

Basic/Text

Card

carousel-image-card

Layout/Repeater

Image

carousel-image-card__image

Content/Image

Archivos Usados

1.

carousel-image.php

PHP

loops/carousel-image.php

Loop

<?php

/***
 carousel-image1
 carousel-image2
 
 Title
 carousel-image__title
 */


$class_name = 'carousel-image';
$id = isset($args['id']) ? $args['id'] : '';
$class_card =  $class_name .'-card';
$full_name = $class_name .$id;
$carousel = get_field($full_name);


if ($carousel) : ?>
    <section class=" bg-gray <?php echo $class_name; ?>  transition-scroll ">
        <?php
        while (have_rows($full_name)) : the_row();
            $title = get_sub_field($class_name .'__title'); ?>
            <?php if ($title) : ?>
                <div class="container">
                    <header class="<?php echo $class_name ?>__title co-blue">
                        <h2>
                            <?php echo $title ?>
                        </h2>
                    </header>
                </div>
            <?php endif ?>
            <div class="position-relative container <?php echo $class_name ?>__container-card">
                <div class="js-<?php echo $class_name; ?> container mb-0">
                    <?php while (have_rows($class_name .'-card')) : the_row();
                        get_template_part('cards/'. $class_card, NULL, [
                            'class_name' => $class_name,
                            'full_name' => $full_name,
                        ]);
                    endwhile; ?>
                </div>
                <div class="<?php echo $class_name; ?>__carousel-arrows carousel-arrows">
                    <span class="js_gn_carousel__prev_arrow carousel-arrows__prev">
                        <i class="carousel-arrows__arrow arrow-left">
                            <svg width="24" height="40" viewBox="0 0 24 40" fill="none" xmlns="http://www.w3.org/2000/svg">
                                <path d="M23.34 3.74001L19.8 0.200012L0 20L19.8 39.8L23.34 36.26L7.08 20L23.34 3.74001Z" fill="#276fbf" />
                            </svg>
                        </i>
                    </span>
                    <span class="js_gn_carousel__next_arrow carousel-arrows__next">
                        <i class="carousel-arrows__arrow arrow-right">
                            <svg width="25" height="40" viewBox="0 0 25 40" fill="none" xmlns="http://www.w3.org/2000/svg">
                                <path d="M0.76001 4.24L16.52 20L0.76001 35.76L5.00001 40L25 20L5.00001 0L0.76001 4.24Z" fill="#276fbf" />
                            </svg>
                        </i>
                    </span>
                </div>
            </div>
        <?php endwhile; ?>
    </section>
<?php endif ?>
<?php

 

2.

carousel-image-card.php

PHP

cards/carousel-image-card.php

Card

<?php
extract($args);
$id = isset($args['id']) ? $args['id'] : '';
$class_card = $class_name . '-card'; 
$image = get_sub_field($class_card . '__image'.$id);
?>

<div class=" col-md-4 col-lg-3 px-2 align-items-stretch <?php echo $class_card ?> ">
    <div class="<?php echo $class_card ?>__content px-3 py-5  w-100">
        <?php if ($image): ?>
            <figure class="<?php echo $class_card ?>__image">
                <img class="w-100 <?php echo $class_card ?>__image " src="<?php echo esc_url($image['url']) ?>"
                    alt="<?php echo esc_attr($image['alt']) ?>">
            </figure>
        <?php endif ?>
    </div>
</div>

 

3.

carousel-image.js

JavaScript

frontend/js/components/carousel-image.js

Logic Frontend

import { GnCarousel } from '../libraries/slick'
import { responsiveSliderNumL, BREAKPOINTS } from "../libraries/utils";

const numbersSlider = responsiveSliderNumL (3);

const SELECTORS = {
  component: '.js-carousel-image'
}

const OPTIONS = {
  dots: true,
  infinite: true,
  speed: 300,
  slidesToScroll: numbersSlider.xs,
  slidesToShow: numbersSlider.xs,

  responsive: [
    {
      breakpoint: BREAKPOINTS.get('s'),
      settings: {
        slidesToScroll: numbersSlider.s,
        slidesToShow: numbersSlider.s,
      }
    },
    {
      breakpoint: BREAKPOINTS.get('m'),
      settings: {
        slidesToScroll: numbersSlider.m - 1,
        slidesToShow: numbersSlider.m -1,
      }
    },
    {
      breakpoint: BREAKPOINTS.get('l'),
      settings: {
        slidesToScroll: numbersSlider.l,
        slidesToShow: numbersSlider.l,
      }
    },
  ]
}

const sliderInstance = [...document.querySelectorAll(SELECTORS.component)]

if (sliderInstance) {
  sliderInstance.forEach(slider => {
    const parent = slider.parentElement
    const slickInstance = new GnCarousel(slider, OPTIONS, parent)

    slickInstance.initCarousel()
  })
}

 

4.

_carousel-image-card.scss

SCSS

frontend/scss/theme/card/_carousel-image-card.scss

Styles

.carousel-image-card{
    &__image{
        border-radius: rem(6px);
        @include fluid-aspect(12 12, 'img');
    
    }
}

 

Anexos

Avatar

Autor

Elan Francisco P. Asprilla
Desarrollador Frontend

Artículos relacionados

Habilitar el campo de Archivo en los Webform Drupal

Para habilitar la funcionalidad de carga de...

Banner 50/50 (PALMAS)

¡Bienvenido al componente de banner interactivo...

Banner de alto total (Palmas)

Este banner se caracteriza por mostrar una...

Cómo Crear y Configurar Header y Footer con el Plugin EAU en...

Si trabajas con WordPress y Elementor,...