jQuery window.width 在 Firefox 中不起作用
jQuery window.width doesn't work in Firefox
适用于 Chrome 和 Safari,但不适用于 FF 43.0.2。 Firefox 忽略 'scrollTop': $target.offset().top -100
行并直接滚动到锚点。我对编程还很陌生,所以对代码结构的任何改进也表示赞赏。谢谢!
$('a[href^="#"]').on('click',function(e) {
e.preventDefault();
var target = this.hash;
var $target = $(target);
if ($(window).width() < 769) {
$('html, body').stop().animate({
'scrollTop': $target.offset().top -100
}, 700, 'swing', function () {
window.location.hash = target;
});
// Dropdown Menu Logic
$('#nav-icon').toggleClass('open');
$('#nav-mobile ul').slideToggle();
}
else {
$('html, body').stop().animate({
'scrollTop': $target.offset().top -150
}, 700, 'swing', function () {
window.location.hash = target;
});
// Dropdown Menu Logic
$('#nav-icon').toggleClass('open');
$('#nav-mobile ul').slideToggle();
}
});
代码工作正常,但是当您在动画结束后更改 window.location
时,Firefox "jumps" 到相应的锚点。这实际上是期望的行为。
为避免此问题,请改用 history.pushState
并在不受支持的浏览器上回退到 location.hash
:)
if(history.pushState){
history.pushState(null, null, target);
}else{
location.hash = target;
}
一个例子:http://codepen.io/victmo/pen/dGNvay
干杯
适用于 Chrome 和 Safari,但不适用于 FF 43.0.2。 Firefox 忽略 'scrollTop': $target.offset().top -100
行并直接滚动到锚点。我对编程还很陌生,所以对代码结构的任何改进也表示赞赏。谢谢!
$('a[href^="#"]').on('click',function(e) {
e.preventDefault();
var target = this.hash;
var $target = $(target);
if ($(window).width() < 769) {
$('html, body').stop().animate({
'scrollTop': $target.offset().top -100
}, 700, 'swing', function () {
window.location.hash = target;
});
// Dropdown Menu Logic
$('#nav-icon').toggleClass('open');
$('#nav-mobile ul').slideToggle();
}
else {
$('html, body').stop().animate({
'scrollTop': $target.offset().top -150
}, 700, 'swing', function () {
window.location.hash = target;
});
// Dropdown Menu Logic
$('#nav-icon').toggleClass('open');
$('#nav-mobile ul').slideToggle();
}
});
代码工作正常,但是当您在动画结束后更改 window.location
时,Firefox "jumps" 到相应的锚点。这实际上是期望的行为。
为避免此问题,请改用 history.pushState
并在不受支持的浏览器上回退到 location.hash
:)
if(history.pushState){
history.pushState(null, null, target);
}else{
location.hash = target;
}
一个例子:http://codepen.io/victmo/pen/dGNvay
干杯