我正在使用scrollTop函数创建一个视差滚动网站,将scrollTop函数绑定到我网站的不同锚点。
我遇到的问题是Chrome中的滚动变得非常不稳定/不稳定,但在某些方面它在Firefox中很好。
我的代码如下:
$('.recipes').click(function(){
$('html,body').animate({
scrollTop: $(".main1").offset().top
}, 1500);
});
$('.cooking').click(function(){
$('html,body').animate({
scrollTop: $(".main2").offset().top
}, 1500);
});
有没有其他方法可以做到这一点,所以网站滚动不是生涩?也许我可以添加一个缓和功能?
如果我删除了以下功能,那么生涩似乎就会消失,代码是否有问题,或者可能采用不同的方式来编写它?
var startY = $('#container').position().top + $('#container').outerHeight();
$(window).scroll(function(){
checkY();
});
function checkY(){
if( $(window).scrollTop() > startY ){
$('#backToTop, #navigation').fadeIn(600);
}else{
$('#backToTop, #navigation').fadeOut(600);
}
}
checkY();
第二次编辑
$(document).ready(function(){
$('.recipes').click(function(){
$.scrollTo('.main1', 1500)
});
$('.cooking').click(function(){
$.scrollTo('.main2', 1500)
});
$(function () {
$(window).scroll(function () {
if ($(this).scrollTop() > 600) {
$('#backToTop, #navigation').show();
} else {
$('#backToTop, #navigation').hide();
}
});
});
});
答案 0 :(得分:1)
如果您对使用插件的替代方法持开放态度,jQuery scrollTo在使用它时一直非常流畅。
这可以让你做到
$('.recipes').click(function(){
$.scrollTo('.main1', 1500);
});
答案 1 :(得分:1)
而不是在每次页面滚动一点点时触发的.scroll()
上执行淡入淡出功能,而是在.animate()
callback上执行,这只在滚动完成时触发一次。< / p>
$('.recipes').click(function(){
var startY = $('#container').position().top + $('#container').outerHeight();
$('html,body').animate(
{ scrollTop: $(".main1").offset().top },
1500,
function() {
checkY(startY);
}
);
});
$('.cooking').click(function(){
var startY = $('#container').position().top + $('#container').outerHeight();
$('html,body').animate(
{ scrollTop: $(".main2").offset().top },
1500,
function(){
checkY(startY);
}
);
});
OP的原始checkY()
功能:
function checkY(i) {
if( $(window).scrollTop() > i ) {
$('#backToTop, #navigation').fadeIn(600);
} else {
$('#backToTop, #navigation').fadeOut(600);
}
}