您现在的位置是:网站首页> 编程资料编程资料
CSS使用position:sticky 实现粘性布局的方法position:sticky用法介绍及浏览器兼容性position:sticky 粘性定位的几种巧妙应用详解
2021-09-04
941人已围观
简介 这篇文章主要介绍了CSS使用position:sticky 实现粘性布局的方法的相关资料,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
简介
前面写了一篇文章讲解了position常用的几个属性:《CSS基础篇-- position属性讲解》
一般都知道下面几个常用的:
{ position: static; position: relative; position: absolute; position: fixed; }在https://developer.mozilla.org/zh-CN/docs/Web/CSS/position还说了下面这三个值:
/* 全局值 */ position: inherit; position: initial; position: unset;
估计大部分都没有用过position:sticky吧。这个属性值还在试验阶段。怎样描述它呢?
初窥 position:sticky
sticky 英文字面意思是粘,粘贴,所以姑且称之为粘性定位。下面就来了解下这个处于实验性的取值的具体功能及实用场景。
这是一个结合了 position:relative 和 position:fixed 两种定位功能于一体的特殊定位,适用于一些特殊场景。
什么是结合两种定位功能于一体呢?
元素先按照普通文档流定位,然后相对于该元素在流中的 flow root(BFC)和 containing block(最近的块级祖先元素)定位。
而后,元素定位表现为在跨越特定阈值前为相对定位,之后为固定定位。
这个特定阈值指的是 top, right, bottom 或 left 之一,换言之,指定 top, right, bottom 或 left 四个阈值其中之一,才可使粘性定位生效。否则其行为与相对定位相同。
sticky:对象在常态时遵循常规流。它就像是relative和fixed的合体,当在屏幕中时按常规流排版,当卷动到屏幕外时则表现如fixed。该属性的表现是现实中你见到的吸附效果。
常用场景:当元素距离页面视口(Viewport,也就是fixed定位的参照)顶部距离大于 0px 时,元素以 relative 定位表现,而当元素距离页面视口小于 0px 时,元素表现为 fixed 定位,也就会固定在顶部。
代码:
{ position: -webkit-sticky; position: sticky; top: 0; }如下图表现方式:
距离页面顶部大于20px,表现为 position:relative;

距离页面顶部小于20px,表现为 position:fixed;

