• css实现贴合滚动


    先看一下实现效果

     我们在滚动的时候,内容会自动体贴容器,上面我只懂了一下滚轮,监测到我们操作后,内容自动滚动到和容器顶部贴合

    使用css+html 即可实现

    1. <div class="main">
    2. <section>我是内容1section>
    3. <section>我是内容2section>
    4. <section>我是内容3section>
    5. <section>我是内容4section>
    6. div>
    7. .main {
    8. scroll-snap-type: y mandatory; // y轴 贴合
    9. height: 100vh; // 视口
    10. overflow: auto;
    11. }
    12. section {
    13. width: 100%;
    14. height: 100vh;
    15. scroll-snap-align: start; // 贴合容器开始位置
    16. }

    scroll-snap-type

    父容器设置该属性,两个值,第一个值为 x轴 或 y轴

    第二个值为贴合模式  mandatory :发生滚动触发贴合

                                      proximity :当内容和容器距离小于一定距离时,触发贴合(这个距离我                                                             们不能自定义设置)

    看一下第二种模式,当我滑动到中部时,也没有触发贴合,到我滑动到下一个内容距离容器顶部一定距离时,松开鼠标,内容2自动贴合到容器

    scroll-snap-align

    这是内容的属性,设置对齐方式

    可选:start end center

    对应 头部位置对齐 底部位置对齐 居中位置对齐

    直接看这个例子

    1. height: 120vh;
    2. scroll-snap-align: end;

    现在内容的高是 120vh ,贴合后,底部对齐,可以看到我们的文字看不到了,上面例子中头部对齐的话,能看到头部的文字,居中应该页不用过多展示了

    scroll-padding-top

    当我们有一个固定的导航栏时,我们就需要这个属性来,指定贴合后,内容相当于容器的距离

    1. <div class="main">
    2. <nav>DaoHangnav>
    3. <section>我是内容1section>
    4. <section>我是内容2section>
    5. <section>我是内容3section>
    6. <section>我是内容4section>
    7. div>
    8. nav{
    9. position: fixed;
    10. top: 0;
    11. width: 100%;
    12. height: 100px;
    13. background: mediumseagreen;
    14. text-align: center;
    15. }

    比如我们加入一个 nav标签 固定到头部

    可以看到我们的贴合被挡住了,我们设置上 scroll-padding-top 值为偏离的距离,在这里例子中是nav的高度 100px

    1. scroll-snap-type: y mandatory;
    2. scroll-padding-top: 100px;

    自动到了指定位置,和顶部对齐。这都是 y 轴 的例子,x轴也是一样的配置用法。

    注:这个属性比较新有一定兼容问题

    想要深入了解可以去MDN查看文档

    scroll-snap-type - CSS(层叠样式表) | MDN (mozilla.org)

  • 相关阅读:
    Git 学习笔记 | Git 基本操作命令
    【C++】Map和Set -- 详解
    VM——“图形收集”显示ROI框及颜色
    如何快速为团队打造自己的组件库(下)—— 基于 element-ui 为团队打造自己的组件库
    【攻破css系列——附加篇】vscode自动格式化
    数学建模--预测类模型
    【云原生之Docker实战】使用Docker部署ROS软路由系统
    excel怎么固定前几行前几列不滚动?
    heap use after free
    腾讯云宝塔Linux安装Mysql5.7
  • 原文地址:https://blog.csdn.net/paidaboluo/article/details/126609969