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
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
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
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.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');
}
}