我的编程空间,编程开发者的网络收藏夹
学习永远不晚

如何使用CSS Snap优化滚动容器

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

如何使用CSS Snap优化滚动容器

这篇文章主要介绍“如何使用CSS Snap优化滚动容器”,在日常操作中,相信很多人在如何使用CSS Snap优化滚动容器问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何使用CSS Snap优化滚动容器”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

你是否经常希望有一个CSS特性可以轻松创建一个可滚动的容器? CSS scroll snap 可以做到这一点。在早期的前端开发中,我依靠 JS  插件来创建滑块组件。有时,我们需要一种简单的方法来快速将元素制作成可滚动的容器。现在,多亏了 CSSS scroll snap  ,我们可以简单做到这一点。

为什么要使用 CSS Scroll Snap

随着移动设备和平板设备的兴起,我们需要设计和构建可以轻触的组件。以图库组件为例。用户可以轻松地向左或向右滑动以查看更多图像,而不是分层结构。

如何使用CSS Snap优化滚动容器

根据CSS规范,为开发者提供良好控制的滚动体验是引入 CSS scroll snap的主要原因之一。它增强了用户体验,并使其更容易实现滚动体验。

滚动容器的基础知识

要创建一个滚动容器,以下是我们需要做的基本内容

  • 使用 overflow

  • 一种将项目彼此相邻显示(内联)的方法

举个例子:

  1. <div class="section"> 

  2.   <div class="section__item">Item 1</div> 

  3.   <div class="section__item">Item 2</div> 

  4.   <div class="section__item">Item 3</div> 

  5.   <div class="section__item">Item 4</div> 

  6.   <div class="section__item">Item 5</div> 

  7. </div> 


.section {   white-space: nowrap;   overflow-x: auto; }

多年来,使用white-space: nowrap是一种流行的CSS解决方案,用于强制元素保持内联。不过,现在我们基本都使用 Flexbox :

.section {   display: flex;   overflow-x: auto; }

如何使用CSS Snap优化滚动容器

这是创建滚动容器的基本方法。然而,这还不够,这不是一个可用的滚动容器。

滚动容器有什么问题

问题是,与滑动相比,它们并不能提供良好的体验。在触摸屏上滑动手势的主要好处是,我们可以用一根手指水平或垂直滚动。

如何使用CSS Snap优化滚动容器

实际上需要将每个项目移动到它自己的位置。这并不是滑动,这是一种非常糟糕的体验,通过使用CSS scroll snap,我们可以通过简单地定义snap  points来解决这个问题,它将使用户更容易地水平或垂直滚动。

接着,我们来看看如何使用CSS scroll snap。

CSS Scroll Snap 简介

要在容器上使用scroll snap,它的子项目应该内联显示,这可以用我上面解释的方法之一来实现。我选择CSS flexbox:

<div class="section">   <div class="section__item">Item 1</div>   <div class="section__item">Item 2</div>   <div class="section__item">Item 3</div>   <div class="section__item">Item 4</div>   <div class="section__item">Item 5</div> </div>
.section {   display: flex;   overflow-x: auto; }

看了这个,我们需要添加另外两个属性来让scroll snap工作。我们应该在哪里添加它们?

首先,我们需要将scroll-snap-type添加到滚动容器中。在我们的示例中,是.section元素。然后,我们需要向子项(即.section__item)添加scrolln-snap-align。

.section {   display: flex;   overflow-x: auto;   scroll-snap-type: x mandatory; }  .section__item {   scroll-snap-align: start; }

这里你可能想知道x mandatory和start是干嘛用的。不用担心,这是本文的核心,下面会对其进行深入的讲解。

如何使用CSS Snap优化滚动容器

这一刻,我对CSS scroll snap非常兴奋,它使滚动更加自然。现在,让我们深入研究scroll snap 属性。

Scroll Snap Type

根据CSS规范,**scroll-snap-type ** 属性定义在滚动容器中的一个临时点(snap point)如何被严格的执行。

滚动容器的轴线

滚动容器的轴表示滚动方向,它可以是水平或垂直的,x值表示水平滚动,而y表示垂直滚动。

 .section {   display: flex;   overflow-x: auto;   scroll-snap-type: x; }   .section {   height: 250px;   overflow-y: auto;   scroll-snap-type: y; }

如何使用CSS Snap优化滚动容器

Scroll Snap 容器的严格性

