【问题标题】:Opposite/inverted scroll onScroll with jQuery使用 jQuery 的反向/反向滚动 onScroll
【发布时间】:2012-11-01 12:30:23
【问题描述】:

我想制作一个在左侧 div 上正常向下滚动的页面,但在右侧 div 上反向(向上)滚动。 但是,当我在左侧开始滚动时,它不会在右侧开始滚动。 当我滚动时,它只会向左滚动一段长度,然后按预期开始滚动。

http://jsbin.com/orole3/36/edit

我做错了什么?

----------Javascript----------

p>
$(document).ready(function(){
   $('#two').scrollTop($('#two')[0].scrollHeight);
   $('#one').scroll(function(){
     var length = $(this).scrollTop();
     $('#two').scrollTop((two.scrollHeight)-length);
   });
});

----------Html----------------------

<!DOCTYPE html>
<html>
<head>
<script class="jsbin" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<meta charset=utf-8 />
<title>JS Bin</title>
<!--[if IE]>
  <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<style>
  #one, #two{
    float: left;
    overflow: scroll;
    height: 100%;
    width: 50%;
  }
</style>
</head>
<body>
  <div id="one">Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</div>
  <div id="two">Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</div>
</body>
</html>

【问题讨论】:

标签: jquery scroll scrolltop


【解决方案1】:
$(document).ready(function(){

   var height = $('#two')[0].scrollHeight;

   $('#two').scrollTop(height);

   height = $("#two").scrollTop();

   $('#one').scroll(function(){
     var length = $(this).scrollTop();

     console.log(height);
     console.log(length);

     $('#two').scrollTop(height - length);

   });
});

scrollHeight 实际上并不等于scrollTop()

http://jsbin.com/orole3/43/edit

【讨论】:

    【解决方案2】:
    $(document).ready(function(){
       $('#two').scrollTop($('#two').height());
      var offset = $("#two").height() - $('#two').scrollTop();
       $('#one').scroll(function(){
         var length = $("#one").scrollTop();
         $('#two').scrollTop($('#two').innerHeight()-length-offset);
       });
    });
    

    【讨论】:

      猜你喜欢
      • 2011-10-04
      • 2014-01-13
      • 2016-07-01
      • 2015-09-27
      • 1970-01-01
      • 2011-10-10
      • 1970-01-01
      • 2012-12-07
      • 2016-02-18
      相关资源
      最近更新 更多