限制視窗滾動動畫的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