Jquery 如何更改滚动条上元素的位置?
我想在滚动的同时更改属性Jquery 如何更改滚动条上元素的位置?,jquery,css,scroll,window,Jquery,Css,Scroll,Window,我想在滚动的同时更改属性top的值。 我不想使用position:fixed。我使用位置:绝对 每次向下滚动时,我都想在框中添加1px 每次向上滚动时,我都想将1px移到框中 怎么做 <div id="box" style="position: absolute"> // content </div> $(document).bind('scroll', function(){ $("#box").css("top", ..... ); }); /
top
的值。
我不想使用position:fixed
。我使用位置:绝对
每次向下滚动时,我都想在框中添加1px
每次向上滚动时,我都想将1px
移到框中
怎么做
<div id="box" style="position: absolute">
// content
</div>
$(document).bind('scroll', function(){
$("#box").css("top", ..... );
});
//内容
$(document).bind('scroll',function(){
$(“#框”).css(“顶部”、…);
});
您可以使用:
$(document).ready(function(){
$("#box").on('scroll', function(){
$(this).css('top',$(document).scrollTop());
});
});
尽管我同意您应该使用位置:fixed
,除非您试图让div在用户滚动页面时“跟随”用户,例如侧边栏或其他东西。您可以这样做
$(window).on('scroll', function(){
change_box_css();
});
function change_box_css(){
//FF
$('#box').bind('DOMMouseScroll', function(e){
if(e.detail > 0) {
//scroll down -> set css top
}else {
//scroll up -> set css top
}
});
//IE, Opera, Safari
$('#box').bind('mousewheel', function(e){
if(e.wheelDelta < 0) {
//scroll down -> set css top
}else {
//scroll up -> set css top
}
});
}
$(窗口).on('scroll',function(){
更改_box_css();
});
函数更改\u框\u css(){
//FF
$('#box').bind('DOMMouseScroll',函数(e){
如果(如详细信息>0){
//向下滚动->设置css顶部
}否则{
//向上滚动->设置css顶部
}
});
//歌剧、狩猎
$('#box').bind('mousewheel',函数(e){
如果(e.车轮增量<0){
//向下滚动->设置css顶部
}否则{
//向上滚动->设置css顶部
}
});
}
现在,您应该根据自己的意愿设置css top,这样您就不想使用position:fixed what-what-what-fact-what-what-you-need(假设您希望无论如何滚动,框都保持在相同的位置),但是,您想通过使用javascript来测量滚动距离并相应地修改“top”值,从而使事情变得过于复杂?。。我不知道你为什么要把你的东西变得不必要的难1.你有没有试着抓住onscroll?只需保存该职位,并与新职位进行比较。@julesanchez你是如何做到的?@steffi:一切都取决于答案1。将侦听器添加到滚动2。使用ScrollTop3获取位置。与scroll的上一个值(如果变量不为null)4进行比较。在全局数据库中保存新位置variable@doniyor是的,我知道。别担心。我只是在等待另一个答案。:)好的,但是如何区分这里向上滚动和向下滚动的区别呢?对于浏览器来说,这是一个非常繁重的方法:(“将处理程序附加到窗口滚动事件是一个非常非常糟糕的主意。”John Resig.看看最佳实践段落:你是对的..但这取决于附加的处理程序做了什么和做了多少..只是设置css并不是什么大问题。。