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
Linda Hamiltonoriginal
2024-12-20 09:36:09965parcourir

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

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();

Utilisation :

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

if (isElementInView) {
    console.log('in view');
} else {
    console.log('out of view');
}

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:
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