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 相关文章推荐
DOM 脚本编程中的兄弟节点
Oct 31 Javascript
jQuery学习笔记 更改jQuery对象
Sep 19 Javascript
基于OO的动画附加插件,可以实现弹跳、渐隐等动画效果 分享
Jun 24 Javascript
javascript的document.referrer浏览器支持、失效情况总结
Jul 18 Javascript
jquery 实现返回顶部功能
Nov 17 Javascript
JavaScript中arguments和this对象用法分析
Aug 08 Javascript
AjaxFileUpload.js实现异步上传文件功能
Apr 19 Javascript
js变量值传到php过程详解 将php解析成数据
Jun 26 Javascript
layui 对弹窗 form表单赋值的实现方法
Sep 04 Javascript
Vue中错误图片的处理的实现代码
Nov 07 Javascript
JavaScript实现字符串与HTML格式相互转换
Mar 17 Javascript
如何利用JavaScript编写更好的条件语句详解
Aug 10 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根据传来的16进制颜色代码自动改变背景颜色
2014/06/13 PHP
10个简化PHP开发的工具
2014/12/25 PHP
PHP判断JSON对象是否存在的方法(推荐)
2016/07/06 PHP
JQuery 表格操作(交替显示、拖动表格行、选择行等)
2009/07/29 Javascript
jQuery学习笔记(2)--用jquery实现各种模态提示框代码及项目构架
2013/04/08 Javascript
JavaScript获取客户端计算机硬件及系统等信息的方法
2014/01/02 Javascript
用jQuery与JSONP轻松解决跨域访问的问题
2014/02/04 Javascript
JavaScript学习笔记之JS对象
2015/01/22 Javascript
JavaScript使用Max函数返回两个数字中较大数的方法
2015/04/06 Javascript
JavaScript学习笔记之数组的增、删、改、查
2016/03/23 Javascript
微信小程序 登录的简单实现
2017/04/19 Javascript
在JS循环中使用async/await的方法
2018/10/12 Javascript
Vue批量图片显示时遇到的路径被解析问题
2019/03/28 Javascript
js+html5 canvas实现ps钢笔抠图
2019/04/28 Javascript
JavaScript实现图片放大镜效果
2019/06/27 Javascript
[55:35]DOTA2-DPC中国联赛 正赛 CDEC vs Dragon BO3 第二场 1月22日
2021/03/11 DOTA
分享Python开发中要注意的十个小贴士
2016/08/30 Python
使用pandas模块读取csv文件和excel表格,并用matplotlib画图的方法
2018/06/22 Python
Python完成毫秒级抢淘宝大单功能
2019/06/06 Python
详解python调用cmd命令三种方法
2019/07/08 Python
django中使用事务及接入支付宝支付功能
2019/09/15 Python
opencv3/python 鼠标响应操作详解
2019/12/11 Python
HTML5新增加标签和功能概述
2016/09/05 HTML / CSS
英国领先的NHS批准的在线药店:Pharmacy2U
2017/01/06 全球购物
在线购买世界上最好的酒:BoozeBud
2018/06/07 全球购物
西班牙最大的婴儿用品网上商店:Bebitus
2019/05/30 全球购物
毕业生教师求职信
2013/10/20 职场文书
大学生职业生涯设计书
2014/01/02 职场文书
工程管理专业毕业生自荐信
2014/01/24 职场文书
房屋出售协议书
2014/04/10 职场文书
《骑牛比赛》教后反思
2014/04/22 职场文书
奥巴马获胜演讲稿
2014/05/15 职场文书
群众路线剖析材料(四风问题)
2014/10/08 职场文书
党员违纪检讨书怎么写
2014/11/01 职场文书
水知道答案观后感
2015/06/08 职场文书
2016廉洁从业学习心得体会
2016/01/19 职场文书