position:sticky粘性定位的几种巧妙应用与理解。

2023-10-30

一、粘性布局的定义

position:sticky又称为粘性定位,是css3新增的。粘性定位的元素依赖于用户的滚动,在相对定位(relative)与固定定位(fixed)之间进行切换,基于位偏移的值进行偏移。
粘性定位可以被认为是相对定位和固定定位的混合
元素在跨越特定位偏移之前为相对定位,之后为固定定位。
示例:
.div{ position: sticky; top: 50px; }
设置了以上元素,在屏幕范围(viewport)视口滚动到元素top距离小于50px之前,div为相对定位。之后元素将固定在与顶部距离50px的位置,直到viewport视口回滚到50px以内。
特点:

  1. 该元素并不脱离文档流,仍然保留元素原本在文档流中的位置。

  2. 元素固定的相对偏移是相对于离它最近的具有滚动框的祖先元素,如果祖先元素都不可以滚动,那么是相对于viewport来计算元素的偏移量

  3. 当元素在容器中被滚动超过指定的偏移值时,元素在容器内固定在指定位置。亦即如果你设置了top:
    50px,那么在sticky元素到达距离相对定位的元素顶部50px的位置时固定,不再向上移动。

  4. 元素定位表现为在跨越特定阈值前为相对定位,之后为固定定位。

二、应用示例

1、头部固定

头部导航栏开始时相对定位顶部,当页面元素发生滚动,当达到给定的位偏移时变为固定定位。

在这里插入图片描述

在这里插入图片描述

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        .main-container {
            max-width: 500px;
            height: 500px;
            margin: 0 auto;
            margin-top: 40px;
            overflow: auto;
            margin-top: 20px;
        }
        
        .main-header {
            height: 50px;
            border: 5px solid red;
        }
        
        .main-content {
            min-height: 600px;
            border: 5px solid green;
            margin-top: 20px;
        }
        
        .main-footer {
            border: 5px solid blue;
            margin-top: 20px;
        }
        
        .main-header {
            position: sticky;
            top: 0;
        }
    </style>
</head>

<body>
    <main class="main-container">
        <header class="main-header">HEADER</header>
        <div class="main-content">MAIN CONTENT</div>
        <footer class="main-footer">FOOTER</footer>
    </main>
    <div class="devide"></div>
</body>

</html>

2、页脚固定

此应用与头部固定类似,参考头部固定即可。
在这里插入图片描述
在这里插入图片描述

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        .main-container {
            max-width: 500px;
            height: 500px;
            margin: 0 auto;
            margin-top: 40px;
            overflow: auto;
            margin-top: 20px;
        }
        
        .main-header {
            height: 50px;
            border: 5px solid red;
        }
        
        .main-content {
            min-height: 600px;
            border: 5px solid green;
            margin-top: 20px;
        }
        
        .main-footer {
            border: 5px solid blue;
            margin-top: 20px;
        }
        
        .main-footer {
            position: sticky;
            bottom: 0;
        }
    </style>
</head>

<body>
    <main class="main-container">
        <header class="main-header">HEADER</header>
        <div class="main-content">MAIN CONTENT</div>
        <footer class="main-footer">FOOTER</footer>
    </main>
    <div class="devide"></div>
</body>

</html>

3、侧边栏固定

当页面滚动,位置超过侧边栏的顶部位偏移后,侧边栏变为固定定位,可用于实现侧边导航栏或侧边提示信息及广告展示。
在这里插入图片描述
在这里插入图片描述

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        .box {
            width: 500px;
            border: 1px solid #000;
            height: 100px;
            overflow-y: auto;
        }
        
        .left {
            width: 300px;
            /* overflow-y: auto; */
        }
        
        .right {
            width: 100px;
            background-color: green;
            margin-top: 50px;
        }
        
        .left,
        .right {
            float: left;
        }
        
        .right {
            position: sticky;
            top: 10px;
        }
    </style>
</head>

<body>
    <div class="box">
        <div class="left">寂静的森林里,树木窃窃私语,萤火虫的光不再温暖。鹅卵石铺就的小路上布满了多少人的脚印?我在这里轻轻吟颂着温暖的童话。带着怀表的兔子发着光,领着美丽的爱丽丝,进入神秘的扑克牌仙境,奇妙的经历只是一个梦而已,一切都会结束。冰冷的城墙述说着一个又一个故事,湛蓝的大海是人鱼的眼泪,透明的水晶棺是公主的幸福笑靥,梦幻的蔷薇花翩飞,我的童话又在哪里?   山谷里的声音,让痛苦云淡风清,我聆听着古老的篇章,尘封的记忆在苏醒,漫延的泪水变成故事里的曾经。永远的童话,从一开始便不存在,一切只是幻想,一切只是虚无,镜子里的模样仿佛不再是自己,时间在嘲笑我们的年轻,承诺就像易碎的花瓶。
            童话的书页渐渐合扰,与其相信美丽的梦,我觉得我的生活会更加芬芳。人生像童话,却胜于童话。
        </div>
        <div class="right">导航框</div>
    </div>
