这个网站的平滑滚动是怎么实现的?

2018-09-20 19:16:32 +08:00
 molvqingtai

网址: https://ricotest.com/en/our-story/

鼠标滑动的时候明显能感觉到惯性,经测试只有在 Chrome 上才有这个效果,所以这是 Chrome 提供的 API ?

3115 次点击
所在节点    前端开发
5 条回复
molvqingtai
2018-09-20 19:18:46 +08:00
在网上找了一圈找到这个属性,但是也不能实现这样的效果
scroll-behavior: smooth;
noe132
2018-09-20 19:41:16 +08:00
可以自己接管鼠标事件来模拟平滑滚动。
可以根据需要模拟不同的滚动速度曲线。
luojianxhlxt
2018-09-20 19:43:22 +08:00
我的 cent 也是 chrome 内核啊
没感觉啥惯性。。。
p1llar
2018-09-20 20:04:40 +08:00
onwheel 事件了解一下,下面是从那个网站 copy 过来的

```
wheelEvent && isChrome && isSmoothScrollActive && (addEvent(wheelEvent, function(event) {
initDone || init();
var target = event.target
, overflowing = overflowingAncestor(target);
if (!overflowing || event.defaultPrevented || isNodeName(activeElement, "embed") || isNodeName(target, "embed") && /\.pdf/i.test(target.src))
return !0;
var deltaX = event.wheelDeltaX || 0
, deltaY = event.wheelDeltaY || 0;
if (deltaX || deltaY || (deltaY = event.wheelDelta || 0),
!options.touchpadSupport && isTouchpad(deltaY))
return !0;
Math.abs(deltaX) > 1.2 && (deltaX *= options.stepSize / 120),
Math.abs(deltaY) > 1.2 && (deltaY *= options.stepSize / 120),
scrollArray(overflowing, -deltaX, -deltaY),
event.preventDefault()
}),
```
molvqingtai
2018-09-20 20:24:36 +08:00
@p1llar 感谢!第一次知道这个事件,代码压缩查关键词找到的?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/491295

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX