7 days of unlimited WordPress themes, plugins & graphics - for free!* Unlimited asset downloads! Start 7-Day Free Trial
Advertisement
  1. Web Design
  2. Bootstrap

Cómo convertir los indicadores del carrusel de Bootstrap en barras de progreso animadas

Read Time: 5 mins

Spanish (Español) translation by Carlos (you can also view the original English article)

En este tutorial, trabajaremos con otra interesante extensión de Bootstrap. De manera concreta, crearemos un componente de carrusel de Bootstrap y personalizaremos sus indicadores para que parezcan barras de progreso animadas. De ese modo, tendremos una perspectiva clara de cuándo se cargará la siguiente diapositiva.

Nuestra extensión del carrusel de Bootstrap

Esto es lo que vamos a crear:

1. Crea un carrusel de Bootstrap con indicadores

Suponiendo que ya hemos instalado los archivos de Bootstrap necesarios, primero crearemos un carrusel de imágenes (imágenes de Unsplash) con indicadores, aprovechando el código básico para el componente de carrusel que nos ofrece el framework.

Este es el código necesario

Presta atención a dos cosas:

  • Añadimos el atributo data-bs-pause="false" para evitar pausar el carrusel cuando pasemos el puntero del mouse sobre él.
  • Agregamos un elemento span a cada indicador de carrusel. Eso actuará como nuestra barra de progreso.

2. Personaliza los indicadores de Bootstrap

Como siguiente paso, personalizaremos el estilo de los indicadores predeterminados. Los haremos más grandes y  posicionaremos de manera absoluta su elemento span de arriba. Al principio, los elementos span tendrán un ancho cero. Ese ancho aumentará gradualmente tan pronto como se active la diapositiva correspondiente.

The indicators layout before and after our stylesThe indicators layout before and after our stylesThe indicators layout before and after our styles

Estos son los estilos asociados:

3. Crea un elemento de progreso para cada diapositiva

Cuando se cargue la página o cambie una diapositiva, se activará la función fillCarouselIndicator().

Esta función recibirá como parámetro la diapositiva activa. Al comienzo, consideraremos que la primera diapositiva es la activa.

Adentro, haremos las siguientes cosas:

  1. Ejecutaremos una función cada 50 ms cuyo trabajo será animar gradualmente el ancho del elemento span del indicador activo hasta el 100%.
  2. Al principio, estableceremos el ancho de todos los elemetos span en cero y cancelaremos la ejecución de la llamada programada (si la hubiera). Hacemos esto como precaución en caso de que decidamos cambiar una diapositiva antes del comportamiento de reproducción automática por defecto de Bootstrap (cada 5000 ms). 
Prevent the execution of the scheduled call

Tomando en cuenta todo lo anterior, aquí está el código asociado:

De manera predeterminada, el componente de carrusel cambia la diapositiva activa cada 5000 ms. Para sincronizar este comportamiento con nuestro código, la función dentro del método setInterval() debe ejecutarse cada 50ms. Normalmente, su última llamada es cuando el valor de la variable i se establece en 100 (100 * 50 = 5000). Si, por algún motivo, deseas cambiar el tiempo predefinido necesario para el ciclo entre diapositivas, recuerda, además, modificar el tiempo del intervalo correspondientemente. Por ejemplo, si estableces el tiempo del intervalo del carrusel en 6000, tienes que asignar 60 como el segundo parámetro de nuestro método de intervalo.

¿Precisión?

Si alguna vez has trabajado con temporizadores en JavaScript (setTimeout(), setInterval()), quizá hayas visto que no siempre son precisos. Además, pueden comportarse de manera diferente en distintos navegadores/dispositivos.

En mis pruebas, nuestro ejemplo funcionó bien en navegadores como Chrome y Edge, pero en Firefox, la siguiente diapositiva era mostrada mientras que el indicador activo tenía un ancho de alrededor del 80%.

The issue on Firefox

Por lo tanto, vamos a realizar un arreglo simple para garantizar la compatibilidad con los navegadores. De manera más específica añadiremos tres cosas:

  1. Primero, obtendremos una referencia para nuestro carrusel. Eso nos dará la posibilidad de usar sus métodos API.
  2. Luego, cada vez que una diapositiva cambie, detendremos el carrusel.
  3. Por último, forzaremos la navegación a la siguiente diapositiva tan pronto como el ancho del elemento span activo sea del 100%. Con esta incorporación, el atributo data-bs-pause="false" que agregamos anteriormente no desempeñará ninguna función, así que puedes eliminarlo si lo deseas.

Este es el código JavaScript adicional que se necesita para esta funcionalidad:

En lugar del evento slide.bs.carousel que usamos aquí, también puedes utilizar slid.bs.carousel. En este caso, tienes que personalizar un poco el código.

Conclusión

¡Eso es todo, amigos! En este breve ejercicio, aprendimos cómo crear carruseles de Bootstrap únicos convirtiendo sus indicadores en barras de progreso animadas.

Esperemos que esta técnica haya sido beneficiosa y que planeen incorporarla en uno de sus próximos proyectos.  

Una vez más, esto es lo que creamos:

Si quieres expandir tus conocimientos sobre Bootstrap, asegúrate de examinar los recursos de Bootstrap, en constante evolución, aquí en Tuts+.

Como siempre, ¡muchas gracias por leer!

Plantillas de Bootstrap en Envato Elements

Advertisement
Did you find this post useful?
Want a weekly email summary?
Subscribe below and we’ll send you a weekly email summary of all new Web Design tutorials. Never miss out on learning about the next big thing.
Scroll to top
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.