首页IT科技css x(css效果之吸顶效果)

css x(css效果之吸顶效果)

时间2025-09-07 11:15:10分类IT科技浏览5329
导读:使用定位实现 一般我们使用position:sticky来进行实现 他相当于relative和fixed相结合 在页面滚动过程中,含有粘性定位的元素到父元素的距离达到一定要求的时候,他的属性就会由relative变为fixed...

使用定位实现

一般我们使用position:sticky来进行实现 他相当于relative和fixed相结合 在页面滚动过程中                ,含有粘性定位的元素到父元素的距离达到一定要求的时候                         ,他的属性就会由relative变为fixed <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{ position: relative; width: 200px; height: 200px; border: 1px solid black; overflow: auto; } #header{ height: 100px; position:sticky; top: 0; background-color: red; } </style> </head> <body> <div id="container"> <div id="header"> 固定的头部 </div> <div id="inner"> 你好 <br> ... </div> </div> </body>

请多写几行 你好 <br>然后         ,运行demo                ,我们会发现头部固定了

缺点

当前代码的兼容性不太好 不会触发BFC 点击 样式表 zindex 无效                。行内 style 写有效                         。

获取DOM位置实现

他的核心是当达到一定的条件后                        ,将盒子的定位属性改为fixed

条件

滚动的元素和固定的元素之间的差值为0的时候

步骤

我们可以使用offsetTop这个属性来进行获取相关的位置         ,他是用来获取相对于父级定位的偏移量的属性        ,关于offsetTop这个属性                        ,点击 监听滚动事件                 ,每一次滚动获取滚动条滚动的距离        ,关于scrollTop 点击 滚动的距离与偏移的距离作对比                        ,如果滚动的距离大于等于偏移的距离                 ,那么直接设置吸顶盒子的属性为fixed

代码

<head> <style> *{ margin: 0; padding: 0; } #container { width: 200px; height: 200px; border: 1px solid black; overflow: auto; position: relative; } #header { height: 100px; background-color: red; width: inherit; } </style> </head> <body> <div id="container"> <div id="header"> 固定的头部 </div> <div id="inner"> 你好 <br> ... </div> </div> <script> // 选中要吸顶的盒子 const headerEle = document.getElementById("header") // 获取盒子的距离 const _headerTop = headerEle.offsetTop const _container = document.getElementById("container") // 监听事件 _container.onscroll = () => { const _scrollTop = _container.scrollTop console.log(_scrollTop, _headerTop) // 距离比较 if (_scrollTop >= _headerTop) { headerEle.style.position = "fixed" headerEle.style.top = 0 headerEle.style.left = 0 } } </script> </body>

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
网站如何收录(怎么做网站收录)