</body>

</html>

4、页面进度条一

粘性布局可以实现页面游览进度条效果。以下是简易进度条的演示,实际实现中可将未滚动到顶部的元素设置为透明色,滚动到顶部时变为蓝色。
在这里插入图片描述

在这里插入图片描述

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        .container {
            width: 400px;
            height: 500px;
            overflow: auto;
            margin: 40px auto 40px;
            padding-bottom: 500px;
            box-sizing: border-box;
        }
        
        .sticky {
            width: 100px;
            height: 10px;
            background: rgba(36, 167, 254, 0.979);
            position: -webkit-sticky;
            position: sticky;
            top: 0;
        }
        
        .sticky:nth-of-type(2) {
            transform: translateX(100px);
        }
        
        .sticky:nth-of-type(3) {
            transform: translateX(200px);
        }
        
        .sticky:nth-of-type(4) {
            transform: translateX(300px);
        }
    </style>
</head>

<body>
    <div class="container">
        <h1>优美小短文</h1>
        <div class="sticky"></div>
        <p>寂静的森林里,树木窃窃私语,萤火虫的光不再温暖。鹅卵石铺就的小路上布满了多少人的脚印?我在这里轻轻吟颂着温暖的童话。</p>
        <div class="sticky"></div>
        <p>带着怀表的兔子发着光,领着美丽的爱丽丝,进入神秘的扑克牌仙境,奇妙的经历只是一个梦而已,一切都会结束。</p>
        <div class="sticky"></div>
        <p>冰冷的城墙述说着一个又一个故事,湛蓝的大海是人鱼的眼泪,透明的水晶棺是公主的幸福笑靥,梦幻的蔷薇花翩飞,我的童话又在哪里?</p>
        <div class="sticky"></div>
        <p>山谷里的声音,让痛苦云淡风清,我聆听着古老的篇章,尘封的记忆在苏醒,漫延的泪水变成故事里的曾经。

        </p>
    </div>
</body>

</html>

今天太累了,等有时间再把剩下的几种用法抓紧更新完毕。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

position:sticky粘性定位的几种巧妙应用与理解。 的相关文章

