」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 如何限制視窗滾動動畫的CSS值限制?

如何限制視窗滾動動畫的CSS值限制?

發佈於2024-11-10
瀏覽:637

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 else 語句,因為這也可能導致衝突。

替代方法

For目標是將導航元素固定在特定滾動位置的場景,請考慮以下方法:

$(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