用javascript实现固定侧边栏的简单实例
Admin 2021-04-06 群英技术资讯 1665 次浏览
我们在浏览网站时,经常会看到网站页面的侧边栏随着网站页面滑动而滚动,当滑动到banner部分,侧边栏就不在固定不动,而且还会有放回顶部的提示,那么这是如何实现呢?侧边栏也是前端开发比较经常遇到的需求,这篇文章就介绍如何用javascript实现一个简单固定侧边栏。
**代码如下**
<!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>
演示效果

代码解释
这里用到了document的添加事件scroll,浏览器滚动事件,当滚动时,触发函数。
这里设置了一个变量为bannerTop,是中间那个绿色模块顶部距离页面最上方的距离,然后定义cmtop这个变量,cm为侧边栏到顶部的距离,cmtop=bannerTop-cm.offsetTop。然后判断页面卷曲的长度是否大于中间那个模块距离顶部的距离,意思的页面是否划到中间这个模块,如果划到了中间这个模块,那么让侧边栏的位置固定,然后侧边栏距离顶部的距离相应改变,这里这个情况因为侧边栏与中间拿块是相对静止,所以,未卷到中间区域时,cmtop的值是恒定不变的,当卷到中间区域时,banner。Top的值变为负值,所以cmtop的值在相应的增加,并且把这个增加的值传给侧边栏距离顶部的值,这也就出现了划到中间区域,侧边栏相对静止的情况。如果没有滑倒中间区域,那么侧边栏的位置还是默认的位置。
然后如果划到了最后一个区域则出现‘回到顶部'这四个字在侧边栏上。
以上就是一个简易的javascript侧边栏实例,希望对大家了解固定侧边栏的实现有所帮助。更多JavaScript内容可以关注其他文章。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
对于新手来说,可能vue的生命周期会比较难理解,下面小编就给大家介绍生命周期的概念、vue生命周期函数等等,有这方面学习需要的朋友可以了解一下。
node安装失败2503的解决办法:1、在WIN搜索框搜索powershell并右击;2、点击使用管理员身份运行powershell命令行工具;3、输入“msiexec /package node”;4、打开安装包,根据提示安装即可。
目录Storage本地化存储localStoragesessionStorageStrorage本地存储实例在model文件夹下面新建一个storage.js创建storeStorage本地化存储存储优点:空间更大:cookie为4kb,storage为5mb节省网络流量:不会发送数据到服务器,直接存储在本地快速显示:
js实现注册页面校验功能 本文实例为大家分享了js实现注册页面的校验代码,供大家参考,具体内容如下 基本操作 document.getElementById():获取页面元素alert():向页面弹出提示框.innerHTML:操作页面某个元素的内容,可以获取,也可以赋值.document.write():向页面中写内容. 本案例实现注册表单的基本验证功能,主要实现非空验证.重复输入验证.邮箱验证(正则验证),通过alert提示对话框给予用户提示信息.并且当用户输入非法时阻止表单提交. 步骤分析: 第一步:绑定事件(on
现在很多商品都有售后评价,那么五星好评的功能是怎样实现的呢?这篇文章就给大家分享一下用用js实现简易的五星好评功能,实现效果及代码如下,感兴趣的朋友就继续往下看吧。
成为群英会员,开启智能安全云计算之旅
立即注册关注或联系群英网络
7x24小时售前:400-678-4567
7x24小时售后:0668-2555666
24小时QQ客服
群英微信公众号
CNNIC域名投诉举报处理平台
服务电话:010-58813000
服务邮箱:service@cnnic.cn
投诉与建议:0668-2555555
Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 ICP核准(ICP备案)粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008