jQuery固定浮动侧边栏实现思路及代码


Posted in Javascript onSeptember 28, 2014

这个功能现在应用的非常普遍,如果页面比较高,当滚动条拖到页面的下面的时候,侧边栏会出现一个固定跟随浏览器的DIV框,现思路是这样的:首先获取需要跟随的DIV距离页面顶部的距离,然后判断,当浏览器滚动的距离大于该DIV本身距离顶部距离的时候,则添加CSS属性fixed即可。

代码如下

HTML代码:

<div id="header">header</div>
<div id="sidebarWrap">
<div id="sidebar">Sidebar</div>
</div>
<div id="main">Main</div>
<div id="footer">footer</div>

CSS代码:

body {
margin: 10px auto;
font-family: sans-serif;
width: 500px;
}
div {
border-radius: 5px;
box-shadow: 1px 2px 5px rgba(0,0,0,0.3);
border: 1px solid #ccc;
padding: 5px;
}
#sidebarWrap {
height: 400px;
width: 210px;
float: right;
position: relative;
box-shadow: none;
border: none;
margin: 0;
padding: 0;
}
#main {
width: 270px;
height: 4000px;
}
#footer {
clear: both;
margin: 10px 0;
}
#sidebar {
width: 200px;
height: 300px;
position: absolute;
}
#header {
height: 200px;
margin-bottom: 10px;
}
#sidebar.fixed {
position: fixed;
top: 0;
}
#footer { height: 600px; }
#footer { height: 600px; }

JavaScript代码:

$(function() {
var top = $('#sidebar').offset().top - parseFloat($('#sidebar').css('marginTop').replace(/auto/, 0));
var footTop = $('#footer').offset().top - parseFloat($('#footer').css('marginTop').replace(/auto/, 0));

var maxY = footTop - $('#sidebar').outerHeight();

$(window).scroll(function(evt) {
var y = $(this).scrollTop();
if (y > top) {
if (y < maxY) {
$('#sidebar').addClass('fixed').removeAttr('style');
} else {
$('#sidebar').removeClass('fixed').css({
position: 'absolute',
top: (maxY - top) + 'px'
});
}
} else {
$('#sidebar').removeClass('fixed');
}
});
});
Javascript 相关文章推荐
静态页面的值传递(三部曲)
Sep 25 Javascript
JavaScript 存在陷阱 删除某一区域所有节点
May 10 Javascript
jQuery阻止冒泡和HTML默认操作
Nov 17 Javascript
Js动态添加复选框Checkbox的实例方法
Apr 08 Javascript
setTimeout和setInterval的深入理解
Nov 08 Javascript
JS连连看源码完美注释版(推荐)
Dec 09 Javascript
js生成随机数之random函数随机示例
Dec 20 Javascript
SinaEditor使用方法详解
Dec 28 Javascript
JS中dom0级事件和dom2级事件的区别介绍
May 05 Javascript
关于不同页面之间实现参数传递的几种方式讨论
Feb 13 Javascript
vue axios整合使用全攻略
May 24 Javascript
vue elementui 实现搜索栏公共组件封装的实例代码
Jan 20 Javascript
js文件包含的几种方式介绍
Sep 28 #Javascript
javascript中bind函数的作用实例介绍
Sep 28 #Javascript
js和jquery如何获取图片真实的宽度和高度
Sep 28 #Javascript
一个jquery实现的不错的多行文字图片滚动效果
Sep 28 #Javascript
IE中getElementsByName()对有些元素无效的解决方案
Sep 28 #Javascript
js propertychange和oninput事件
Sep 28 #Javascript
javascript检测是否联网的实现代码
Sep 28 #Javascript
You might like
详解php与ethereum客户端交互
2018/04/28 PHP
php基于协程实现异步的方法分析
2019/07/17 PHP
用JavaScrpt实现文件夹简单轻松加密的实现方法图文
2008/09/08 Javascript
jQuery 获取对象 定位子对象
2010/05/31 Javascript
纯js实现背景图片切换效果代码
2010/11/14 Javascript
杨氏矩阵查找的JS代码
2013/03/21 Javascript
关于js中for in的缺陷浅析
2013/12/02 Javascript
js获取和设置属性的方法
2014/02/20 Javascript
jQuery Ajax调用WCF服务详细教程
2015/03/31 Javascript
JavaScript中判断函数、变量是否存在
2015/06/10 Javascript
Jquery实现顶部弹出框特效
2015/08/08 Javascript
Javascript获取统一管理的提示语(message)
2016/02/03 Javascript
JS命令模式例子之菜单程序
2016/10/10 Javascript
BootStrap实现手机端轮播图左右滑动事件
2016/10/13 Javascript
JavaScript获取select中text值的方法
2017/02/13 Javascript
浅谈Koa2框架利用CORS完成跨域ajax请求
2018/03/06 Javascript
Python的Socket编程过程中实现UDP端口复用的实例分享
2016/03/19 Python
Python编程实现二叉树及七种遍历方法详解
2017/06/02 Python
django实现用户登陆功能详解
2017/12/11 Python
Windows下将Python文件打包成.EXE可执行文件的方法
2018/08/03 Python
不归路系列:Python入门之旅-一定要注意缩进!!!(推荐)
2019/04/16 Python
python 自定义装饰器实例详解
2019/07/20 Python
python将print输出的信息保留到日志文件中
2019/09/27 Python
基于Python实现拆分和合并GIF动态图
2019/10/22 Python
matplotlib.pyplot画图并导出保存的实例
2019/12/07 Python
Django在Model保存前记录日志实例
2020/05/14 Python
Python中对象的比较操作==和is区别详析
2021/02/12 Python
CSS3效果:自定义“W”形运行轨迹实例
2017/03/29 HTML / CSS
澳大利亚小众服装品牌:Maurie & Eve
2018/03/27 全球购物
薇姿法国官网:Vichy法国
2021/01/28 全球购物
为什么会有内存对齐
2016/10/10 面试题
高校毕业生登记表自我鉴定
2013/11/03 职场文书
cf收人广告词大全
2014/03/14 职场文书
热门专业求职信
2014/05/24 职场文书
六年级作文之关于梦
2019/10/22 职场文书
Python使用psutil库对系统数据进行采集监控的方法
2021/08/23 Python