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 获取滚动条高度示例代码
Oct 24 Javascript
函数式 JavaScript(一)简介
Jul 07 Javascript
js判断登录与否并确定跳转页面的方法
Jan 30 Javascript
jQuery常用且重要方法汇总
Jul 13 Javascript
angular十大常见问题
Mar 07 Javascript
JavaScript标准对象_动力节点Java学院整理
Jun 27 Javascript
[jQuery] 事件和动画详解
Mar 05 jQuery
基于three.js实现的3D粒子动效实例代码
Apr 09 Javascript
微信小程序图片加载失败时替换为默认图片的方法
Dec 09 Javascript
JS实现普通轮播图特效
Jan 01 Javascript
解决echarts图表使用v-show控制图表显示不全的问题
Jul 19 Javascript
Javascript新手入门之字符串拼接与变量的应用
Dec 03 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统计目录中文件以及目录中目录大小的方法
2016/01/09 PHP
Yii视图操作之自定义分页实现方法
2016/07/14 PHP
图片延迟加载的实现代码(模仿懒惰)
2013/03/29 Javascript
UpdatePanel和Jquery冲突的解决方法
2013/04/01 Javascript
JavaScript中的操作符==与===介绍
2014/12/31 Javascript
jquery中attr和prop的区别分析
2015/03/16 Javascript
关于javascript的一些知识以及循环详解
2016/09/12 Javascript
微信JS-SDK自定义分享功能实例详解【分享给朋友/分享到朋友圈】
2016/11/25 Javascript
jquery实现放大镜简洁代码(推荐)
2017/06/08 jQuery
微信小程序获取手机网络状态的方法【附源码下载】
2017/12/08 Javascript
微信小程序开发之路由切换页面重定向问题
2018/09/18 Javascript
JS使用对象的defineProperty进行变量监控操作示例
2019/02/02 Javascript
Vue项目引发的「过滤器」使用教程
2019/03/12 Javascript
vue以组件或者插件的形式实现throttle或者debounce
2019/05/22 Javascript
Vue中el-form标签中的自定义el-select下拉框标签功能
2020/04/20 Javascript
Python数组定义方法
2016/04/13 Python
Python实现改变与矩形橡胶的线条的颜色代码示例
2018/01/05 Python
python实现微信远程控制电脑
2018/02/22 Python
Centos部署django服务nginx+uwsgi的方法
2019/01/02 Python
pyqt5 QProgressBar清空进度条的实例
2019/06/21 Python
tensorflow入门:TFRecordDataset变长数据的batch读取详解
2020/01/20 Python
python异常处理try except过程解析
2020/02/03 Python
django实现日志按日期分割
2020/05/21 Python
Python如何爬取qq音乐歌词到本地
2020/06/01 Python
Python中过滤字符串列表的方法
2020/12/22 Python
CSS3毛玻璃效果(blur)有白边问题的解决方法
2016/11/15 HTML / CSS
Html5 Canvas 实现一个“刮刮乐”游戏
2019/09/05 HTML / CSS
Html5实现移动端、PC端 刮刮卡效果
2016/06/30 HTML / CSS
幼儿园教师国培感言
2014/02/02 职场文书
2014年终工作总结范本
2014/12/15 职场文书
新学期开学标语2015
2015/07/16 职场文书
先进个人主要事迹怎么写
2015/11/04 职场文书
2016年入党心得体会范文
2016/01/23 职场文书
Python爬虫之爬取哔哩哔哩热门视频排行榜
2021/04/28 Python
浅谈PHP7中的一些小技巧
2021/05/29 PHP
P站美图推荐——变身女主角特辑
2022/03/20 日漫