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

[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:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

个人简介

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

主目录

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/413526.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

shell脚本一键同时推送代码至github和gitee

自己写的东西&#xff0c;要同时推送多个git地址&#xff0c;解决办法如下: 1.先要初始化你的git 进入自己的项目目录&#xff0c;然后执行 git init cd /app/code/go-study git init 2.执行以下脚本: #!/bin/bash #author Oliver #since 2020-09-03 15:24:31git remote rm …

简单的一个月之设计实现内容1

需求:简单的新闻管理系统,实现简单的增删改查功能 1.数据库表的建立 ID非空,数据类型看着给 2.写实体(entity)News.java 要与数据库中的字段相对应,(id,optimistic我没写,问题不大)1 package com.pay.boss.entity; //封装好的entity包,直接引用2 3 import java.util.Date; …

[css] 你会经常用到伪元素吗?一般都用在哪方面?

[css] 你会经常用到伪元素吗&#xff1f;一般都用在哪方面&#xff1f; 清浮动个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家一起讨论 主目录 与歌谣一起通关前端面试题

分享一个有趣的网站“让我帮你百度一下“

如何解决同事的弱智问题&#xff0c;分享一个有趣的网站 日常工作中&#xff0c;总有些人会问你一些弱智的问题 你只需要三步就可以完美解决: 1.打开这个链接: 让我帮你百度一下 2.输入他的问题、点回车 3.复制结果链接甩到他的脸上_ hahahhahahaha 这样就解决了一切烦恼&a…

base64转图片

关于c#中Base64编码转图片 。个人建议存放文件时&#xff0c;文件名改为文件MD5值。同一个文件的MD5值相同。只要在上传的时候判断一下文件的MD5值。可以避免文件的重复上传哦 //图片的BASE64编码,var img Context.Request["imgbase64"]; #region base64转图片stri…

[css] 用css画出一把刻度尺

[css] 用css画出一把刻度尺 <div classruler><div classcm><div classmm></div><div classmm></div><div classmm></div><div classmm></div><div classmm></div><div classmm></div>&l…

[css] 说说position:sticky有什么应用场景

[css] 说说position:sticky有什么应用场景 吸顶效果个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家一起讨论 主目录 与歌谣一起通关前端面试题

hdu 4738 Caocao's Bridges 求无向图的桥【Tarjan】

<题目链接> 题目大意&#xff1a; 曹操在长江上建立了一些点&#xff0c;点之间有一些边连着。如果这些点构成的无向图变成了连通图&#xff0c;那么曹操就无敌了。周瑜为了防止曹操变得无敌&#xff0c;就打算去摧毁连接曹操的点的桥。但是诸葛亮把所有炸弹都带走了&…

[css] 如何使用css给一个正方形添加一条对角斜线?

[css] 如何使用css给一个正方形添加一条对角斜线&#xff1f; background:linear-gradient(45deg,transparent 49.5%,deeppink 49.5%,deeppink 50.5%,transparent 50.5%);个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。…

SQL Server2014 SP2新增的数据库克隆功能

SQL Server2014 SP2新增的数据库克隆功能 原文:SQL Server2014 SP2新增的数据库克隆功能SQL Server2014 SP2新增的数据库克隆功能 创建测试库 --创建测试数据库 create database testtestuse testtest go --创建表 create table testtest(id int ,name varchar(20)) --插入数据…

[css] 举例说明CSS特性检测的方式有哪些?

[css] 举例说明CSS特性检测的方式有哪些&#xff1f; 原生的 supports 的性能肯定是最好的&#xff0c;而且无需引入外部 javascript &#xff0c;首推这个&#xff0c;但是无奈兼容问题&#xff0c;目前来看不是最好的选择。Modernizr 功能强大&#xff0c;兼容性好&#xff…

DIV布局、浮动

2018-08-17 float属性转载于:https://www.cnblogs.com/twinkle-star/p/9493415.html

工作328:uni-局部过滤器处理数据

toChangeLess(e){console.log(e)/* 过滤数据中的循环请求*/if(e0){return "不循环"}else if(e12345){return "周一到周五循环"}else if(e12345678){return "每日循环"}}运行结果

css ——行级元素与块级元素解析

一 . 先说说二者的本质区别吧&#xff1a; 行级元素是可以和其他元素处于一行&#xff0c;不用必须另起一行。块级元素是每个块级元素都是独自占一行&#xff0c;其后的元素也只能另起一行&#xff0c;并不能两个元素共用一行。 二 .下面看看各自的特点&#xff1a; 块级元素 1…

工作329:uni-数据为空不显示

<u-image v-if"tableData[item]!null" style"display: block;float: left;margin-left: 26rpx;margin-top: 26rpx;" width"120rpx" height"120rpx" :src"tableData[item]"></u-image>

vue.js框架:数组的各种变异方法

今天阅读vue官网的学习教程&#xff0c;看到一个观察数组的变异方法。变异方法&#xff1f;&#xff1f;&#xff1f;excuse me??什么东西&#xff1f;&#xff1f;guide就给了这么一堆东西&#xff1a; 原来这些方法如下&#xff1a; push() pop() shift() uns…

CodeForces - 894E Ralph and Mushrooms (强连通缩点+dp)

题意&#xff1a;一张有向图&#xff0c;每条边上都有wi个蘑菇&#xff0c;第i次经过这条边能够采到w-(i-1)*i/2个蘑菇&#xff0c;直到它为0。问最多能在这张图上采多少个蘑菇。 分析&#xff1a;在一个强连通分量内&#xff0c;边可以无限次地走直到该连通块内蘑菇被采完为止…

工作328:uni-两个页面对象传递

getDetailList(record){console.log(record)uni.navigateTo({url:../formdaliyList/formdaliyList?recordencodeURIComponent(JSON.stringify(record))})},onLoad(e){/* JSON.parse() */let obj JSON.parse(decodeURIComponent(e.record));console.log(obj)},

vue-js 特殊变量$event常识

背景 如果我们要阻止默认事件&#xff0c;在 chrome 等浏览器中&#xff0c;我们可能要写一个&#xff1a; event.preventDefault(); 而在 IE 中&#xff0c;我们则需要写&#xff1a; event.returnValue false; jquery &#xff0c;跨浏览器的实现&#xff0c;我们统一只…

七、线性表的链式存储结构

1、问题引入 开发数组类模板的原因在于&#xff1a;在创建基于顺序存储结构的线性表时&#xff0c;发现这样的线性表可能被误用&#xff0c;因为重载了数组访问操作符&#xff0c;使用时跟数组类似&#xff0c;但是线性表和数组有很大的区别&#xff0c;所以激发了新的需求&…