我们不仅可以定义Scroll Snap的方向,还可以定义它的严格程度。这可以通过使用scroll-snap-type值的andatory |  proximity来实现。

  • mandatory:如果它当前没有被滚动,这个滚动容器的可视视图将静止在临时点上。意思是当滚动动作结束,如果可能,它会临时在那个点上。如果内容被添加、移动、删除或者重置大小,滚动偏移将被调整为保持静止在临时点上。

mandatory关键字意味着浏览器必须捕捉到每个滚动点。假设roll-snap-align属性有一个start值。这意味着,滚动必须对齐到滚动容器的开始处。

在下图中,每次用户向右滚动时,浏览器都会将项目捕捉到容器的开头。

如何使用CSS Snap优化滚动容器
.section {   display: flex;   overflow-x: auto;   scroll-snap-type: x mandatory; }  .section__item {   scroll-snap-align: start; }

 如何使用CSS Snap优化滚动容器

试着在下面的演示中向右滚动。如果你使用的是手机或平板电脑,可以向右移动滚动条或使用触摸。应该能感受到每个项目是如何从其容器的开始抓取的。

演示地址:https://codepen.io/shadeed/pen/RwGaXKB

但是,如果该值是proximity,则浏览器将完成这项工作,它可能会吸附到定义的点(在我们的例子中start)。注意,proximity  是默认值,但是为了清晰起见,我们这里还是声明一下它。

如何使用CSS Snap优化滚动容器
.section {   display: flex;   overflow-x: auto;      scroll-snap-type: x proximity; }

如何使用CSS Snap优化滚动容器

Scroll Snapping Alignment

滚动容器的子项目需要一个对齐点,它们可以对齐到这个点。我们可以用start, center或end。

为了更容易理解,下面是它的工作原理。

如何使用CSS Snap优化滚动容器

假设我们在滚动容器上有一块磁铁,这将有助于我们控制捕捉点。如果scroll-snap-type是垂直的,则对齐对齐将是垂直的。参见下图:

如何使用CSS Snap优化滚动容器

滚动容器的 start

子项目将吸附到其水平滚动容器的开始处。

如何使用CSS Snap优化滚动容器

滚动容器的 center

子项目将吸附到其滚动容器的中心。

如何使用CSS Snap优化滚动容器

滚动容器的 end

子项将对齐到其滚动容器的末尾。

如何使用CSS Snap优化滚动容器

使用 Scroll-Snap-Stop

有时,我们可能需要一种方法来防止用户在滚动时意外跳过一些重要的项。如果用户滚动太快,就有可能跳过某些项。

.section__item {   scroll-snap-align: start;   scroll-snap-stop: normal; }

无法动太快可能会跳过三个或四个项目,如下所示:

如何使用CSS Snap优化滚动容器

scroll-snap-stop的默认值是normal,要强制滚动捕捉到每个可能的点,应使用always。

.section__item {   scroll-snap-align: start;   scroll-snap-stop: always; }

这样,用户可以一次滚动到一个捕捉点,这种方式有助于避免跳过重要内容。想象每个停止点都有一个停止标志,参见下面的动画:

演示地址:https://codepen.io/shadeed/pen/JjRbXza

Scroll Snap Padding

scroll-padding设置所有侧面的滚动边距,类似于padding属性的工作方式。在下图中,滚动容器的左侧有50px的内边距。结果,子元素将从左侧边缘捕捉到50px

如何使用CSS Snap优化滚动容器

直滚动也是如此。参见下面的示例:

.section {   overflow-y: auto;   scroll-snap-type: y mandatory;   scroll-padding: 50px 0 0 0; }

如何使用CSS Snap优化滚动容器

Scroll Snap Margin

scroll-margin设置滚动容器的子项之间的间距。在向元素添加边距时,滚动将根据边距对齐。参见下图:

如何使用CSS Snap优化滚动容器

.item-2具有scroll-margin-left:  20px。结果,滚动容器将在该项目之前对齐到20px。请注意,当用户再次向右滚动时,.item-3会捕捉到滚动容器的开头,这意味着仅具有边距的元素将受到影响。

CSS Scroll Snap 用例

图片列表

scroll snap 的一个很好的用例是图像列表,使用 scroll snap 提供更好的滚动体验。

如何使用CSS Snap优化滚动容器
.images-list {   display: flex;   overflow-x: auto;   scroll-snap-type: x;   gap: 1rem;   -webkit-overflow-scrolling: touch;  }  .images-list img {   scroll-snap-align: start; }

注意,我使用x作为scroll-snap-type的值。

事例地址:https://codepen.io/shadeed/pen/jOMrxYO

好友清单

