【问题标题】:Scroll to with custom CSS3 transition滚动到自定义 CSS3 过渡
【发布时间】:2015-06-20 04:15:46
【问题描述】:

我有一段代码使用标准的 jQuery 驱动动画从页面的一个部分平滑地滚动到另一个部分(以避免页面锚点中的页面跳转迷失方向)。这里是:

// Scroll to 
$('.scrollto').click(function() {
   var elementClicked = $(this).attr("href");
   var destination = $(elementClicked).offset().top;
   $("html:not(:animated),body:not(:animated)").animate({ scrollTop: destination}, 800 );
   return false;
});

我想使用自定义 CSS3 转换,而不是使用 JQuery 的动画,如下所示:

.scrollto {
  -webkit-transition-timing-function: cubic-bezier(.77,0,.175,1);
     -moz-transition-timing-function: cubic-bezier(.77,0,.175,1);
      -ms-transition-timing-function: cubic-bezier(.77,0,.175,1);
          transition-timing-function: cubic-bezier(.77,0,.175,1);
}

如何将两者合并在一起并确保使用 CSS3 过渡而不是 jquery?

【问题讨论】:

标签: jquery css scrollto


【解决方案1】:

您不能使用 CSS3 过渡来控制 jQuery 函数。也不能直接使用 CSS 为滚动条设置动画,因为滚动位置不是样式。

有些库通过利用 CSS3 转换 (iScrollJS for example) 来模拟滚动,但要移动本机滚动条,您需要严格使用 JavaScript。

解决方案是使用jQuery Easing library,它允许自定义缓动函数。它还带有内置 CSS3 缓动功能的副本。

【讨论】:

  • 我在这里看到了两次反转的逻辑...... jQuery 将(假设)控制启动转换 - 它的缓动函数已经存在了相当长的时间。
  • 无法在 CSS 中为滚动条设置动画。有一些库利用 CSS3 转换来呈现滚动的外观,但为了使 scrollTop 动画化(根据要求),您需要在 JavaScript 中进行
  • 我必须同意这一点(事实上,为什么不把它放在答案中)。
  • 好主意。我已经进一步澄清了答案。
  • 这很遗憾,但现在你解释它是有道理的。感谢您为尽可能接近我想要的结果所做的努力。
猜你喜欢
  • 2012-06-01
  • 2013-07-07
  • 2011-11-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多