Maison >interface Web >js tutoriel >jQuery Keep Element en vue lors du défilement

jQuery Keep Element en vue lors du défilement

Lisa Kudrow
Lisa Kudroworiginal
2025-02-27 01:05:09682parcourir

Cet extrait de code jQuery garde un élément en vue de défiler la page. Une démo montre cet effet sur une annonce latérale droite. Le code est présenté à la fois comme un script autonome et comme un plugin jQuery réutilisable. Enfin, une section FAQ aborde les questions de défilement jQuery communes.

jQuery Keep Element in View When Scrolling

Le code (autonome):

<code class="language-javascript">//keep element in view
(function($) {
    $(document).ready(function() {
        var elementPosTop = $('#jq4u-sidebar-ads').position().top;
        $(window).scroll(function() {
            var wintop = $(window).scrollTop(), docheight = $(document).height(), winheight = $(window).height();
            if (wintop > elementPosTop) {
                $('#jq4u-sidebar-ads').css({ "position": "fixed", "top": "10px" });
            } else {
                $('#jq4u-sidebar-ads').css({ "position": "inherit" });
            }
        });
    });
})(jQuery);</code>

Le code (plugin jQuery):

<code class="language-javascript">/**
 * jQuery keep element in view plugin.
 *
 * @author      Sam Deering
 * @copyright   Copyright (c) 2012 jQuery4u
 * @license     http://jquery4u.com/license/
 * @link        http://jquery4u.com
 * @since       Version 1.0
 * @notes       Plugin only works on scroll down elements.
 */

(function($) {
    $.fn.keepElementInView = function() {
        var elemPosTop = this.position().top;
        $(window).scroll(function() {
            var wintop = $(window).scrollTop(), docheight = $(document).height(), winheight = $(window).height();
            if (wintop > elemPosTop) {
                this.css({ "position": "fixed", "top": "10px" });
            } else {
                this.css({ "position": "inherit" });
            }
        });
        return this;
    };

    $(document).ready(function() {
        $('#jq4u-sidebar-ads').keepElementInView();
    });
})(jQuery);</code>

Questions fréquemment posées (FAQ):

Cette section fournit des réponses concises aux questions courantes sur le défilement de l'élément jQuery, y compris les techniques de défilement animé et instantané, de défilement horizontal, de vérifications de la fenêtre et de défilement déclenché par les bouton. Les exemples de code sont légèrement reformatés pour une meilleure lisibilité.

Q1: Animer le défilement vers l'élément?

<code class="language-javascript">$('html, body').animate({ scrollTop: $("#elementID").offset().top }, 2000);</code>

Q2: Scroll instantané vers l'élément?

<code class="language-javascript">$('html, body').scrollTop($("#elementID").offset().top);</code>

Q3: défilement horizontal vers l'élément?

<code class="language-javascript">$('html, body').animate({ scrollLeft: $("#elementID").offset().left }, 2000);</code>

Q4: Vérifiez si l'élément est dans la fenêtre?

<code class="language-javascript">function isInViewport(element) {
  let elementTop = $(element).offset().top;
  let elementBottom = elementTop + $(element).outerHeight();
  let viewportTop = $(window).scrollTop();
  let viewportBottom = viewportTop + $(window).height();
  return elementBottom > viewportTop && elementTop < viewportBottom;
}</code>

Q5: Faites défiler l'élément sur le bouton cliquer?

<code class="language-javascript">$("#buttonID").click(function() {
  $('html, body').animate({ scrollTop: $("#elementID").offset().top }, 2000);
});</code>

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