滚动捕捉的另一个很好的用例是朋友列表。下面的示例摘自Facebook(一个真实的示例)。

如何使用CSS Snap优化滚动容器
.list {   display: flex;   overflow-x: auto;   scroll-snap-type: x mandatory;   gap: 1rem;   scroll-padding: 48px;   padding-bottom: 32px;   -webkit-overflow-scrolling: touch; }  .list-item {   scroll-snap-align: start; }

请注意,滚动容器的padding-bottom:32px。这样做的目的是提供额外的空间,以便box-shadow可以按预期显示。

如何使用CSS Snap优化滚动容器

头像列表

对于此用例,我感兴趣的是将center作为scroll-snap-align的值。

如何使用CSS Snap优化滚动容器
.list {   display: flex;   overflow-x: auto;   scroll-snap-type: x mandatory;   -webkit-overflow-scrolling: touch; }  .list-item {   scroll-snap-align: center; }

这在一个角色列表中是很有用的,角色在滚动容器的中间是很重要的

如何使用CSS Snap优化滚动容器

演示地址:https://codepen.io/shadeed/pen/KKgMJWa

全屏展示

使用scroll snap也可以用于垂直滚动,全屏展示就是一个很好的例子。

如何使用CSS Snap优化滚动容器
  1. <main> 

  2.   <section class="section section-1"></section> 

  3.   <section class="section section-2"></section> 

  4.   <section class="section section-3"></section> 

  5.   <section class="section section-4"></section> 

  6.   <section class="section section-5"></section> 

  7. </main> 


main {   height: 100vh;   overflow-y: auto;   scroll-snap-type: y mandatory;   -webkit-overflow-scrolling: touch; }  .section {   height: 100vh;   scroll-snap-align: start; }

如何使用CSS Snap优化滚动容器

块和内联

值得一提的是,对于scroll-snap-type,可以使用inline和block逻辑值。参见下面的示例

main {   scroll-snap-type: inline mandatory; }

可读性

使用 CSS scroll snap时,请确保可访问性。这是滚动对齐的一种不好用法,它阻止用户自由滚动内容以读取内容。

.wrapper {   scroll-snap-type: y mandatory; }  h3 {   scroll-snap-align: start; }

如何使用CSS Snap优化滚动容器

如何使用CSS Snap优化滚动容器

到此,关于“如何使用CSS Snap优化滚动容器”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

如何使用CSS Snap优化滚动容器

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

如何使用CSS实现无滚动条滚动

小编给大家分享一下如何使用CSS实现无滚动条滚动,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!第一种:伪对象选择器在webkit内核的浏览器里可以定义滚动条样式。
2023-06-08

如何使用CSS实现网页平滑滚动效果

如何使用CSS实现网页平滑滚动效果在现代网页设计中,实现平滑滚动效果可以为用户带来更好的视觉体验。通过CSS的一些属性和技巧,我们可以轻松地实现平滑滚动效果。本文将介绍如何使用CSS来实现网页的平滑滚动,并附有具体的代码示例。一、使用scr
2023-10-26

如何使用纯CSS实现滚动进度条效果

这篇文章将为大家详细讲解有关如何使用纯CSS实现滚动进度条效果,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。什么是csscss是一种用来表现HTML或XML等文件样式的计算机语言,主要是用来设计网页的样式
2023-06-14

如何使用HTML和CSS实现一个全屏滚动布局

随着互联网的发展,页面设计越来越注重用户体验。全屏滚动布局就是一种常用的设计方式,它能够让页面更加吸引人,并且提供了流畅的用户导航体验。如果你想学习如何使用HTML和CSS实现一个全屏滚动布局,本文将为你提供具体的代码示例和实现步骤。在开始
2023-10-21

如何使用HTML和CSS实现一个水平滚动布局

随着互联网的发展,网页设计也逐渐成为了一门艺术。而水平滚动布局作为一种常见的布局方式,可以为用户提供更好的浏览体验。本文将介绍如何使用HTML和CSS实现一个水平滚动布局,并提供具体的代码示例。一、创建HTML结构首先,我们需要创建一个基本
2023-10-21

如何使用CSS制作滚动条样式的定制效果

近年来,滚动条样式的定制已成为网页设计中常见的需求之一。通过定制滚动条样式,可以提升网页的美观度和用户体验。本文将详细介绍如何使用CSS制作滚动条样式的定制效果,并提供具体的代码示例。一、自定义滚动条的样式要制作滚动条样式的定制效果,我们需
2023-10-21

编程热搜

目录