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并不是什么大问题。。