千家信息网

CSS怎么实现吸附效果

发表于:2025-11-09 作者:千家信息网编辑
千家信息网最后更新 2025年11月09日,这篇文章主要讲解了"CSS怎么实现吸附效果",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"CSS怎么实现吸附效果"吧!原理在 jQuery 时代就有很多
千家信息网最后更新 2025年11月09日CSS怎么实现吸附效果

这篇文章主要讲解了"CSS怎么实现吸附效果",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"CSS怎么实现吸附效果"吧!

原理

在 jQuery 时代就有很多吸附效果插件了,现在常用的三大前端框架也有自身第三方的吸附效果组件。它们都有着共通的实现原理:监听scroll事件,判断scrollTop目标元素的位置范围,符合条件则将目标元素position声明为fixed,令目标元素相对于浏览器窗口进行定位,让用户看上去就像钉在浏览器指定位置上。

javascript 实现吸附效果的代码在网上一搜一大堆,更何况笔者喜欢耍 CSS ,在此就不贴相关的JS代码了。本文为各位同学推荐一个很少见很少用的 CSS 属性:position:sticky。简单的「两行CSS核心代码」就能完成「十多行JS核心代码」的功能,何乐而不为呢。

实现

简单回顾position常用的值,怎样用就不说了,各位同学应该都熟透了。

取值功能版本
「inherit」继承2
「static」标准流2
「relative」相对定位2
「absolute」绝对定位2
「fixed」固定定位2
「sticky」粘性定位3

当值为sticky时将元素变成粘性定位「粘性定位」相对定位固定定位的合体,元素在特定阈值跨越前为相对定位,跨越后为固定定位。

主要是为了推广知识点,直接上代码,样式就不细磨了,将就看吧。

  • Top 1
  • Top 2
  • Normal
  • Bottom 1
  • Bottom 2
.ads-position {    overflow: auto;    position: relative;    width: 400px;    height: 280px;    outline: 1px solid #3c9;    ul {        padding: 200px 0;    }    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:stickytop/bottom:npx。上述Demo里5个节点都声明了position:sticky,但由于top/bottom赋值有所不同就产生了不同的吸附效果。

细心的同学可能发现这些元素在某些滚动时刻处于相对定位,在特定滚动时刻就处于固定定位

  • 第1个

  • top0px,滚动到容器顶部就固定

  • 第2个

  • top40px,滚动到距离容器顶部40px就固定

  • 第3个

  • :没有声明top/bottom,就一直保持相对定位

  • 第4个

  • bottom40px,滚动到距离容器底部40px就固定

  • 第5个

  • bottom0px,滚动到容器底部就固定

当然,换成leftright也一样能实现横向的吸附效果

注意

粘性定位的参照物并不一定是position:fixed

目标元素的任意祖先元素都未声明position:relative|absolute|fixed|sticky,才与position:fixed表现一致。

当离目标元素最近的祖先元素声明了position:relative|absolute|fixed|sticky目标元素就相对该祖先元素进行粘性定位

确认参照物跟position:absolute一致。

兼容

兼容性勉强还行,近2年发版的浏览器都能支持,SafariFirefox的兼容性还是挺赞的。有吸附效果需求的同学建议一试,要兼容IExplorer就算了。

感谢各位的阅读,以上就是"CSS怎么实现吸附效果"的内容了,经过本文的学习后,相信大家对CSS怎么实现吸附效果这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

定位 元素 效果 吸附 代码 目标 粘性 同学 容器 核心 浏览器 祖先 学习 浏览 不同 一致 位置 兼容性 内容 功能 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 数据库概论哪个老师讲的好 网络连接备用服务器地址是哪一个 揭阳网络安全协会是做什么的 手机在桌面显示未连接到服务器 uc浏览器删除服务器记录 基本数据库检测失败 我的世界服务器禁止 网络技术好处的三个论点 微云全球软件开发 临海市老章书签网络技术信息 服务器环境部署方式 邯郸市软件开发怎么样 博山配货站开票软件开发 网络安全法律保障 趋势网络安全版是否可以杀毒 互联网科技类外资 哈尔滨中北软件开发 网络安全综合实践活动主题方案 网络安全隐患评估报告 商业银行信贷数据库 揭阳网络安全协会是做什么的 互联网科技面谈 mysql 本地数据库改密 pdms数据库管理员的费用多少 软件开发质量管理体系模版 云服务器与物理服务器配置对比 网络技术方面的工作安排 路路通软件开发者 工具链软件开发工程师 软件开发有什么会议
0