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 相关文章推荐
javascript据option的value值快速设定初始的selected选项
Aug 13 Javascript
热点新闻滚动特效的js代码
Aug 17 Javascript
删除节点的jquery代码
Jan 13 Javascript
javascript中setTimeout的问题解决方法
May 08 Javascript
javascript常用方法总结
May 14 Javascript
AngularJS入门心得之directive和controller通信过程
Jan 25 Javascript
jQuery中设置form表单中action值的实现方法
May 25 Javascript
JS全局变量和局部变量最新解析
Jun 24 Javascript
微信小程序 弹框和模态框实现代码
Mar 10 Javascript
JS实现点击下拉菜单把选择的内容同步到input输入框内的实例
Jan 23 Javascript
vue.js数据绑定操作详解
Apr 23 Javascript
使用vant的地域控件追加全部选项
Nov 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之COOKIE支持详解
2010/09/20 PHP
PHP以及MYSQL日期比较方法
2012/11/29 PHP
PHP错误处理函数
2016/04/03 PHP
PHP快速推送微信模板消息
2017/04/14 PHP
JavaScript语言中的Literal Syntax特性分析
2007/03/08 Javascript
零基础学JavaScript最新动画教程+iso光盘下载
2008/01/22 Javascript
利用js获取服务器时间的两个简单方法
2010/01/08 Javascript
从零开始学习jQuery (十一) 实战表单验证与自动完成提示插件
2011/02/23 Javascript
js监听键盘事件示例代码
2013/07/26 Javascript
jQuery中校验时间格式的正则表达式小结
2013/09/22 Javascript
JavaScript格式化日期时间的方法和自定义格式化函数示例
2014/04/04 Javascript
JScript中的条件注释详解
2015/04/24 Javascript
轻松学习jQuery插件EasyUI EasyUI创建CRUD应用
2015/11/30 Javascript
JavaScript驾驭网页-DOM
2016/03/24 Javascript
JavaScript中的Object对象学习教程
2016/05/20 Javascript
JavaScript新增样式规则(推荐)
2016/07/19 Javascript
Nodejs抓取html页面内容(推荐)
2016/08/11 NodeJs
全面解析标签页的切换方式
2016/08/21 Javascript
JavaScript 控制字体大小设置的方法
2016/11/23 Javascript
Jil,高效的json序列化和反序列化库
2017/02/15 Javascript
canvas绘制多边形
2017/02/24 Javascript
JavaScript实现form表单的多文件上传
2020/03/27 Javascript
javascript简写常用的12个技巧(可以大大减少你的js代码量)
2020/03/28 Javascript
ajax请求+vue.js渲染+页面加载的示例
2018/02/11 Javascript
vue实现图片滚动的示例代码(类似走马灯效果)
2018/03/03 Javascript
Babel 入门教程学习笔记
2018/06/13 Javascript
vue自定义正在加载动画的例子
2019/11/14 Javascript
通过GASP让vue实现动态效果实例代码详解
2019/11/24 Javascript
[02:27]DOTA2英雄基础教程 莱恩
2014/01/17 DOTA
Python3编程实现获取阿里云ECS实例及监控的方法
2017/08/18 Python
python爬虫获取京东手机图片的图文教程
2017/12/29 Python
python保存数据到本地文件的方法
2018/06/23 Python
Anaconda之conda常用命令介绍(安装、更新、删除)
2019/10/06 Python
Django自定义YamlField实现过程解析
2020/11/11 Python
雷蛇美国官网:Razer
2020/04/03 全球购物
通知函格式范文
2015/04/27 职场文书