javascript实现固定侧边栏


Posted in Javascript onFebruary 09, 2021

用javascript实现固定侧边栏,供大家参考,具体内容如下

正在学习大前端中,有代码和思路不规范不正确的地方往多多包涵,感谢指教

我们在逛某某商城的时候,或者某些网站的时候,通常会遇到有个东西叫做侧边栏,这个东西会跟随我们浏览器浏览长度来进行变化1,从而实现相对窗口的固定位置1

**代码如下**

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>Title</title>
 <style>
 .cm{
 position: absolute;
 top: 300px;
 margin-left: 1150px;
 width: 60px;
 height: 130px;
 background-color: pink;
 }
 .w{
 margin: 10px auto;
 width: 80%;
 }
 .head{
 height: 200px;
 background-color: blue;
 }
 .banner{
 height: 400px;
 background-color: green;
 }
 .main{
 height: 1000px;
 background-color: hotpink;
 }
 span {
 display: none;
 /*position: absolute;
 bottom: 0;*/
 }
 </style>
</head>
<body>
 <div class="cm">
 <span class="backTop">返回顶部</span>
 </div>
 <div class="head w">头部区域</div>
 <div class="banner w">banner区域</div>
 <div class="main w">主体区域</div>
 <script>
 var cm=document.querySelector('.cm')
 var banner=document.querySelector('.banner')
 /*console.log(banner.offsetTop)*/
 //被卷曲头部的大小位置,写在外面
 var bannertop=banner.offsetTop
 var cmtop=cm.offsetTop-bannertop
 var main=document.querySelector('.main')
 var goback=document.querySelector('.backTop')
 var maintop=main.offsetTop
 document.addEventListener('scroll',function () {
 //页面被卷去的头部
 /*console.log(window.pageYOffset)*/
 //当卷曲头部大于214,侧边栏改为固定
 if (window.pageYOffset>bannertop){
 cm.style.position='fixed'
 cm.style.top=cmtop+'px'
 }else {
 cm.style.position='absolute'
 cm.style.top='300px'
 }
 if (window.pageYOffset>maintop){
 goback.style.display='block'
 }else {
 goback.style.display='none'
 }
 })
 </script>
</body>
</html>

演示效果

javascript实现固定侧边栏

代码解释

这里用到了document的添加事件scroll,浏览器滚动事件,当滚动时,触发函数。

这里设置了一个变量为bannerTop,是中间那个绿色模块顶部距离页面最上方的距离,然后定义cmtop这个变量,cm为侧边栏到顶部的距离,cmtop=bannerTop-cm.offsetTop。然后判断页面卷曲的长度是否大于中间那个模块距离顶部的距离,意思的页面是否划到中间这个模块,如果划到了中间这个模块,那么让侧边栏的位置固定,然后侧边栏距离顶部的距离相应改变,这里这个情况因为侧边栏与中间拿块是相对静止,所以,未卷到中间区域时,cmtop的值是恒定不变的,当卷到中间区域时,banner。Top的值变为负值,所以cmtop的值在相应的增加,并且把这个增加的值传给侧边栏距离顶部的值,这也就出现了划到中间区域,侧边栏相对静止的情况。如果没有滑倒中间区域,那么侧边栏的位置还是默认的位置。

然后如果划到了最后一个区域则出现‘回到顶部'这四个字在侧边栏上。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
解决js正则匹配换行问题实现代码
Dec 10 Javascript
jQuery获得内容和属性方法及示例
Dec 02 Javascript
JavaScript 判断用户输入的邮箱及手机格式是否正确
Dec 08 Javascript
JavaScript开发人员的10个关键习惯小结
Dec 05 Javascript
javascript中数组的定义及使用实例
Jan 21 Javascript
jQuery根据ID、CLASS、等获取对象的实例
Dec 04 Javascript
Node.js利用Net模块实现多人命令行聊天室的方法
Dec 23 Javascript
JS实现列表页面隔行变色效果
Mar 25 Javascript
bootstrap多层模态框滚动条消失的问题
Jul 21 Javascript
使用vue制作FullPage页面滚动效果
Aug 21 Javascript
基于vue实现圆形菜单栏组件
Jul 05 Javascript
package.json配置文件构成详解
Aug 27 Javascript
JavaScript实现前端倒计时效果
Feb 09 #Javascript
Vue+Bootstrap实现简易学生管理系统
Feb 09 #Vue.js
JavaScript 获取滚动条位置并将页面滑动到锚点
Feb 08 #Javascript
详解Vue的七种传值方式
Feb 08 #Vue.js
Handtrack.js库实现实时监测手部运动(推荐)
Feb 08 #Javascript
js 执行上下文和作用域的相关总结
Feb 08 #Javascript
微信小程序tab左右滑动切换功能的实现代码
Feb 08 #Javascript
You might like
用PHP实现ODBC数据分页显示一例
2006/10/09 PHP
php中array_fill函数的实例用法
2021/03/02 PHP
IE6与IE7中,innerHTML获取param的区别
2009/03/15 Javascript
IE6,IE7,IE8下使用Javascript记录光标选中范围(已补全)
2011/08/28 Javascript
jquery focus(fn),blur(fn)方法实例代码
2011/12/16 Javascript
打豆豆小游戏 用javascript编写的[打豆豆]小游戏
2013/01/08 Javascript
div模拟选择框示例代码
2013/11/03 Javascript
基于javascript编写简单日历
2016/05/02 Javascript
大型JavaScript应用程序架构设计模式
2016/06/29 Javascript
Vue.js第二天学习笔记(vue-router)
2016/12/01 Javascript
基于Vue实现tab栏切换内容不断实时刷新数据功能
2017/04/13 Javascript
详解vue2父组件传递props异步数据到子组件的问题
2017/06/29 Javascript
Nodejs 复制文件/文件夹的方法
2017/08/24 NodeJs
node.js实现的装饰者模式示例
2017/09/06 Javascript
JavaScript实现修改伪类样式
2017/11/27 Javascript
React Native 图片查看组件的方法
2018/03/01 Javascript
手动下载Chrome并解决puppeteer无法使用问题
2018/11/12 Javascript
Node.js path模块,获取文件后缀名操作
2020/11/07 Javascript
[49:13]DOTA2上海特级锦标赛C组资格赛#1 OG VS LGD第一局
2016/02/27 DOTA
Python的Flask框架中使用Flask-Migrate扩展迁移数据库的教程
2016/06/14 Python
python 2.7.14安装图文教程
2018/04/08 Python
python 获取文件下所有文件或目录os.walk()的实例
2018/04/23 Python
强悍的Python读取大文件的解决方案
2019/02/16 Python
通过shell+python实现企业微信预警
2019/03/07 Python
python解释器spython使用及原理解析
2019/08/24 Python
python cv2.resize函数high和width注意事项说明
2020/07/05 Python
html5 利用canvas实现超级玛丽简单动画
2013/09/06 HTML / CSS
法律工作求职自荐信
2013/10/31 职场文书
汽车专业毕业生自荐信
2013/11/03 职场文书
俞敏洪励志演讲稿
2014/04/29 职场文书
财务人员担保书
2014/05/13 职场文书
倡议书格式
2014/08/30 职场文书
教师思想作风整顿个人剖析材料
2014/10/10 职场文书
学校三八妇女节活动总结
2015/02/06 职场文书
小学五一劳动节活动总结
2015/02/09 职场文书
我的1919观后感
2015/06/03 职场文书