码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • CSS 滚动捕获 scroll-snap-type


    • scroll-snap-type
      • 语法
      • 实例
        • 捕获轴 y 捕获严格程度 mandatory
        • 捕获轴 y 捕获严格程度 proximity
        • 同理看下捕获轴 x
      • 一些注意事项
      • 兼容性

    scroll-snap-type

    用来指定一个滚动容器(scroll container)是否是滚动捕获容器(scroll snap container)、捕获的严格程度以及在什么方向上执行捕获.

    具体捕获的动画或物理效果不是由 scroll-snap-type 决定, 而是由浏览器决定.

    💡建议先读这个名词介绍

    语法

    scroll-snap-type 的内容由两部分组成, 滚动捕获轴和滚动捕获严格程度

    • 滚动捕获轴:
      • x: 滚动容器仅捕获水平轴上的滚动位置(snap position, 解释参考名词介绍)
      • y: 滚动容器仅捕获垂直轴上的滚动位置.
      • block: 滚动容器仅捕获逻辑块轴上的滚动位置.
      • inline: 滚动容器仅捕获逻辑水平轴上的滚动位置.
      • both: 滚动容器捕获两个轴上的滚动位置, 每个轴上捕获的元素可能不同
    • 滚动捕获严格程度:
      • none: (默认值). 不捕获
      • mandatory: 如果用户没有滚动操作时, 滚动容器必须捕获到一个滚动位置(snap position). 如果存在有效的捕获位置, 滚动容器必须在滚动停止时捕获.
      • proximity: 滚动容器可能会在滚动停止时捕获到一个滚动位置, 这取决于浏览器设定的滚动参数.

    实例

    捕获轴 y 捕获严格程度 mandatory

    <div class="container y-mandatory">
      <div>1div>
      <div>2div>
      <div>3div>
      <div>4div>
    div>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    .container {
      height: 200px;
      width: 300px;
      border: 1px solid #121212;
      overflow: auto;
    }
    .container div {
      height: 100%;
      scroll-snap-align: center;
    }
    .y-mandatory {
      scroll-snap-type: y mandatory;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    先暂停一下看看 CSS, 首先我们要给滚动容器设置 scroll-snap-type: y mandatory; 这样滚动容器就变成了滚动捕获容器, 单单这样还不行因为 scroll-snap-align 的默认值为 none, 这里先设置为 center 有个滚动效果, 后面会详细介绍 scroll-snap-align. 另外设置子元素和父元素高度相同

    你会发现开发者工具能够识别滚动捕获容器, 并出现 scroll-snap 的标志
    在这里插入图片描述

    如果你点一下这个标志, 浏览器就会展开滚动的内容, 并且用蓝色点表示 scroll-snap-align
    在这里插入图片描述

    下面就看看滚动的效果吧, 我们无法在两个子元素之间停住, 当滚动到某个点时, 最终停在哪个元素(或最终捕捉到哪个元素)也是浏览器决定的.

    在这里插入图片描述

    捕获轴 y 捕获严格程度 proximity

    .y-proximity {
      scroll-snap-type: y proximity;
    }
    
    • 1
    • 2
    • 3

    你会看到, 我们可以明确在两个子元素之间停住, 就像定义中说的那样, 当滚动行为停止后, 是否发生捕获是根据浏览器的参数决定的.

    在这里插入图片描述

    同理看下捕获轴 x

    先来捕获严格程度 mandatory

    在这里插入图片描述

    再来捕获严格程度 proximity

    在这里插入图片描述

    一些注意事项

    我们前面展示的内容, 每个子元素都和父元素同高, 假如某个子元素比父元素高呢?

    .first-tall div:first-of-type {
      height: 200%;
      position: relative;
    }
    .first-tall div:first-of-type::before {
      content: '';
      position: absolute;
      left: 0; right: 0; bottom: 0;
      height: 50%;
      outline: 5px dashed black;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    <div class="container first-tall y-mandatory">
      <div>1div>
      <div>2div>
      <div>3div>
      <div>4div>
    div>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    对于内容过长的元素, 滑动到其最底端之前都不会出现捕获.

    在这里插入图片描述

    兼容性

    兼容性不错

    在这里插入图片描述

    谢谢你看到这里😊

  • 相关阅读:
    构造方法、方法重载、全局变量与局部变量
    MFC Windows 程序设计[272]之文件日期例程(附源码)
    LCD12864 Control Sequence &Command Reference
    搞笑短视频如何撰写脚本?分享简单小技巧
    小米/华为怎样找回手机联系人?告别焦虑,2个紧急救援指南
    SpringTask定时任务框架
    java计算机毕业设计汉服服装租赁系统源码+mysql数据库+系统+lw文档+部署
    div+css网页html成品学生作业包含10个html页面——动漫主题海贼王
    GitHub和Gitee的区别以及具体使用
    滚雪球学Java(09-1):Java中的算术运算符,你真的掌握了吗?
  • 原文地址:https://blog.csdn.net/broken_promise/article/details/134369472
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号