Javascript 如何有效地制作滚动脚本?

Javascript 如何有效地制作滚动脚本?,javascript,jquery,scroll,jquery-animate,Javascript,Jquery,Scroll,Jquery Animate,我有div元素在里面,我有一个(ol)元素的列表。我使用jquerynestable进行拖放。请看这里的问题() 我曾经使用查看端口(插件-)在当前视图中获取可见的 我使用了下面的脚本。我无法更高效地滚动页面 脚本在FF中不起作用(滚动不起作用) if($('.dd dragel')。长度>0){ var totalVisibleLi=$('ol#id li:visible')。长度; var liInViewPort=$(“#ol#u id li:在视口中”)。长度; var closestL

我有div元素在里面,我有一个(ol)元素的列表。我使用jquerynestable进行拖放。请看这里的问题()

我曾经使用查看端口(插件-)在当前视图中获取可见的
  • 我使用了下面的脚本。我无法更高效地滚动页面 脚本在FF中不起作用(滚动不起作用)

    if($('.dd dragel')。长度>0){
    var totalVisibleLi=$('ol#id li:visible')。长度;
    var liInViewPort=$(“#ol#u id li:在视口中”)。长度;
    var closestLi=$(this.placeEl).prev('li');
    var items=$('ol#u id li:in viewport');
    var indexOfClosestLi=items.index(closestLi);
    如果(indexOfClosestLi>=(liInViewPort-3)和&(e.pageY<$('div_id').height()){
    $('body')。设置动画({
    scrollTop:$(窗口).scrollTop()+200
    }, 1);
    }
    
    如果(indexOfClosestLi编辑了您的代码。现在滚动也可以在FF中工作

    if ($('.dd-dragel').length > 0) {
      var totalVisibleLi = $('#ol_id li:visible').length;
      var liInViewPort = $('#ol_id li:in-viewport').length;
      var closestLi = $(this.placeEl).prev('li');
      var items = $('#ol_id li:in-viewport');
      var indexOfClosestLi = items.index(closestLi);
    
      if (indexOfClosestLi >= (liInViewPort - 3) && (e.pageY < $('#div_id').height())) {
    
        $('html,body').animate({
          scrollTop: $(window).scrollTop() + 200
        }, 400);
      }
    
      if (indexOfClosestLi <= 3) {
        $('html,body').animate({
          scrollTop: $(window).scrollTop() - 200
        }, 400);
    
      }
    }
    
    if($('.dd dragel')。长度>0){
    var totalVisibleLi=$('ol#id li:visible')。长度;
    var liInViewPort=$(“#ol#u id li:在视口中”)。长度;
    var closestLi=$(this.placeEl).prev('li');
    var items=$('ol#u id li:in viewport');
    var indexOfClosestLi=items.index(closestLi);
    如果(indexOfClosestLi>=(liInViewPort-3)和&(e.pageY<$('div_id').height()){
    $('html,body')。设置动画({
    scrollTop:$(窗口).scrollTop()+200
    }, 400);
    }
    
    如果(indexOfClosestLi首先,对于FF,您需要:`$('body,html')。动画({…})
    。我只需检查您发布的链接,然后使用它回答:
    $('html,body'))`那么你的问题是什么呢?难道你不能开始使用其他试图帮助你发布的代码吗?!Scroll正在工作,但它不像预期的那样平滑。Scroll Up的行为出乎意料我的评论是为了回答你的陈述:如果你可以发布相关代码和JSFIDLE,我会注意更改选择器$('html,body'))它在FF中工作。但这不是一个平滑的滚动。只需添加速度400而不是1@rajini,在将动画速度提高到400之后,我仍然面临着同样的问题。你能告诉我使用CSS3转换吗?或者我的脚本中有错误吗?
    if ($('.dd-dragel').length > 0) {
      var totalVisibleLi = $('#ol_id li:visible').length;
      var liInViewPort = $('#ol_id li:in-viewport').length;
      var closestLi = $(this.placeEl).prev('li');
      var items = $('#ol_id li:in-viewport');
      var indexOfClosestLi = items.index(closestLi);
    
      if (indexOfClosestLi >= (liInViewPort - 3) && (e.pageY < $('#div_id').height())) {
    
        $('html,body').animate({
          scrollTop: $(window).scrollTop() + 200
        }, 400);
      }
    
      if (indexOfClosestLi <= 3) {
        $('html,body').animate({
          scrollTop: $(window).scrollTop() - 200
        }, 400);
    
      }
    }