[css] 说说sroll-snap-type属性的运用场景有哪些?相关联的属性还有哪些?

使用 sroll-snap-type 优化滚动
根据 CSS Scroll Snap Module Level 1 规范,CSS 新增了一批能够控制滚动的属性,让滚动能够在仅仅通过 CSS 的控制下,得到许多原本需要 JS 脚本介入才能实现的美好交互。

Tips:本文截的一些 Gif 图涉及容器滚动,效果不是很好,可以点进 Demo 里实际感受下。

sroll-snap-type
首先看看 sroll-snap-type 可能算得上是新的滚动规范里面最核心的一个属性样式。

scroll-snap-type:属性定义在滚动容器中的一个临时点(snap point)如何被严格的执行。

光看定义有点难理解,简单而言,这个属性规定了一个容器是否对内部滚动动作进行捕捉,并且规定了如何去处理滚动结束状态。

语法
{
scroll-snap-type: none | [ x | y | block | inline | both ] [ mandatory | proximity ]?
}
举个例子,假设,我们希望一个横向可滚动容器,每次滚动之后,子元素最终的停留位置不是尴尬的被分割,而是完整的呈现在容器内,可以这样写:

<ul><li>1</li><li>2</li><li>3</li>
</ul>ul {scroll-snap-type: x mandatory;
}li {scroll-snap-align: center;
}  


如果是 y 轴方向的滚动也是一样的,只需要简单改一下 scroll-snap-type:

ul {
scroll-snap-type: y mandatory;
}

scroll-snap-type 中的 mandatory 与 proximity
scroll-snap-type 中的另外一个重点就是 mandatory 与 proximity。

mandatory: 通常在 CSS 代码中我们都会使用这个,mandatory 的英文意思是强制性的,表示滚动结束后,滚动停止点一定会强制停在我们指定的地方

proximity: 英文意思是接近、临近、大约,在这个属性中的意思是滚动结束后,滚动停止点可能就是滚动停止的地方,也可能会再进行额外移动,停在我们指定的地方

也就是说,如上指定了 scroll-snap-type: y proximity 的滚动容器,如果不额外设置 scroll-snap-margin/scroll-snap-padding,是有可能停在下面这样尴尬的位置:

scroll-snap-type: both mandatory
当然,还有一种比较特殊的情况是,scroll-snap-type: both mandatory,表示横向与竖向的滚动,都会同时进行捕捉,也是可以的:

scroll-snap-align
使用 scroll-snap-align 可以简单的控制将要聚焦的当前滚动子元素在滚动方向上相对于父容器的对齐方式。

其需要作用在父元素上,可选值有三个:

{
scroll-snap-align: start | center | end;
}
什么意思呢,看看示意图:



scroll-margin / scroll-padding
上述的 scroll-snap-align 很好用,可以控制滚动子元素与父容器的对齐方式。然而可选的值只有三个,有的时候我们希望进行一些更精细的控制时,可以使用 scroll-margin 或者 scroll-padding

其中:

scroll-padding 是作用于滚动父容器,类似于盒子的 padding
scroll-margin 是作用于滚动子元素,每个子元素的 scroll-margin 可以设置为不一样的值,类似于盒子的 margin
举个例子,在竖向滚动下,给滚动父容器添加一个 scroll-padding-top: 30px 等同于给每个子元素添加 ``scroll-margin-top: 30px`:

我们希望滚动子元素在 scroll-snap-align: start 的基础上,与容器顶部的距离为 30px:


个人简介

我是歌谣,欢迎和大家一起交流前后端知识。放弃很容易,
但坚持一定很酷。欢迎大家一起讨论

主目录

与歌谣一起通关前端面试题

[css] 说说sroll-snap-type属性的运用场景有哪些?相关联的属性还有哪些?相关推荐

  1. css元素定位:通过元素的标签或者元素的id、class属性定位

    前言 大部分人在使用selenium定位元素时,用的是xpath元素定位方式,因为xpath元素定位方式基本能解决定位的需求.xpath元素定位方式更直观,更好理解一些. css元素定位方式往往被忽略 ...

  2. [css] css的哪个属性可以把所有元素或其父元素的属性重置呢?

    [css] css的哪个属性可以把所有元素或其父元素的属性重置呢? all:unset 个人简介 我是歌谣,欢迎和大家一起交流前后端知识.放弃很容易, 但坚持一定很酷.欢迎大家一起讨论 主目录 与歌谣 ...

  3. [css] scroll-snap-align属性的应用场景是什么?

    [css] scroll-snap-align属性的应用场景是什么? 滚动一个列表时,控制列表中一个块始终完全在可视区内,如果滚动到一半可以回弹,保持整个块都在可视区. 个人简介 我是歌谣,欢迎和大家 ...

  4. CSS边框、边距、轮廓(边框宽度/颜色/各边/简写属性/圆角边框/内外边距/高度宽度/框模型/轮廓宽度/颜色/属性/偏移)——万字长文|一文搞懂

    目录 CSS边框 CSS 边框属性 CSS 边框样式 实例 CSS 边框宽度 实例 特定边的宽度 实例 CSS 边框颜色 实例 特定边框的颜色 实例 HEX 值 实例 RGB 值 实例 HSL 值 实 ...

  5. css情景动画,css3中的动画属性animation应用场景及编写代码教程

    讲解一下css3中的动画属性animation应用场景及编写代码教程 以下讨论的是和css3 动画 属性 animation 相关的css3中的动画属性animation应用场景及编写代码教程教程文章 ...

  6. Refused to apply style from ‘http://localhost:8080/iconfont.css‘ because its MIME type (‘text/html‘

    Refused to apply style from 'http://localhost:8080/iconfont.css' because its MIME type ('text/html') ...

  7. CSS样式相关知识点(一):样式表、选择器、样式属性

    一.样式表类型 第一种方式:内联/行内样式(不推荐) 直接在html文件的元素标签中写样式 第二种方式:内部样式表(新手练习可用) 将样式编写到head标签中的style标签里,通过CSS的选择器来选 ...

  8. java xsi type_无法使用BPMN 2.0 XSD验证XML与元素类型“conditionExpression”关联的属性“xsi:type”的前缀“xsi”未绑定...

    嗨我在我的应用程序中使用Activiti框架来管理工作流.我为演示目的创建了一个非常基本的流程定义,它工作得非常好. 但我得到了上述错误,当我在过程定义中包含条件表达式获取上述异常. 以下是流程定义无 ...

  9. html5不支持的属性,HTML5 常用语法一览(列举不支持的属性)

    HTML头部标记 标记 描述 HTML5标准 定义页面中所有链接的基准URL 设定显示在浏览器左上方的标题内容 表明该文档是一个可用于检索的网关脚本 不支持 文档本身的元信息,例如查询关键词,有效期等 ...

最新文章

  1. Linux shell脚本判断服务器网络是否可以上网
  2. EditPlus 更新到 v2.31 Build 488(附下载)
  3. torch.randn torch.rand区别
  4. python map lambda 分割字符串_python之lambda、filter、map、reduce的用法说明(基于python2)...
  5. html图片旋转代码_HTML设计一个小程序
  6. python内核_python-在多处理模块中使用所有内核的100%
  7. “无继承”情况下的对象构造
  8. 随笔(3)——智慧医养融合:从智能交互到交互智能
  9. 模块化程序设计(多文件编程)介绍
  10. 解决IE8不能安装支付宝控件问题
  11. java final修饰的数组_Java基于final修饰数据过程解析
  12. java实现视频格式转换
  13. Linux7安装oracle11g报错 Error in invoking target 'agen
  14. 红楼梦中贾母评才子佳人戏--真正看的明白
  15. 曾志伟原创港式奶茶店—喜乐街,台州金清人民路新店开业
  16. 《关于我重装系统后修复VSCode这档事》C++环境配置
  17. 关于input自动过滤特殊字符的简单方法
  18. CSS - Flexbox总结
  19. webpack打包js文件,图片路径错误,没有将图片打包的问题
  20. 学习Vue3 第十三章(实操组件和认识less 和 scoped)

热门文章

  1. ux设计师怎样找同类产品_没有预算? 别找借口。 便宜的UX上的UX 2:让我们开始构建。...
  2. win7 git 添加 ssh key
  3. 解决爬虫中文乱码问题
  4. codevs 1028 花店橱窗布置 (KM)
  5. 解决centos KDE命令提示符和文字不紧贴的问题
  6. 【MySQL】Java对SQL时间类型的操作(获得当前、昨天、前年。。时间)
  7. 程序员的职业素养文摘
  8. 五桌面工具来创建优秀的Windows环境
  9. TreeView 小技巧
  10. Linux 文件区块连续吗,关于Linux文件系统的的简单理解和认识