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 相关文章推荐
JQuery Tips(3) 关于$()包装集内元素的改变
Dec 14 Javascript
js不完美解决click和dblclick事件冲突问题
Jul 16 Javascript
JavaScript事件处理器中的event参数使用介绍
May 24 Javascript
深入浅析JavaScript中的arguments对象(强力推荐)
Jun 03 Javascript
JS提示:Uncaught SyntaxError:Unexpected token ) 错误的解决方法
Aug 19 Javascript
微信小程序开发之视频播放器 Video 弹幕 弹幕颜色自定义实例
Dec 08 Javascript
懒加载实现的分页&amp;&amp;网站footer自适应
Dec 21 Javascript
详解微信小程序Radio选中样式切换
Jul 06 Javascript
JS实现简单的点赞与踩功能示例
Dec 05 Javascript
解决微信小程序调用moveToLocation失效问题【超简单】
Apr 12 Javascript
通过实例了解js函数中参数的传递
Jun 15 Javascript
Layui数据表格判断编辑输入的值,是否为我需要的类型详解
Oct 26 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
玩转图像函数库―常见图形操作
2006/09/03 PHP
用PHP制作静态网站的模板框架(四)
2006/10/09 PHP
如何使用纯PHP实现定时器任务(Timer)
2015/07/31 PHP
使用composer安装使用thinkphp6.0框架问题【视频教程】
2019/10/01 PHP
Laravel 中使用简单的方法跟踪用户是否在线(推荐)
2019/10/30 PHP
IE/FireFox具备兼容性的拖动代码
2007/08/13 Javascript
解决javascript:window.close()在chrome,Firefox下失效的问题
2013/05/07 Javascript
JS解决ie6下png透明的方法实例
2013/08/02 Javascript
js为空或不是对象问题的快速解决方法
2013/12/11 Javascript
javascript排序函数实现数字排序
2015/06/26 Javascript
原生JS实现图片轮播效果
2016/12/26 Javascript
NodeJS仿WebApi路由示例
2017/02/28 NodeJs
JavaScript基本语法_动力节点Java学院整理
2017/06/26 Javascript
vue如何判断dom的class
2018/04/26 Javascript
以v-model与promise两种方式实现vue弹窗组件
2018/05/21 Javascript
vue.js父子组件通信动态绑定的实例
2018/09/28 Javascript
nodejs基础之buffer缓冲区用法分析
2018/12/26 NodeJs
通过js示例讲解时间复杂度与空间复杂度
2019/08/06 Javascript
Vue关于组件化开发知识点详解
2020/05/13 Javascript
vue pages 多入口项目 + chainWebpack 全局引用缩写说明
2020/09/21 Javascript
python里将list中元素依次向前移动一位
2014/09/12 Python
python实现的文件夹清理程序分享
2014/11/22 Python
python3实现UDP协议的服务器和客户端
2017/06/14 Python
Python+Dlib+Opencv实现人脸采集并表情判别功能的代码
2020/07/01 Python
兰芝美国网上商城:购买LANEIGE睡眠面膜等
2017/06/30 全球购物
请编写一个 C 函数,该函数在给定的内存区域搜索给定的字符,并返回该字符所在位置索引值
2014/09/15 面试题
关于赌博的检讨书
2014/01/24 职场文书
电大本科自我鉴定
2014/02/05 职场文书
生产部厂长职位说明书
2014/03/03 职场文书
班主任个人工作反思
2014/04/28 职场文书
2014年物流工作总结
2014/11/25 职场文书
2016公司年会通知范文
2015/04/25 职场文书
vite+vue3.0+ts+element-plus快速搭建项目的实现
2021/06/24 Vue.js
Python超详细分步解析随机漫步
2022/03/17 Python
一文搞懂Java中的注解和反射
2022/06/21 Java/Android
Oracle查看表空间使用率以及爆满解决方案详解
2022/07/23 Oracle