运用 position:sticky 实现头部导航栏固定
html代码:
标题一
这是一段文本
这是一段文本
这是一段文本
标题二
这是一段文本
这是一段文本
这是一段文本
标题三
这是一段文本
这是一段文本
这是一段文本
标题四
这是一段文本
这是一段文本
这是一段文本
标题五
这是一段文本
这是一段文本
这是一段文本
标题五六
这是一段文本
这是一段文本
这是一段文本
CSS代码:
.samecon h2{ position: -webkit-sticky; position: sticky; top: 0; background:#ccc; padding:10px 0; }同理,也可以实现侧边导航栏的超出固定。
生效规则
- 须指定
top, right, bottom 或 left四个阈值其中之一,才可使粘性定位生效。否则其行为与相对定位相同。- 并且
top和bottom同时设置时,top生效的优先级高,left和right同时设置时,left的优先级高。
- 并且
- 设定为
position:sticky元素的任意父节点的overflow属性必须是visible,否则position:sticky 不会生效。这里需要解释一下:- 如果
position:sticky元素的任意父节点定位设置为overflow:hidden,则父容器无法进行滚动,所以position:sticky元素也不会有滚动然后固定的情况。 - 如果
position:sticky元素的任意父节点定位设置为position:relative | absolute | fixed,则元素相对父元素进行定位,而不会相对viewprot定位。
- 如果
- 达到设定的阀值。这个还算好理解,也就是设定了
position:sticky的元素表现为relative还是fixed是根据元素是否达到设定了的阈值决定的。兼容性

这个属性的兼容性还不是很好,目前仍是一个试验性的属性,并不是W3C推荐的标准。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
相关内容
- css实现多边形和梯形盒阴影技巧CSS 阴影动画优化技巧JS+css3实现带阴影可点击旋转的3D立体杯子效果源码CSS阴影效果的比较之drop-Shadow与box-ShadowCSS 翘边阴影的实现代码CSS 曲线阴影实现的示例代码css实现悬浮效果的阴影的方法示例CSS中使用文本阴影与元素阴影效果
- 利用CSS3 动画 绘画 圆形动态时钟纯CSS3实现运行时钟的示例代码css3 利用transform打造走动的2D时钟css3一个简易的 LED 数字时钟实现方法CSS实现漂亮的时钟动画效果的实例代码
- css3 矩阵的使用详解css3中transform属性实现的4种功能详解CSS3.0(Cascading Style Sheet) 层叠级联样式表纯CSS3实现div按照顺序出入效果CSS3实现列表无限滚动/轮播效果css3 利用transform-origin 实现圆点分布在大圆上布局及旋转特效CSS3实现的侧滑菜单CSS3实现的3D隧道效果用CSS3画一个爱心css3 实现文字闪烁效果的三种方式示例代码六种css3实现的边框过渡效果
- 用CSS实现Tab页切换效果的示例代码怎样实现H5+CSS3手指滑动切换图片的示例代码css实现导航切换的实例代码CSS实现Tab页切换实例代码CSS使用classList实现两个按钮样式的切换纯CSS3制作页面切换效果的实例代码
- CSS3 :default伪类选择器使用简介css3的focus-within选择器的使用详解如何使用CSS3中的结构伪类选择器和伪元素选择器CSS3 新增选择器的实例css3 伪类选择器快速复习小结css3之UI元素状态伪类选择器实例演示CSS3选择器新增问题的实现
- CSS布局方案小结详解css布局实现左中右布局的5种方式CSS实现多行多列的布局的实例代码css Flex布局的可伸缩性(Flexibility)浅谈css网页的几种布局如何理解 CSS 布局和块级格式上下文浅谈css sticker-footer 布局详解使用CSS3的@media来编写响应式的页面
- CSS清除浮动float的三种方法小结详解css清除浮动float的七种常用方法总结和兼容性处理CSS的position定位和float浮动详解CSS使用float属性设置浮动元素的实例教程理解CSS浮动float、定位positioncss浮动(float/clear)使用讲解css浮动(float,clear)通俗讲解经验分享html/css中float浮动的用法实例详解
- CSS宽高等比布局的方法css实现元素居中的N种方法div水平布局两边对齐的三种实现方法waterfall瀑布流布局+动态渲染的实现页面中有间隔的方格布局如何完美实现方法css实现六种自适应两栏布局方式使用flex布局轻松实现页面布局的示例代码使用Flex布局实现头部固定内容区域滚动的方法详解flex布局下图片变形的解决方法详解flex布局与position:absolute/fixed的冲突问题Flex布局实现div内部子元素垂直居中的示例
- 纯css实现背景图片半透明内容不透明的方法利用CSS3制作简单的3d半透明立方体图片展示CSS实现让文字半透明显示在图片上的方法css 半透明 让IE6支持png图片半透明解决方法css3实现背景图片半透明内容不透明的方法示例
- CSS 记录用户密码的方法CSS Transition通过改变Height实现展开收起元素从QQtabBar看css命名规范BEM的详细介绍css实现两栏布局,左侧固定宽,右侧自适应的多种方法CSS 实现Chrome标签栏的技巧CSS实现两列布局的N种方法CSS实现隐藏搜索框功能(动画正反向序列)CSS3中Animation实现简单的手指点击动画的示例详解CSS中的特指度和层叠问题详解overflow:hidden的作用(溢出隐藏、清除浮动、解决外边距塌陷)关于CSS浮动与取消浮动的问题
