当前位置: 首页 > Web前端 > CSS

CSS基础--使用position-sticky实现粘性布局

时间:2023-03-30 22:15:29 CSS

介绍之前写过一篇文章,讲解position的几个常用属性:《CSS基础篇-- position属性讲解》大体上知道以下几个常用的:{position:static;position:relative;position:absolute;position:fixed;}https://developer.mozilla.org/zh-CN/docs/Web/CSS/position也说了下面三个值:/*globalvalue*/position:inherit;位置:初始;位置:未设置;估计大部分都没用过position:sticky。这个属性值还在试验阶段。怎么形容呢?粘性:物体在正常时遵循正常流动。它就像是相对和固定的结合。当它在屏幕中时,它会按照正常流程进行格式化,而当它滚出屏幕时,它会表现得像固定的一样。这个属性的表现就是你在现实中看到的吸附效果。常见场景:当元素与页面视口(Viewport,固定定位的参考)顶部的距离大于0px时,元素显示为相对定位,当元素与页面的距离视口小于0px,元素固定定位显示,即固定在顶部。代码:{位置:-webkit-sticky;定位:粘性;top:0;}如下图:如果距离页面顶部大于20px,则表现为position:relative;如果距页面顶部的距离小于20px,则表现为position:fixed;使用position:sticky实现头部导航栏的固定html代码:

Title1

这是一段文字

这是一段文字

这是一段文字

标题2

这是一段文字

这是一段文字

这是一段文字

标题三

这是一段文字Text

这是一段文字

这是一段文字

标题四

这是一些文字

这是一些文字

这是一些文本

标题五

这是一段文字

这是一段文字

这是一段文字

标题五六

这是一段文字

这是一段文字

这是一段文字一段文字

CSS代码:.sameconh2{position:-webkit-sticky;定位:粘性;顶部:0;背景:#ccc;padding:10px0;}同理侧边导航栏也可以实现超出固定有效规则top,right,bottomorleft四个阈值之一必须指定才能使粘性定位生效。否则它的行为与相对定位相同。并且同时设置top和bottom时,top优先生效;left和right同时设置时,left优先。任何设置了position:sticky的父节点的overflow属性必须是可见的,否则position:sticky不会生效。这里需要说明一下:如果position:sticky元素的任意一个父节点的position设置为overflow:hidden,则父容器不能滚动,所以position:sticky元素不会滚动然后固定。如果一个position:sticky元素的任何父节点定位设置为position:relative|绝对|fixed,元素相对于父元素定位,而不是相对于viewprot。达到设定的阈值。这个还是比较容易理解的,就是设置position:sticky的元素是相对的还是固定的,取决于这个元素是否达到了设定的阈值。Compatibility这个属性的兼容性不是很好。它仍然是一个实验属性,不是W3C推荐的标准。