一、粘性布局的定义

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>

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

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

  1. position:sticky 粘性定位

    1.什么是粘性定位? 粘性定位它基于用户的滚动位置来定位. 粘性定位的元素是依赖于用户的滚动,在 position:relative 与 position:fixed 定位之间切换. 它的行为就像 p ...

  2. position:sticky 粘性定位 (sticky) 与 固定定位

    position:sticky是css定位新增属性:可以说是static(没有定位) 和 固定定位fixed 的结合:它主要用在对 scroll 事件的监听上:简单来说,在滑动过程中,某个元素距离其父 ...

  3. CSS position: sticky; 粘性定位初识

    之前所熟知的CSS position 属性值 有relative.absolute.fixed,当然也不能忽略了static(默认)和inherit(继承). 偶然的一次在 MDN:https://d ...

  4. position: sticky兼容iPhone6s,iPhone7

    position: sticky;粘性定位 在开发小程序的时候,经常会遇到需要实现吸顶的效果,势必会用到position: sticky;粘性定位:但是也会遇到一些问题:即在安卓手机和苹果手机上显示正 ...

  5. position粘性定位sticky

    这两周在做一个service后台的需求,有一个很有意思的事情,左侧要有各种颜色柱,每一种颜色柱代表一个身份,例如红色代表本人,蓝色代表配偶,绿色代表女儿等等...需求中要求要在内容区域滚动的时候,代表 ...

  6. 彻底理解粘性定位(position:sticky)

    粘性定位可以被认为是相对定位和固定定位的混合(即元素子再跨越特定阈值前为相对定位,之后为固定定位)例如: .div{position: sticky;top: 10px; } 在 视口滚动到元素 to ...

  7. css粘性定位position:sticky

    前言: css3中有一个很有趣的属性position:sticky,粘性属性,效果是一个吸顶效果,可以说是相对定位relative和固定定位fixed的结合:它主要用在对scroll事件的监听上:简单 ...

  8. Bootstrap4+MySQL前后端综合实训-Day01-PM【position定位的四种方式、Flex布局语法教程及案例(概念、容器属性、项目属性)、双飞翼布局复习、Bootstrap4 教程】

    [Bootstrap4前端框架+MySQL数据库]前后端综合实训[10天课程 博客汇总表 详细笔记] 目   录 HTML中的三种元素(块元素.内联元素.内联块元素) position定位的四种方式 ...

  9. CSS3新增定位属性sticky,粘性定位

    position:sticky sticky 英文字面意思是粘,粘贴. 这是一个结合了 position:relative 和 position:fixed 两种定位功能于一体的特殊定位,适用于一些特 ...

最新文章

  1. DialogFragment 的使用
  2. 小程序---canvas画图,生成分享图片,画图文字换行
  3. sns.distplot图例标注怎么添加_百度地图API图标、文本、图例与连线
  4. mac bash file密码_Mac系统 | 菜鸟程序员项目模拟数据迁移,会安装Mysql服务端吗
  5. sql网站路径php,如何在源码中找出sql语句的位置呢
  6. 一个大图切成几个小图加载速度更快_CSS精灵图技术(提高页面的加载速度)
  7. linux内核的nfs实现框架
  8. el captain设置环境变量
  9. Latex 常用代码
  10. 2.OAuth 2实战 --- OAuth 之舞
  11. VMWare mac os x 优化神器 beamoff
  12. 鲁迅《狂人日记》全文
  13. HDU 5762 Teacher Bo (水题)
  14. 【模块】MAX31865 铂电阻温度检测器模块 RTD传感器PT100-PT1000
  15. 【报告分享】AIoT智能生活场景营销研究报告-小米中传(附下载)
  16. 【JS逆向系列】某乎x96参数与jsvmp初体验
  17. 【单片机】简单I/O口扩展
  18. 03_根据配置文件创建SqlSessionFactory(Configuration的创建过程)
  19. RouterOS配置端口映射的方法
  20. 认识php笔,观察认识笔活动教案

热门文章

  1. 解决:ubuntu16安装后mnt/hgfs下没有设置的共享目录
  2. 触摸键盘失灵 鼠标指针不出现如何解决
  3. 卫生专业计算机考试证书,中国卫生人才卫生网官网_卫生资格证电子证书打印时间...
  4. php一体包,【微擎微赞模块】超级图文10.1.7安装更新一体包,完美可用运营版
  5. 服务端json参数校验神器Json Schema
  6. [附源码]Java计算机毕业设计SSM高校网上报销系统
  7. 搞搞算法 2:面向对象
  8. 动态分配二维数组,且能如数组一样访问
  9. Redis 为什么是单线程的
  10. CGDC:单机游戏 欢迎“盗版”