此代码段在firefox中有效,但在chrome中不起作用,它不会滚动-触发click事件,但甚至不会移到其在anchor标签上的位置。
$(function() {
$(".menu li a").click(function(e) {
var value = $(this).attr('href');
var id = value.substr(1, $(this).attr('href').length);
var px = navigator.userAgent.toLowerCase().indexOf('firefox') > -1 ? 16 : 1;
var target = $("a[name=" + id + "]").offset().top + px;
console.log( $("a[name=" + id + "]"));
$('html, body').stop().animate({
scrollTop: target + 'px'
}, 'slow');
e.preventDefault();
});
})
最佳答案
scrollTop
应该是set with an integer,请尝试不添加+ 'px'
。
例如,这将起作用:
$('html, body').stop().animate({scrollTop: 100}, 'slow');
如果不适合您,则页面上的其他内容将阻止滚动,或者您的body / html的滚动高度不大于浏览器窗口。
您可以通过在控制台中键入
document.body.scrollTop = 200;
来进一步测试Vanilla JavaScript。如果那不能滚动您的页面,那么其他肯定是错误的。也许是Chrome扩展程序?(此外,Firefox UA嗅探看起来很麻烦,但没人问我:))
关于javascript - scrollTop在Chrome中不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38601888/