Actualiza automáticamente la navegación de Bootstrap o enumera los componentes del grupo según la posición de desplazamiento para indicar qué enlace está activo actualmente en el viewport.
Cómo funciona el componente Scrollspy
Scrollspy alterna la clase .active en elementos ancla (<a>) cuando el elemento con el id al que hace referencia el href del ancla se desplaza a la vista. Scrollspy se utiliza mejor junto con un componente nav o grupo de lista, pero también funcionará con cualquier elemento ancla en la página actual. Así es como funciona.
Para comenzar, scrollspy requiere dos cosas: una navegación, un grupo de listas o un simple conjunto de enlaces, además de un contenedor desplazable. El contenedor desplazable puede ser <body> o un elemento personalizado con un conjunto height y overflow-y: scroll.
En el contenedor desplazable, agrega data-bs-spy="scroll" y data-bs-target="#navId" donde navId es el id único de la navegación asociada. Si no hay ningún elemento enfocable dentro del elemento, asegúrate de incluir también un tabindex="0" para garantizar el acceso al teclado.
A medida que te desplazas por el contenedor “espiado”, se agrega y elimina una clase .active en los enlaces dentro de la navegación asociada. Los enlaces deben tener objetivos id que se puedan resolver; de lo contrario, se ignorarán. Por ejemplo, un <a href="#home">home</a> debe corresponder a algo en el DOM como <div id="home"></div>
Se ignorarán los elementos de destino que no sean visibles. Consulta la sección Elementos no visibles a continuación.
Ejemplos del componente Scrollspy
Barra de navegación
Desplázate por el área debajo de la barra de navegación y observa cómo cambia la clase activa. Abre el menú desplegable y observa cómo se resaltan también los elementos desplegables.
Navegación anidada
Scrollspy también funciona con .nav anidados. Si un .nav anidado está .active, sus padres también estarán .active. Desplázate por el área junto a la barra de navegación y observa cómo cambia la clase activa.
Grupo de lista
Scrollspy también funciona con .list-group. Desplázate por el área junto al grupo de la lista y observa cómo cambia la clase activa.
Anclajes simples
Scrollspy no se limita a componentes de nav y grupos de listas, por lo que funcionará en cualquier elemento de anclaje <a> en el documento actual. Desplázate por el área y observa cómo cambia la clase .active.
Elementos de destino no visibles
Los elementos de destino que no son visibles se ignorarán y sus elementos de nav correspondientes no recibirán una clase .active .Las instancias de Scrollspy inicializadas en un contenedor no visible ignorarán todos los elementos de destino. Utiliza el método refresh para comprobar si hay elementos observables una vez que el contenedor se vuelva visible.
Uso del componente Scrollspy
Vía atributos de datos
Para agregar fácilmente el comportamiento de desplazamiento de scrollspy a tu barra de navegación superior, agrega data-bs-spy="scroll" al elemento que deseas espiar (generalmente este sería el <body>). Luego agrega el atributo data-bs-target con el id o nombre de clase del elemento principal de cualquier componente Bootstrap .nav.
Vía JavaScript
Opciones
Como las opciones se pueden pasar a través de atributos de datos o JavaScript, puedes agregar un nombre de opción a data-bs-, como en data-bs-animation="{value}". Asegúrate de cambiar el tipo de caso del nombre de la opción de “camelCase” a “kebab-case” al pasar las opciones a través de atributos de datos. Por ejemplo, utiliza data-bs-custom-class="beautifier" en lugar de data-bs-customClass="beautifier".
A partir de Bootstrap 5.2.0, todos los componentes admiten un atributo de datos experimental reservado data-bs-config que puede albergar datos simples de configuración del componente como una cadena JSON. Cuando un elemento tiene los atributos data-bs-config='{"delay":0, "title":123}' y data-bs-title="456", el valor final de title será 456 y los atributos de datos separados sobrescribirán los valores proporcionados en data-bs-config. Además, los atributos de datos existentes pueden albergar valores JSON como data-bs-delay='{"show":0,"hide":150}'.
El objeto de configuración final es el resultado combinado de data-bs-config, data-bs- y js object donde el último valor-clave dado sobrescribe los demás.
Nombre
Tipo
Predeterminado
Descripción
rootMargin
string
0px 0px -25%
Intersection Observer rootMargin válido unidades, al calcular la posición de desplazamiento.
smoothScroll
boolean
false
Permite un desplazamiento suave cuando un usuario hace clic en un enlace que hace referencia a los observables de ScrollSpy.
target
string, DOM element
null
Especifica el elemento para aplicar el complemento Scrollspy.
threshold
array
[0.1, 0.5, 1]
IntersectionObserverumbral de entrada válido al calcular la posición de desplazamiento.
Métodos
Método
Descripción
dispose
Destruye el scrollspy de un elemento. (Elimina los datos almacenados en el elemento DOM)
getInstance
Static método para obtener la instancia de scrollspy asociada con un elemento DOM.
getOrCreateInstance
Static método para obtener la instancia de scrollspy asociada con un elemento DOM, o para crear una nueva en caso de que no haya sido inicializada.
refresh
Al agregar o eliminar elementos en el DOM, necesitarás llamar al método refresh.
Aquí tienes un ejemplo que utiliza el método refresh:
Eventos
Evento
Descripción
activate.bs.scrollspy
Este evento se activa en el elemento de desplazamiento cada vez que scrollspy activa un ancla.