我的网站上有一个scrollTo锚链接脚本,偏移量为-35px,因为导航栏的高度为35px。有时在不同的分辨率(智能手机或平板电脑)上,我需要更改偏移值。如何在此脚本中执行此操作?

$(document).ready(function() {
    $('.scrollTo').click( function() { // Au clic sur un élément
        var page = $(this).attr('href') ; // Page cible
        var speed = 300; // Durée de l'animation (en ms)
        $('html, body').animate( { scrollTop: $(page).offset().top - 35 }, speed ); // Go
        return false;
    });
});

最佳答案

最简单的常规解决方案是将偏移量基于导航栏的高度:

$('.scrollTo').click( function() { // Au clic sur un élément
    var page = $(this).attr('href') ; // Page cible
    var speed = 300; // Durée de l'animation (en ms)
    var height = $(...nav bar selector...).height();
    $('html, body').animate( { scrollTop: $(page).offset().top - height }, speed ); // Go
    //                                                           ^^^^^^
    return false;
});


但是,如果您需要根据媒体查询调整JS,则应使用matchMedia

if (matchMedia('(min-width: 768px)').matches) {
    ...larger screens...
} else {
    ...smaller screens...
}


这样的好处是它将与CSS中使用的媒体查询完全匹配。如果您调用$(window).width(),则可能无法完全匹配媒体查询,具体取决于某些浏览器是否显示了滚动条。

10-05 20:25