发布于 2026-01-06 4 阅读
0

超高速轻型滑轨和旋转木马

超高速轻型滑轨和旋转木马

滑块和旋转木马

大多数网站都使用滑块和轮播图来展示各种内容,尤其用于展示图片,例如产品详情等。

它们都需要在移动设备上表现出色——这意味着触控支持、性能和用户体验都必须非常好。

旧世界

解决这个问题的方法是使用某种 JavaScript 库来处理这类操作。大多数这类库都利用 DOM 上的各种事件来检测触摸、移动、拖拽等操作。然后还需要编写大量的代码来处理实际的滑动效果,包括动画和 HTML 元素的移动。

这种方法的结果是产生了一些相对较大的 JavaScript 库,很容易占用 25-100kb 的空间——而且由于 JavaScript 的数量庞大,很难获得非常好的性能,WCAG 支持也有些滞后,设置也相对复杂。

新大陆

幸运的是,浏览器发展迅速,滑动和轮播体验可以使用浏览器原生功能和简单的 div 溢出来处理。

通过利用滚动功能,特别是触摸支持,可以大大提高用户体验,因为所有浏览器、设备及其输入方式都支持滚动。

此外,加载、事件监听器、动画、移动 div 元素等操作也不再需要——浏览器会自动处理这些。

结果——超强的性能和触控支持!

基本方法

  • 创建一个overflow-x设置为自动的div元素
  • display:grid在该 div 元素内,使用grid-* 选项创建一个 CSS 网格,以创建将作为幻灯片的列。
  • 使用滚动捕捉功能scroll-snap-type: x mandatoryscroll-snap-align确保幻灯片能够紧贴滑动容器。


<style>
    .slider {
        overflow-x: auto;
        scroll-snap-type: x mandatory;
        scroll-behavior: smooth;
        scrollbar-width: none;
        display: grid;
        grid: auto / auto-flow max-content;
        grid-auto-rows: 100%;
        grid-auto-columns: 100%;
        grid-auto-flow: column;
        grid-gap: 1rem;
        align-items: center;
        height: 100%;
    }

    .slider>* {
        scroll-snap-align: start;
    }
</style>

<div class="slider">
    <div>Slide 1</div>
    <div>Slide 2</div>
    <div>Slide 3</div>
    <div>Slide 4</div>
</div>


Enter fullscreen mode Exit fullscreen mode

就这样——然后加上一点JS代码来实现导航按钮和指示器,再加一些CSS代码来美化一下,大功告成!

示例滑块

基于这一概念,并将其应用于实际解决方案中,现在它已被封装成一个小型 css 和 javascript 模块。

请访问https://swiffyslider.com/查看示例和文档。

在 GitHub 上可以找到它:https://github.com/dynamicweb/swiffy-slider

或者看看 NPM 的例子:



npm install swiffy-slider


Enter fullscreen mode Exit fullscreen mode
文章来源:https://dev.to/nicped/super-fast-lightweight-sliders-and-carousels-f4e