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 相关文章推荐
如何在Web页面上直接打开、编辑、创建Office文档
Mar 12 Javascript
5秒后跳转效果(setInterval/SetTimeOut)
May 03 Javascript
原生javascript实现Tab选项卡切换功能
Jan 12 Javascript
jquery点击缩略图切换视频播放特效代码分享
Sep 15 Javascript
快速解决jquery.touchSwipe左右滑动和垂直滚动条冲突
Apr 15 Javascript
jQuery基本筛选选择器实例代码
Feb 06 Javascript
vue小白入门教程
Apr 02 Javascript
jQuery实现百度图片移入移出内容提示框上下左右移动的效果
Jun 05 jQuery
小程序实现选择题选择效果
Nov 04 Javascript
d3绘制基本的柱形图的实现代码
Dec 12 Javascript
vue-cli系列之vue-cli-service整体架构浅析
Jan 14 Javascript
微信小程序调用后台service教程详解
Nov 06 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创建多级目录代码
2008/06/05 PHP
PHP iconv 函数转gb2312的bug解决方法
2009/10/11 PHP
php in_array 函数使用说明与in_array需要注意的地方说明
2010/04/13 PHP
PHP实现获取中英文首字母
2015/06/19 PHP
php实现的简单美国商品税计算函数
2015/07/13 PHP
php封装的连接Mysql类及用法分析
2015/12/10 PHP
PHP基于自增数据如何生成不重复的随机数示例
2017/05/19 PHP
Linux下源码包安装Swoole及基本使用操作图文详解
2019/04/02 PHP
可以将word转成html的js代码
2010/04/11 Javascript
使用UglifyJS合并/压缩JavaScript的方法
2012/03/07 Javascript
用jquery实现输入框获取焦点消失文字
2013/04/27 Javascript
简单的代码实现jquery定时器
2013/11/17 Javascript
基于JQuery实现的Select级联
2014/01/27 Javascript
JS脚本实现动态给标签控件添加事件的方法
2016/06/02 Javascript
AngularJS基础 ng-model 指令详解及示例代码
2016/08/02 Javascript
Angular ng-repeat遍历渲染完页面后执行其他操作详细介绍
2016/12/13 Javascript
js Canvas绘制圆形时钟效果
2017/02/17 Javascript
JavaScript中的普通函数和箭头函数的区别和用法详解
2017/03/21 Javascript
Javascript 一些需要注意的细节(必看篇)
2017/07/08 Javascript
Vuex 单状态库与多模块状态库详解
2018/12/11 Javascript
微信小程序 bindtap 传参的实例代码
2020/02/21 Javascript
jquery实现图片放大镜效果
2020/12/23 jQuery
详解python的webrtc库实现语音端点检测
2017/05/31 Python
Python之py2exe打包工具详解
2017/06/14 Python
详解python实现读取邮件数据并下载附件的实例
2017/08/03 Python
scrapy-redis的安装部署步骤讲解
2019/02/27 Python
Django继承自带user表并重写的例子
2019/11/18 Python
python3 dict ndarray 存成json,并保留原数据精度的实例
2019/12/06 Python
使用python批量转换文件编码为UTF-8的实现
2020/04/03 Python
python tkinter实现下载进度条及抖音视频去水印原理
2021/02/07 Python
成教自我鉴定
2013/10/27 职场文书
母亲七十大寿答谢词
2014/01/18 职场文书
市场专员岗位职责
2014/02/14 职场文书
同意落户证明
2015/06/19 职场文书
大学生暑期实践报告
2015/07/13 职场文书
Python sklearn分类决策树方法详解
2022/09/23 Python