Détecter le changement de visibilité d'un élément avec JavaScript
Concept et utilisation
La fonction ElViewChange()
permet de détecter le changement de visibilité d'un élément dans la zone d'affichage (viewport).
L'API IntersectionObserver
est utilisée pour observer les changements d'intersection entre l'élément et la zone d'affichage.
Constructeur
ElViewChange()
Retourne un objet détecteur de changement de visibilité d'un élément dans la zone d'affichage.
- Syntaxe
new ElViewChange(element, option);
- Paramètres
element
(Node)Le paramètre
element
de la fonctionElViewChange()
définit l'élément HTML pour lequel un détecteur de visibilité sera créé.option
(Number)Le paramètre
option
de la fonctionElViewChange()
définit le nombre de valeurs du ratio de visibilité de l'élément, que le détecteur de visibilité prendra en compte.
Si cette propriété est omise, la valeur par défaut20
sera utilisée.
- Méthodes de l'instance
detecteur.addListener()
La méthode
addListener()
de la fonctionElViewChange()
ajoute un écouteur au détecteur de changement de visibilité d'un élément.- Syntaxe
detecteur.addListener(ecouteur);
- Paramètre
ecouteur
(Function)Le paramètre
ecouteur
de la méthodeaddListener()
est un écouteur de changement de visibilité d'un élément, qui sera ajouté au détecteur. Il s'agit d'une fonction de rappel, dont l'argument sera le ratio de visibilité d'un élément.
detecteur.removeListener()
La méthode
removeListener()
de la fonctionElViewChange()
supprime un écouteur du détecteur de changement de visibilité d'un élément.- Syntaxe
detecteur.removeListener(ecouteur);
- Paramètre
ecouteur
(Function)Le paramètre
ecouteur
de la méthoderemoveListener()
est un écouteur de changement de visibilité qui sera supprimé du détecteur.
detecteur.observe()
La méthode
observe()
de la fonctionElViewChange()
active le détecteur de changement de visibilité d'un élément.- Syntaxe
detecteur.observe();
- Paramètre
Aucun.
detecteur.unobserve()
La méthode
unobserve()
de la fonctionElViewChange()
désactive le détecteur de changement de visibilité d'un élément.- Syntaxe
detecteur.unobserve();
- Paramètre
Aucun.
Exemple de détection de changement de visibilité d'un élément
var element = document.querySelector("#element");
var ecouteur = function(ratio) {
console.log(ratio);
};
var detecteur = new ElViewChange(element);
detecteur.addListener(ecouteur);
// detecteur.removeListener(ecouteur);
detecteur.observe();
// detecteur.unobserve();
Code source de la fonction
function ElViewChange(x,o){o=Number.parseFloat(o||20).toFixed(1);
var T=this,L=[],O=null,R=0,E=0,V=0,X=!1;T.observe=function(){
if(O===null){O=new IntersectionObserver(function(entries){
entries.forEach(function(entry){for(var i=0,j=L.length;i<j;i++){
L[i](Math.round(entry.intersectionRatio*10000)/100);}});},{
root:null,rootMargin:"0px",threshold:(function(){var a=[];
for(var i=1.0;i<=o;i++){a.push(i/o);}a.push(0.0);return a;})()});
O.observe(x);}};T.unobserve=function(){if(O!==null){O.unobserve();
L=[];}};T.addListener=function(f){L.push(f);};
T.removeListener=function(f){for(var i=0,j=L.length;i<j;i++){
if(L[i]===f){L.splice(i,1);i--;j--;}}};return T;}
Dernière mise à jour le .