随机推荐

  • 移动端html5用什么软件开发,基于uniapp的移动端和web-h5技术开发的移动端区别与应用...

    一 两者的主要区别 基于uniapp前端框架技术开发的移动端 实现了前后端分离 可支持各种旅游小程序等电商系统搭建 实现旅游产品多端展现 让游客在哪里都可以购买到你的产品和服务 一个管理平台 十端同步展现 基于web h5开发的移动端 采用
  • 数据源自动重连机制设置

    一 场景 在网络状况不是非常良好 经常会出现暂时性的拥塞或者断开的情况 而且当我们重启数据库时也会发生类似的情况 所以需要配置中间件的连接池来实现连接测试以及自动重连 通过重新配置连接池 成功解决了这个问题 下面会给出一份数据源配置参数详单
  • Jupyter Lab设置切换虚拟环境

    在进行数据科学任务时 一般会用到交互式开发环境 即Jupyter Notebook Jupyter lab是Jupyter Notebook的升级版 功能更强大 更好用 但是默认情况下 是不能切换虚拟环境的 如下 或者查看内核列表 有2个位
  • promise介绍和使用

    promise实例讲解 1 Promise定义 es6提供的一种新的适合书写异步任务 尤其需要多次连续调用的异步任务的解决方案 是一个构造函数 直接在浏览器控制台打印看下 执行如下语句 console dir Promise 可以看到typ
  • 大数据导论第二章——数据预处理与特征工程

    一 数据预处理 数据预处理的目标 数据预处理的目标就是要从数据分析要解决的问题出发 产生高质量的 能够满足分析需求 提高分析质量的数据集 从现实生活中收集到的原始数据都是低质量的数据集 会存在数据缺失 有噪音等问题 而用低质的数据直接进行分
  • Linux下C和C++程序中内存泄露检测

    01 前言 C C 运行高效 不管是操作系统内核还是对性有要求的程序 比如游戏引擎 都要求使用C C 来编写 其实C C 强大的一点在于能够使用指针自由地控制内存的使用 适时的申请内存和释放内存 从而做到其他编程语言做不到的高效地运行 但是
  • 多体交叉存储器

    计算机中大容量的主存 可由多个存储体组成 每个体都具有自己的读写线路 地址寄存器和数据寄存器 称为 存储模块 这种多模块存储器可以实现重叠与交叉存取 如果在M个模块上交叉编址 M 2m 则称为模M交叉编址 模M交叉编址方式 设存储器包括M个
  • 服务器虚拟内存设置一下,服务器虚拟内存设置一下

    服务器虚拟内存设置一下 内容精选 换一换 对于不同的硬件设备 通过在BIOS中设置一些高级选项 可以有效提升服务器性能 服务器上的SMMU一般用来完成设备的地址转换 并且可以实现设备隔离 在虚拟化中很实用 但是在物理机测试场景下 SMMU可
  • 两个ESP32和Raspberry Pi代理间的MQTT通讯

    在本教程中 您将了解有关 MQTT 消息传递协议 为什么要使用它以及它是如何实现的所有信息 简而言之 MQTT 使用您现有的 Internet 家庭网络向您的 IoT 设备发送消息并响应这些消息 要按照本教程中的示例进行操作 您将需要以下硬
  • sort06-快速排序

    sort 快速排序 排序原理 需求 切分原理 代码实现 快速排序和归并排序的区别 快速排序时间复杂度分析 快速排序 快速排序是对冒泡排序的一种改进 它的基本思想是 通过一趟排序将要排序的数据分割成独立的两部分 其中一部分的所有数据都比另外一
  • 安装ceres-solver以及colmap遇到的坑

    参考https blog csdn net Carry all article details 103224043来进行的安装 途中遇到网络问题和make执行错误的问题 错误如下所示 In file included from root w
  • Golang JWT 认证 (三)-添加token自动刷新机制

    文章目录 一 实现原理 1 后端中间件改进 2 前端改进 3 过期后点击请求测试 二 完整代码 后端 前端 三 其他思路 上一个Demo中 token一旦过期无法刷新需要重新登录 因此需要某种机制来自动更新token 一 实现原理 1 后端
  • [Zotero]设置的备份与恢复

    https zhuanlan zhihu com p 350546813 https zhuanlan zhihu com p 350549136
  • css3动画支持ie9,internet explorer - CSS3 animation not working in IE9 - Stack Overflow

    CSS3 animations are not working in IE9 Here is the jfiddle link Is it possible to make them working on IE or i am making
  • 大数据毕设选题 - 深度学习火焰识别检测系统(python YOLO)

    文章目录 0 前言 1 基于YOLO的火焰检测与识别 2 课题背景 3 卷积神经网络 3 1 卷积层 3 2 池化层 3 3 激活函数 3 4 全连接层 3 5 使用tensorflow中keras模块实现卷积神经网络 4 YOLOV5 4
  • SQLi LABS Less 14 报错注入+布尔盲注

    第十四关双引号字符串型注入 推荐使用报错注入 布尔盲注 目录 一 功能分析 二 思路分析 三 解题步骤 方式一 报错注入 第一步 判断注入点 第二步 判断报错条件 第三步 脱库 方式二 布尔盲注 第一步 判断注入条件 第二步 判断长度 第三
  • 振荡器与谐振器(有源晶振无源晶振)

    振荡器与谐振器 有源晶振无源晶振 时间 2012 08 15 22 48 11 来源 作者 llmao 点击数 QQ空间 新浪微博 腾讯微博 人人网 更多 0 Oscillator 振荡器 有源晶振 Crystal 晶体 无源晶振 RESO
  • android:AsyncTask的介绍和使用

    1 AsyncTask 1 1 为什么要使用AsyncTask 由于android开发时 不允许在主线程中进行耗时操作 网络请求 ui改变等 所以需要在子线程中进行相应的耗时操作 为了满足多线程之间的通信 提出了Handler类 异步操作的
  • 适用于 Linux 的 8 个最佳 CAD 应用程序

    计算机辅助设计 CAD 是使用计算机技术进行设计和设计文档的过程 但是有没有适用于 Linux 的好的免费 CAD 应用程序 奇怪的是 这是我们在邮件中经常收到的问题之一 我们将尝试在这里不仅列出免费的 CAD 应用程序 还会列出在 Lin
  • position:sticky粘性定位的几种巧妙应用与理解。

    一 粘性布局的定义 position sticky又称为粘性定位 是css3新增的 粘性定位的元素依赖于用户的滚动 在相对定位 relative 与固定定位 fixed 之间进行切换 基于位偏移的值进行偏移 粘性定位可以被认为是相对定位和固