"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيفية تحديد حدود قيمة CSS للرسوم المتحركة لتمرير النوافذ؟

كيفية تحديد حدود قيمة CSS للرسوم المتحركة لتمرير النوافذ؟

تم النشر بتاريخ 2024-11-10
تصفح:751

How to Limit CSS Value Limits of Window Scrolling Animation?

الحد من حدود قيمة CSS للرسوم المتحركة لتمرير النافذة

في هذا السيناريو، يواجه المستخدم مشكلة حيث ينزلق عنصر الخريطة أثناء التمرير أسفل الصفحة. ومع ذلك، تستمر الخريطة في التمرير إلى أجل غير مسمى، مما يمنع المستخدم من الوصول إلى أسفل الصفحة بسبب وجود تذييل.

الهدف هو الحد من تمرير

الذي يمثل الخريطة عندما يكون يصل إلى أسفل
آخر ذي حجم ديناميكي.

يعمل كود JavaScript المقدم على تحريك الخريطة للتحرك أثناء تمرير المستخدم:

$(function() {

    var $sidebar   = $("#map"),
        $window    = $(window),
        offset     = $sidebar.offset(),
        topPadding = 15;

    $window.scroll(function() {
        if ($window.scrollTop() > offset.top) {
            $sidebar.stop().animate({
                marginTop: $window.scrollTop() - offset.top   topPadding
            });
        }
        else {
            $sidebar.stop().animate({
                marginTop: 0
            });
        }
    });
});

معالجة المشكلة

لا يُنصح باستخدام طريقة animate() داخل وظيفة التمرير لأنها قد تؤدي إلى تعارضات بسبب التغييرات المستمرة في قيمة التمرير، مما يمنع jQuery من تنفيذ رسوم متحركة متكررة. الدالة stop() وحدها قد لا تحل المشكلة بالكامل.

بدلاً من ذلك، يوصى باستخدام طريقة CSS. إليك مثال:

$(window).scroll(function() {
    var scrollVal = $(this).scrollTop();
    if ( scrollVal > offset.top) {
        $sidebar.css({
           'margin-top': (($window.scrollTop() - offset.top)   topPadding)   'px'
                       //added  'px' here to prevent old internet explorer bugs
        });
    } else {
        $sidebar.css({'margin-top':'0px'});
    }
});

بالإضافة إلى ذلك، تجنب استخدام عبارات if المتعددة في حساباتك، حيث يمكن أن يؤدي ذلك أيضًا إلى حدوث تعارضات.

نهج بديل

لـ السيناريوهات التي يكون الهدف فيها هو إصلاح عنصر التنقل في موضع تمرير محدد، فكر في الطريقة التالية:

$(document).ready(function() {
   $(window).scroll(function() {
       var headerH = $('.header').outerHeight(true);
      //this will calculate header's full height, with borders, margins, paddings
       console.log(headerH);
       var scrollVal = $(this).scrollTop();
        if ( scrollVal > headerH ) {
        //when scroll value reach to your selector
            $('#subnav').css({'position':'fixed','top' :'0px'});
        } else {
            $('#subnav').css({'position':'static','top':'0px'});
        }
    });
 });
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3