Javascript 滚动功能的怪异行为
我想要实现的是一个简单的滚动到功能,它总是会滚动到与scrollTop位置相同的点 我认为在这里使用window.scroll将是一个很好的方法,因为我能够读取当前的scrollTop值,因为我担心它不起作用,在某些浏览器上,我无法滚动(IE),在其他浏览器上(Chrome,Firefox),在单击连接到此函数的标记后。我得到了自动滚动的行为,有点向上,然后有点向下 我不想使用scrollTo插件或其他插件,因为它是我页面上唯一具有这种功能的地方Javascript 滚动功能的怪异行为,javascript,jquery,html,Javascript,Jquery,Html,我想要实现的是一个简单的滚动到功能,它总是会滚动到与scrollTop位置相同的点 我认为在这里使用window.scroll将是一个很好的方法,因为我能够读取当前的scrollTop值,因为我担心它不起作用,在某些浏览器上,我无法滚动(IE),在其他浏览器上(Chrome,Firefox),在单击连接到此函数的标记后。我得到了自动滚动的行为,有点向上,然后有点向下 我不想使用scrollTo插件或其他插件,因为它是我页面上唯一具有这种功能的地方 $(window).scroll(functio
$(window).scroll(function () {
var y = $(window).scrollTop();
console.log(y);
var mainBanner = $('header').height();
if (y > 1 && y < mainBanner) {
$('#slideUpHead').click(function(){
$("html, body").animate({ scrollTop: mainBanner - y}, 600);
});
}
else if(y < 1){
$('#slideUpHead').click(function(){
$("html, body").animate({ scrollTop: y + mainBanner}, 600);
});
}
else {
}
});
$(窗口)。滚动(函数(){
变量y=$(窗口).scrollTop();
控制台日志(y);
var mainBanner=$('header').height();
如果(y>1&&y
这是我的第二种方法,部分有效:
myScroll = function (){
var mainBannerH = $('header').height();
var y = $(window).scrollTop();
if (y > 1 && y < mainBannerH) {
$("html, body").animate({ scrollTop: mainBannerH - y}, 600);
}
else if(y < 1){
$("html, body").animate({ scrollTop: y + mainBannerH}, 600);
}
else {
console.log("It's not working properly");
}
};
$('#slideUpHead').click(myScroll);
myScroll=function(){
var mainbanerh=$('header').height();
变量y=$(窗口).scrollTop();
如果(y>1&&y
目前,以下解决方案运行良好,多亏了艾哈迈德,我改变了我的方法,并以稍微不同的方式获得了scrollTop的位置,不是100%确定为什么,但它工作正常
myScrollTo = function (){
var mainBannerH = $('header').height();
var myPos = $('html,body').scrollTop();
if ( myPos > 1 && myPos < mainBannerH) {
$("html, body").animate({ scrollTop: mainBannerH - myPos}, 600);
}
else if(myPos < 1){
$("html, body").animate({ scrollTop: myPos + mainBannerH}, 600);
}
else {
console.log("It's not working properly");
}
};
$('#slideUpHead').click(myScrollTo);
myScrollTo=函数(){
var mainbanerh=$('header').height();
var myPos=$('html,body').scrollTop();
如果(myPos>1&&myPos
您的具有自动滚动行为,先向上一点,然后向下一点
,因为每当窗口触发onscroll
事件时,您会一次又一次地附加不同的单击处理程序。我采用了第二种方法(编辑后文),但它只对y<1部分有效,对于介于1和mainBannerH之间的y,有时会向下滚动一点,有时向上滚动,但只有一次,自动滚动消失了。问题是我在页面加载时只收到一次scrollTop值,我如何重新检查它?找到了解决方案,您能否检查是否所有内容都可以改进?