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 相关文章推荐
Google Suggest ;-) 基于js的动态下拉菜单
Oct 11 Javascript
jQuery 隔行换色 支持键盘上下键,按Enter选定值
Aug 02 Javascript
javascript的函数、创建对象、封装、属性和方法、继承
Mar 10 Javascript
禁止选中文字兼容IE、Chrome、FF等
Sep 04 Javascript
使用CSS和jQuery模拟select并附提交后取得数据的代码
Oct 18 Javascript
AngularJS基础 ng-click 指令示例代码
Aug 01 Javascript
bootstrap 下拉多选框进行多选传值问题代码分析
Feb 14 Javascript
jQuery实现的事件绑定功能基本示例
Oct 11 jQuery
微信小程序地图(map)组件点击(tap)获取经纬度的方法
Jan 10 Javascript
详解JS判断页面是在手机端还是在PC端打开的方法
Apr 26 Javascript
v-slot和slot、slot-scope之间相互替换实例
Sep 04 Javascript
Nest.js散列与加密实例详解
Feb 24 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
咖啡豆要不要放冰箱的原因
2021/03/04 冲泡冲煮
缅甸的咖啡简史
2021/03/04 咖啡文化
PHP 中检查或过滤IP地址的实现代码
2011/11/27 PHP
通过5个php实例细致说明传值与传引用的区别
2012/08/08 PHP
PHP图片处理之使用imagecopy函数添加图片水印实例
2014/11/19 PHP
PHP 根据key 给二维数组分组
2016/12/09 PHP
Javascript 去除数组的重复元素
2010/05/04 Javascript
jquery 的 $(&quot;#id&quot;).html() 无内容的解决方法
2010/06/07 Javascript
15个款优秀的 jQuery 图片特效插件推荐
2011/11/21 Javascript
如何让你的Lightbox支持滚轮缩放及Base64图片
2014/12/04 Javascript
谈谈impress.js初步理解
2015/09/09 Javascript
Jquery+Ajax+PHP+MySQL实现分类列表管理(下)
2015/10/28 Javascript
基于BootStrap Metronic开发框架经验小结【四】Bootstrap图标的提取和利用
2016/05/12 Javascript
Vue计算属性的学习笔记
2017/03/22 Javascript
基于angular实现三级联动的生日插件
2017/05/12 Javascript
基于layer.js实现收货地址弹框选择然后返回相应的地址信息
2017/05/26 Javascript
微信小程序富文本渲染引擎的详解
2017/09/30 Javascript
用vue写一个仿简书的轮播图的示例代码
2018/03/13 Javascript
微信小程序多音频播放进度条问题
2018/08/28 Javascript
layui自定义插件citySelect实现省市区三级联动选择
2019/07/26 Javascript
Vue的生命周期操作示例
2019/09/17 Javascript
jquery实现拖拽小方块效果
2020/12/10 jQuery
python编码最佳实践之总结
2016/02/14 Python
Python如何获得百度统计API的数据并发送邮件示例代码
2019/01/27 Python
Python进程,多进程,获取进程id,给子进程传递参数操作示例
2019/10/11 Python
解决jupyter notebook 前面书写后面内容消失的问题
2020/04/13 Python
python利用递归方法实现求集合的幂集
2020/09/07 Python
python 将html转换为pdf的几种方法
2020/12/29 Python
Python之多进程与多线程的使用
2021/02/23 Python
绿色美容,有机护肤品和化妆品:Safe & Chic
2018/10/29 全球购物
阿迪达斯香港官网:adidas香港
2019/11/09 全球购物
公司JAVA开发面试题
2015/04/02 面试题
中层干部竞争上岗演讲稿
2014/01/13 职场文书
法人委托书的范本格式
2014/09/11 职场文书
CSS实现切角+边框+投影+内容背景色渐变效果
2021/11/01 HTML / CSS
解决IIS7下无法绑定https主机的问题
2022/04/29 Servers