【问题标题】:Jquery wont animate no matter what in Google Chrome无论如何,Jquery 都不会在 Google Chrome 中设置动画
【发布时间】:2016-07-13 04:46:29
【问题描述】:

我的 jquery 代码获得了“点击”功能,但没有动画,它只是“跳跃”而没有动画。已经为此苦苦挣扎了好几个小时了。

jQuery 代码

$( document ).ready(function() {


// Navigation

  $('a[href^="#"]').on('click',function (e) {
  e.preventDefault();

  var target = this.hash;
  var $target = $(target);

  $('html, body').stop().animate({
      'scrollTop': $target.offset().top
  }, 5, 'swing', function () {
      window.location.hash = target;
         });
     });
  });

HTML 代码

        <!-- Content -->
<div class="slideBg" id="slideBg">
       <!-- NAVBAR -->
       <div class="row header">
        <nav class="navbar navbar-default navbar-fixed-top col-md-8 col-md-offset-2" role="navigation">
          <div class="container-fluid">
            <!-- Brand and toggle get grouped for better mobile display -->
            <div class="navbar-header ">
              <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1" aria-expanded="false">
                <span class="sr-only">Toggle navigation</span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
              </button>
            </div>

            <!-- Collect the nav links, forms, and other content for toggling -->
            <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
              <ul class="nav navbar-nav menu col-xs-12 col-xs-offset-6 ol-md-12 col-md-offset-6 col-lg-12 col-lg-offset-6">
                <li><a  href="#slideBg"><img class="menuImage" src="img/Slide1/Header/menu/mugIcon.png" alt=""><span class="menuItem">AVALEHT</span></a></li>
                <li><a  href="#slide2"><img class="menuImage" src="img/Slide1/Header/menu/menuIcon.png" alt=""><span class="menuItem">MENÜÜ</span></a></li>
                <li><a  href="#slide3"><img class="menuImage" src="img/Slide1/Header/menu/locationIcon.png" alt=""><span class="menuItem">ASUKOHT</span></a></li>
                <li><a class="" href="#slide4"><img class="menuImage" src="img/Slide1/Header/menu/meistIcon.png" alt=""><span class="menuItem">MEIST</span></a></li>
              </ul>
            </div><!-- /.navbar-collapse -->
          </div><!-- /.container-fluid -->
        </nav>

      </div>
      <!-- /NAVBAR -->
      <div class="slide1" id="slide1">
       <img class="s1Logo helper" src="img/Slide1/Logo/logo.png" alt="">
       <div class="nool"></div>
     </div>
   </div>



    <div class="slide2" id="slide2">
         <ul class="sideMenu">
          <li id="ahjukoogid" class="sMenuItem dashed">Ahjukoogid</li>
          <li id="magusadAmpsud" class="sMenuItem dashed">Magusad Ampsud</li>
          <li id="plaadikoogid" class="sMenuItem dashed">Plaadikoogid</li>
          <li id="soolasedAmpsud" class="sMenuItem dashed">Soolased Ampsud</li>
          <li id="tordid" class="sMenuItem dashed">Tordid</li>
          <li id="tordiloigud" class="sMenuItem dashed">Tordilõigud</li>
          <li id="tryhvlid" class="sMenuItem dashed">Trühvlid</li>
          <li id="quiche" class="sMenuItem dashed">Quiche</li>
        </ul>

    <div class="tryhvlid">
      <!-- Nimed ja Hinnad -->
    </div>
    <div class="nool"></div>
  </div>



     <div class="slide3" id="slide3">
    asd
           <div class="nool"></div>
         </div>

           <div class="slide4" id="slide4">
    asd
           <div class="nool"></div>
         </div>

我尝试了多种方法。尝试了不同的方法来制作动画。我还测试了 document.ready 函数是否带有警报运行,它是。我检查了 jquery 是否获得了点击功能,并且确实如此。一切似乎都可以正常工作,但只是动画或滚动不流畅。

【问题讨论】:

  • 控制台没有错误?
  • 尝试将时间设置为更大的 , 5, 'swing' -> , 5000, 'swing' - 在 jQuery 中时间以毫秒为单位
  • 对了,忘记加了。控制台中没有错误。试过了,如果我设置更长的时间,“跳转”到页面将需要更长的时间。
  • 我很不清楚你想做什么?您正在单击链接并尝试对偏移进行动画处理。您希望它如何动画到相同的偏移位置?

标签: javascript jquery google-chrome


【解决方案1】:

这是因为在动画的 duration 参数中,您传递的 5 被解释为 5 毫秒。如果您想要 5 秒的动画,请尝试 5000 之类的内容。

 $('html, body').stop().animate({
      'scrollTop': $target.offset().top
  }, 5000, 'swing', function () {
      window.location.hash = target;
      });
   });
});

编辑

显然这是一个已知问题。将 html/body 的 x-overflow 属性设置为隐藏时,jQuery 的 animate() 在 Chrome 中表现不佳。相反,它最终完全跳过了动画。见this thread for more information

【讨论】:

  • 之前试过,如果我设置更长的时间,“跳转”到页面需要更长的时间。
  • @JoosepSisas 你对你的动画有什么期待?对于您在示例中的内容量,大约 500 毫秒的持续时间应该会产生预期的效果。
  • 我希望它能够顺利完成偏移,但现在它会立即跳跃。无论持续时间多长,它都会跳跃。如果我将持续时间设置得更长,它只会等待 500 毫秒然后跳转。
  • @JoosepSisas 它在这个小提琴中为我流畅滚动 -->jsfiddle.net/xhuuj0he/8
  • @JoosepSisas 请参阅此问题主题,这似乎是您遇到的问题 - github.com/jquery/jquery/issues/2215。不幸的是,我现在无法访问 chrome,但我会尝试在您的 css 中删除 overflow-x: hidden;,看看是否可以解决 Chrome 中的问题。
【解决方案2】:

不确定您希望实现什么。您是否尝试过不使用swing?像这样的:

$( document ).ready(function() {
  // Navigation
  $('a[href^="#"]').on('click',function (e) {
    e.preventDefault();

    var target = $(this).attr('href');
    var $target = $(target);

    $('html, body').animate({
      'scrollTop': $target.offset().top
    }, 'slow');
  });
});

JSFiddle

【讨论】:

  • 没有swing,一样...只是跳到offset
  • 你看过小提琴吗?当你点击一个链接时它会慢慢向下滚动。
  • 这个小提琴滚动对你来说流畅吗? jsfiddle.net/60mb01mz/11 提供的小提琴,是的,它滚动顺畅,但是当我复制粘贴到新文件中并运行它时..又跳了,没有动画。也许是某个地方的冲突?
  • 所以你让它工作了 :) 也许你没有在你的系统上正确加载 jQuery。
  • 好的,我想通了...在 Internet Explorer 和 Edge 上一切正常...在 chrome 上它不起作用,有什么想法吗?
猜你喜欢
  • 1970-01-01
  • 2013-08-30
  • 1970-01-01
  • 2016-04-15
  • 1970-01-01
  • 1970-01-01
  • 2014-02-11
  • 1970-01-01
  • 2020-12-31
相关资源
最近更新 更多