如何在 Chrome 中模拟 CSS 滚动捕捉点?
How to emulate CSS Scroll Snap Points in Chrome?
Firefox 39、Safari 9 和 IE11 支持 CSS 滚动捕捉点。 Chrome 具有特征 in development.
是否有可以模拟以下 CSS 样式的 polyfill:
-webkit-scroll-snap-type: mandatory;
-ms-scroll-snap-type: mandatory;
scroll-snap-type: mandatory;
-webkit-scroll-behavior: smooth;
-ms-scroll-behavior: smooth;
scroll-behavior: smooth;
-webkit-scroll-snap-points-y: repeat(600px);
-ms-scroll-snap-points-y: snapInterval(0px, 600px); /* Old syntax */
scroll-snap-points-y: repeat(600px);
overflow-y: auto;
overflow-x: hidden;
直到 Chrome 实施此功能?
我找到了一个 polyfill:https://github.com/zigotica/scrollSnapPointsPolyfill
尚未对其进行广泛测试。
这是另一个 polyfill:https://github.com/ckrack/scrollsnap-polyfill/
还应注意,CSS Snap Points 的规范已更改,不再包括一些要求的属性,但也增加了新的属性。
如果您愿意考虑 vanilla javascript 重新实现 具有一致的跨浏览器行为的此功能,您可以使用
这个图书馆
为什么
使用它而不是本机 css 解决方案的主要原因是它适用于所有现代浏览器,并且具有可自定义的配置以允许在转换和滚动检测中自定义计时。
如何
该库使用原版 javascript 缓动函数重新实现了 css 捕捉功能,并使用容器元素的 scrollTop
/scrollLeft
属性的值和滚动 事件侦听器
例子
import createScrollSnap from 'scroll-snap'
const element = document.getElementById('container')
const { bind, unbind } = createScrollSnap(element, {
snapDestinationX: '0%',
snapDestinationY: '90%',
timeout: 100,
duration: 300,
threshold: 0.2,
snapStop: false,
easing: easeInOutQuad,
}, () => console.log('snapped'))
// remove the listener
// unbind();
// re-instantiate the listener
// bind();
Chrome 69 将包含 the feature。无需解决方法。
坐等吧。请坐等:-)
此刻这些东西的工作非常糟糕,在 Google 上滚动仅适用于 ovrflow:auto 容器 属性 正确 scroll-snap-align 属性 项目和 滚动填充 属性 容器中的每个项目。
[https://webdesign.tutsplus.com/tutorials/how-to-scroll-snap-using-css--cms-30333][1]
Firefox 39、Safari 9 和 IE11 支持 CSS 滚动捕捉点。 Chrome 具有特征 in development.
是否有可以模拟以下 CSS 样式的 polyfill:
-webkit-scroll-snap-type: mandatory;
-ms-scroll-snap-type: mandatory;
scroll-snap-type: mandatory;
-webkit-scroll-behavior: smooth;
-ms-scroll-behavior: smooth;
scroll-behavior: smooth;
-webkit-scroll-snap-points-y: repeat(600px);
-ms-scroll-snap-points-y: snapInterval(0px, 600px); /* Old syntax */
scroll-snap-points-y: repeat(600px);
overflow-y: auto;
overflow-x: hidden;
直到 Chrome 实施此功能?
我找到了一个 polyfill:https://github.com/zigotica/scrollSnapPointsPolyfill
尚未对其进行广泛测试。
这是另一个 polyfill:https://github.com/ckrack/scrollsnap-polyfill/
还应注意,CSS Snap Points 的规范已更改,不再包括一些要求的属性,但也增加了新的属性。
如果您愿意考虑 vanilla javascript 重新实现 具有一致的跨浏览器行为的此功能,您可以使用 这个图书馆
为什么
使用它而不是本机 css 解决方案的主要原因是它适用于所有现代浏览器,并且具有可自定义的配置以允许在转换和滚动检测中自定义计时。
如何
该库使用原版 javascript 缓动函数重新实现了 css 捕捉功能,并使用容器元素的 scrollTop
/scrollLeft
属性的值和滚动 事件侦听器
例子
import createScrollSnap from 'scroll-snap'
const element = document.getElementById('container')
const { bind, unbind } = createScrollSnap(element, {
snapDestinationX: '0%',
snapDestinationY: '90%',
timeout: 100,
duration: 300,
threshold: 0.2,
snapStop: false,
easing: easeInOutQuad,
}, () => console.log('snapped'))
// remove the listener
// unbind();
// re-instantiate the listener
// bind();
Chrome 69 将包含 the feature。无需解决方法。
坐等吧。请坐等:-)
此刻这些东西的工作非常糟糕,在 Google 上滚动仅适用于 ovrflow:auto 容器 属性 正确 scroll-snap-align 属性 项目和 滚动填充 属性 容器中的每个项目。
[https://webdesign.tutsplus.com/tutorials/how-to-scroll-snap-using-css--cms-30333][1]