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 相关文章推荐
Code:findPosX 和 findPosY
Dec 20 Javascript
JSON 学习之完全手册 图文
May 29 Javascript
使用JavaScript动态设置样式实现代码(2)
Jan 25 Javascript
jquery checkbox实现单选小例
Nov 27 Javascript
js使用正则实现ReplaceAll全部替换的方法
Aug 22 Javascript
javascript正则表达式中分组详解
Jul 17 Javascript
bootstrap下拉菜单使用方法解析
Jan 13 Javascript
详谈js中数组(array)和对象(object)的区别
Feb 27 Javascript
vue 之 .sync 修饰符示例详解
Apr 21 Javascript
JavaScript实现多态和继承的封装操作示例
Aug 20 Javascript
vue 循环加载数据并获取第一条记录的方法
Sep 26 Javascript
ionic使用angularjs表单验证(模板验证)
Dec 12 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
smarty模板引擎之配置文件数据和保留数据
2015/03/30 PHP
php 解决substr()截取中文字符乱码问题
2016/07/18 PHP
用javascript实现的图片马赛克后显示并切换加文字功能
2007/04/21 Javascript
js性能优化 如何更快速加载你的JavaScript页面
2012/03/17 Javascript
setTimeout函数兼容各主流浏览器运行执行效果实例
2013/06/13 Javascript
JS和Jquery获取和修改label的值的示例代码
2014/01/15 Javascript
微信浏览器内置JavaScript对象WeixinJSBridge使用实例
2015/05/25 Javascript
使用Raygun对Node.js应用进行错误处理的方法
2015/06/23 Javascript
Bootstrap学习笔记 轮播(Carousel)插件
2017/03/21 Javascript
荐书|您有一份JavaScript书单待签收
2017/07/21 Javascript
JS Input里添加小图标的两种方法
2017/11/11 Javascript
JavaScript防止全局变量污染的方法总结
2018/08/02 Javascript
创建echart多个联动的示例代码
2018/11/23 Javascript
Vue多组件仓库开发与发布详解
2019/02/28 Javascript
Vue实现拖放排序功能的实例代码
2019/07/08 Javascript
Vuex的热更替如何实现
2020/06/05 Javascript
[02:40]DOTA2殁境神蚀者 英雄基础教程
2013/11/26 DOTA
[00:12]DAC SOLO赛卫冕冠军 VG.Paparazi灬展现SOLO技巧
2018/04/06 DOTA
python相似模块用例
2016/03/04 Python
详解python中的hashlib模块的使用
2019/04/22 Python
Python collections模块使用方法详解
2019/08/28 Python
python 用 xlwings 库 生成图表的操作方法
2019/12/22 Python
Pycharm debug调试时带参数过程解析
2020/02/03 Python
Python实现的北京积分落户数据分析示例
2020/03/27 Python
关于tf.matmul() 和tf.multiply() 的区别说明
2020/06/18 Python
普天C++笔试题
2016/03/20 面试题
玲玲的画教学反思
2014/02/04 职场文书
个人批评与自我批评总结
2014/10/17 职场文书
信访工作汇报材料
2014/10/27 职场文书
寒山寺导游词
2015/02/03 职场文书
学术会议通知
2015/04/15 职场文书
2015年公务员个人工作总结
2015/04/24 职场文书
学法用法心得体会(2016推荐篇)
2016/01/21 职场文书
解决goland 导入项目后import里的包报红问题
2021/05/06 Golang
python实现会员管理系统
2022/03/18 Python
redis protocol通信协议及使用详解
2022/07/15 Redis