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学习5 jQuery事件模型
Feb 07 Javascript
js RuntimeObject() 获取ie里面自定义函数或者属性的集合
Nov 23 Javascript
如何实现textarea里的不同文本显示不同颜色
Jan 20 Javascript
JS面试题---关于算法台阶的问题
Jul 26 Javascript
用Webpack构建Vue项目的实践
Nov 07 Javascript
Angularjs过滤器实现动态搜索与排序功能示例
Dec 13 Javascript
JavaScript执行环境及作用域链实例分析
Aug 01 Javascript
原生JS实现自定义下拉单选选择框功能
Oct 12 Javascript
JavaScript 浏览器对象模型BOM原理与常见用法实例分析
Dec 16 Javascript
ES6对象操作实例详解
May 23 Javascript
Element Backtop回到顶部的具体使用
Jul 27 Javascript
vue 使用原生组件上传图片的实例
Sep 08 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/10/09 PHP
PHP $_SERVER详解
2009/01/16 PHP
PHP开发者常犯的10个MySQL错误更正剖析
2012/01/30 PHP
Symfony2实现在doctrine中内置数据的方法
2016/02/05 PHP
Zend Framework教程之Zend_Layout布局助手详解
2016/03/04 PHP
Joomla框架实现字符串截取的方法示例
2017/07/18 PHP
js本身的局限性 别让javascript做太多事
2010/03/23 Javascript
js监听输入框值的即时变化onpropertychange、oninput
2011/07/13 Javascript
jQuery ajax MD5实现用户注册即时验证功能
2016/10/11 Javascript
简单的js计算器实现
2016/10/26 Javascript
详解如何使用Node.js编写命令工具——以vue-cli为例
2017/06/29 Javascript
详解vue + vuex + directives实现权限按钮的思路
2017/10/24 Javascript
微信小程序云开发之新手环境配置
2019/05/16 Javascript
你了解vue3.0响应式数据怎么实现吗
2019/06/07 Javascript
微信小程序嵌入腾讯视频源过程详解
2019/08/08 Javascript
深入理解令牌认证机制(token)
2019/08/22 Javascript
layer.open的自适应及居中及子页面标题的修改方法
2019/09/05 Javascript
JavaScript实现点击图片换背景
2020/11/20 Javascript
[01:38]【DOTA2亚洲邀请赛】Sumail——梦开始的地方
2017/03/03 DOTA
[00:47]DOTA2荣耀之路6:天火,天火!
2018/05/30 DOTA
简单介绍Python中的JSON模块
2015/04/08 Python
Python 一句话生成字母表的方法
2019/01/02 Python
python使用adbapi实现MySQL数据库的异步存储
2019/03/19 Python
Python读取stdin方法实例
2019/05/24 Python
python全栈要学什么 python全栈学习路线
2019/06/28 Python
python3.x提取中文的正则表达式示例代码
2019/07/23 Python
基于html和CSS3制作酷炫的导航栏
2015/09/23 HTML / CSS
维多利亚的秘密阿联酋官网:Victoria’s Secret阿联酋
2019/12/07 全球购物
随机分配座位,共50个学生,使学号相邻的同学座位不能相邻
2014/01/18 面试题
一套C++笔试题面试题
2012/06/06 面试题
销售经理竞聘书
2014/03/31 职场文书
优秀驾驶员先进事迹材料
2014/05/04 职场文书
高校群众路线教育实践活动剖析材料
2014/10/10 职场文书
2015年小学图书室工作总结
2015/05/18 职场文书
企业愿景口号
2015/12/25 职场文书
Python数据可视化之绘制柱状图和条形图
2021/05/25 Python