css如何实现吸附布局
导读:本文共2806.5字符,通常情况下阅读需要9分钟。同时您也可以点击右侧朗读,来听本文内容。按键盘←(左) →(右) 方向键可以翻页。
摘要: 吸附布局吸附布局指相对视窗任何滚动都能占据特定位置的占位布局。视窗滚动到特定位置,布局固定在该位置,后续不随视窗滚动而滚动。该布局产生的效果俗称吸附效果,是一种常见网页效果。譬如吸顶效果和吸底效果都是该范畴,经常在跟随导航、移动广告和悬浮提示等应用场景里出现。在jQuery时代就有很多吸附效果插件,现在三大前端框架也有自身第三方的吸附效果组件。它们都有着共通的实... ...
目录
(为您整理了一些要点),点击可以直达。吸附布局
吸附布局指相对视窗任何滚动都能占据特定位置的占位布局。视窗滚动到特定位置,布局固定在该位置,后续不随视窗滚动而滚动。该布局产生的效果俗称吸附效果
,是一种常见网页效果。譬如吸顶效果
和吸底效果
都是该范畴,经常在跟随导航
、移动广告
和悬浮提示
等应用场景里出现。
在jQuery时代
就有很多吸附效果插件,现在三大前端框架也有自身第三方的吸附效果组件。它们都有着共通的实现原理:监听scroll
事件,判断scrollTop
和目标节点
的位置范围,符合条件则将目标节点
的position
声明为fixed
使目标节点
相对于视窗定位,让用户看上去就像钉在视窗指定位置上。
JS实现吸附效果的代码在网上一搜一大堆,更何况笔者喜欢耍CSS,在此就不贴相关的JS代码了。在此推荐一个很少见很少用的CSS属性position:sticky
。简单的两行核心CSS代码就能完成十多行核心JS代码的功能,何乐而不为呢。
简单回顾position
属性值,怎样用就不说了,大家应该都熟悉。
继承
2static标准流
2relative相对定位
2absolute绝对定位
2fixed固定定位
2sticky粘性定位
3当值为sticky
时将节点变成粘性定位
。粘性定位是相对定位
和固定定位
的结合体,节点在特定阈值
跨越前为相对定位
,跨越后为固定定位
。
<divclass="adsorption-position"><ul><li>Top1</li><li>Top2</li><li>Normal</li><li>Bottom1</li><li>Bottom2</li></ul></div>
.adsorption-position{overflow:auto;position:relative;width:400px;height:280px;outline:1pxsolid#3c9;ul{padding:200px0;}li{position:sticky;height:40px;line-height:40px;text-align:center;color:#fff;&:nth-child(1){top:0;z-index:9;background-color:#f66;}&:nth-child(2){top:40px;z-index:9;background-color:#66f;}&:nth-child(3){background-color:#f90;}&:nth-child(4){bottom:0;z-index:9;background-color:#09f;}&:nth-child(5){bottom:40px;z-index:9;background-color:#3c9;}}}
两行核心CSS代码分别是position:sticky
和top/bottom:npx
。上述5个节点都声明position:sticky
,但由于top/bottom
赋值有所不同就产生不同吸附效果。
细心的同学可能发现这些节点在某些滚动时刻处于相对定位,在特定滚动时刻处于固定定位
。
第1个
<li>
:top
为0px
,滚动到容器顶部
就固定第2个
<li>
:top
为40px
,滚动到距离容器顶部40px
就固定第3个
<li>
:未声明top/bottom
,就一直保持相对定位第4个
<li>
:bottom
为40px
,滚动到距离容器底部40px
就固定第5个
<li>
:bottom
为0px
,滚动到容器底部
就固定
当然,换成left
或right
也一样能实现横向的吸附效果
。
值得注意,粘性定位
的参照物并不一定是position:fixed
。当目标节点
的任意祖先节点
都未声明position:relative|absolute|fixed|sticky
,才与position:fixed
表现一致。当离目标节点
最近的祖先节点
声明position:relative|absolute|fixed|sticky
,目标节点
就相对该祖先节点
产生粘性定位
。简单来说确认参照物的方式与position:absolute
一致。
兼容性勉强还行,近2年发版的浏览器都能支持,Safari
和Firefox
的兼容性还是挺赞的。有吸附效果
需求的同学建议一试,要兼容IExplorer
就算了。期待该属性有更好的发展,毕竟吸附布局
真的是一种常见布局。
</div> <div class="zixun-tj-product adv-bottom"></div> </div> </div> <div class="prve-next-news">
css如何实现吸附布局的详细内容,希望对您有所帮助,信息来源于网络。