Maison > interface Web > js tutoriel > Comment puis-je vérifier si les éléments chargés dynamiquement sont visibles après le défilement ?

Comment puis-je vérifier si les éléments chargés dynamiquement sont visibles après le défilement ?

Linda Hamilton
Libérer: 2024-12-20 09:36:09
original
1048 Les gens l'ont consulté

How Can I Check if Dynamically Loaded Elements Are Visible After Scrolling?

Résolution de la visibilité des éléments chargés dynamiquement après le défilement

Énoncé du problème :

Lors du chargement dynamique d'éléments via AJAX, il peut être difficile de déterminer s'ils apparaissent dans la zone visible de la page, surtout si la page nécessite défilement.

Solution :

Pour déterminer la visibilité d'un élément après le défilement, nous pouvons exploiter une fonction JavaScript appelée isScrolledIntoView() :

function isScrolledIntoView(elem) {
    var docViewTop = $(window).scrollTop();
    var docViewBottom = docViewTop + $(window).height();

    var elemTop = $(elem).offset().top;
    var elemBottom = elemTop + $(elem).height();

    return ((elemBottom <= docViewBottom) && (elemTop >= docViewTop));
}
Copier après la connexion

Approche alternative :

Une fonction utilitaire alternative, Utils.isElementInView(), fournit à la fois une option entièrementInView et partiellementInView :

function Utils() {}

Utils.prototype = {
    constructor: Utils,
    isElementInView: function(element, fullyInView) {
        var pageTop = $(window).scrollTop();
        var pageBottom = pageTop + $(window).height();
        var elementTop = $(element).offset().top;
        var elementBottom = elementTop + $(element).height();

        if (fullyInView === true) {
            return ((pageTop < elementTop) && (pageBottom > elementBottom));
        } else {
            return ((elementTop <= pageBottom) && (elementBottom >= pageTop));
        }
    }
};

var Utils = new Utils();
Copier après la connexion

Utilisation :

var isElementInView = Utils.isElementInView($('#flyout-left-container'), false);

if (isElementInView) {
    console.log('in view');
} else {
    console.log('out of view');
}
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal