当前位置: 首页 > article >正文

CSS滚动捕获 scroll-snap-align

CSS滚动捕获 scroll-snap-align

看到 align, 就条件反射想到对齐方式, 嗯猜对了. 不过要先看一下若干名词介绍

scroll-snap-align 指定了盒子的 snap position, 即盒子 snap area 和滚动容器的 snapport 的对齐方式.

这个属性是定义在滚动元素上, 而不是滚动容器上

语法

这个属性可以指定两个值, 分别表示 y(块方向) 轴和 x(内联方向) 轴的对齐. 如果只指定一个值, 那么第二个值保持相同.

  • none: 默认值, 无滚动捕获行为.

  • start: 盒子的 snap position 的顶部与 snapport 顶部对齐

    • 在这里插入图片描述
  • end: 盒子的 snap position 的尾部与 snapport 尾部对齐

    • 在这里插入图片描述
  • center: 盒子的 snap position 的中间与 snapport 中间对齐

    • 在这里插入图片描述

和 scroll-margin 的关系

在前面的定义中已经说过了, 这个属性对齐的不是盒子的 border box 而是盒子 snap area, 即 border box 加上 scroll-margin

我们来点 CSS, 给滚动容器的第二个元素加上 40pxscroll-margin-top

.item {
  scroll-snap-align: center;
}
.item:nth-child(2) {
  scroll-margin-top: 40px;
}
.item:nth-child(2)::before {
  content: '';
  height: 40px;
  outline: 2px dashed #111;
}

元素都是居中对齐, 但是第二个元素算居中位置的时候把 40px 也加上了. 好家伙

在这里插入图片描述

和 scroll-padding 的关系

同样是前面的定义, 对齐不是发生在滚动容器上, 而是滚动容器的 snapport 上, 即滚动容器减去其 scroll-padding.

📖 注意 scroll-padding 并不像 padding 一样会渲染出高度, 但是它有它的位置.

.container {
  overflow: scroll;
  scroll-snap-type: y mandatory;
  scroll-padding-top: 40px;
}

你会发现, 元素对齐区域变成了黑色虚线下面的区域, 而不再是整个滚动容器.

在这里插入图片描述

最后大家可以手动试一下, 加上 scroll-paddingscroll-margin 双重 buff 的滚动捕获时什么样的.

兼容性

在这里插入图片描述

谢谢你看到这里😊 大家周末开心呀


http://www.kler.cn/a/131998.html

相关文章:

  • 【蓝桥杯选拔赛真题23】C++计算24 第十二届蓝桥杯青少年创意编程大赛C++编程选拔赛真题解析
  • Leetcode刷题详解——不同路径
  • bug-跨域访问问题
  • Linux三剑客:awk的高级用法
  • 《Deep learning for fine-grained image analysis: A survey》阅读笔记
  • 设计模式--模板方法外观模式
  • Critical:Azure命令行界面(CLI)可能通过GitHub Actions日志暴露敏感信息
  • Windows11怎样投屏到电视上?
  • 大模型之十二十-中英双语开源大语言模型选型
  • Linux:常见指令
  • OpenAI的Whisper蒸馏:蒸馏后的Distil-Whisper速度提升6倍
  • SQL 的 AND、OR 和 NOT 运算符:条件筛选的高级用法
  • MySQL数据库——存储过程-游标(介绍-声明游标、打开游标、获取游标记录、关闭游标,案例)
  • 使用Docker部署Python Flask应用的完整教程
  • 鸿蒙ToastDialog内嵌一个xml页面会弹跳到一个新页面《解决》
  • 场景交互与场景漫游-场景漫游器(6)
  • python引入自己不同目录的模块
  • Linux CentOS 8(DHCP的配置与管理)
  • 滚雪球学Java(09-3):Java中的逻辑运算符,你真的掌握了吗?
  • 智能指针面试题