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 相关文章推荐
JQuery UI皮肤定制
Jul 27 Javascript
菜鸟javascript基础资料整理2
Dec 06 Javascript
Jquery中val()表单取值赋值的实例代码
Aug 15 Javascript
JavaScript实现的圆形浮动标签云效果实例
Aug 06 Javascript
bootstrap表格分页实例讲解
Dec 30 Javascript
node前端开发模板引擎Jade的入门
May 11 Javascript
在vue中实现点击选择框阻止弹出层消失的方法
Sep 15 Javascript
vue路由事件beforeRouteLeave及组件内定时器的清除方法
Sep 29 Javascript
iView-admin 动态路由问题的解决方法
Oct 03 Javascript
详解Vue前端对axios的封装和使用
Apr 01 Javascript
详解mpvue开发微信小程序基础知识
Sep 23 Javascript
JQuery实现ul中添加LI和删除指定的Li元素功能完整示例
Oct 16 jQuery
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 foreach、while性能比较
2009/10/15 PHP
PHP+iframe图片上传实现即时刷新效果
2016/11/18 PHP
PHP面向对象五大原则之里氏替换原则(LSP)详解
2018/04/08 PHP
JS target与currentTarget区别说明
2011/08/28 Javascript
用js的for循环获取radio选中的值
2013/10/21 Javascript
jQuery对val和atrr(&quot;value&quot;)赋值的区别介绍
2014/09/26 Javascript
深入理解JavaScript的React框架的原理
2015/07/02 Javascript
举例讲解JavaScript中关于对象操作的相关知识
2015/11/16 Javascript
jQuery实现点击弹出背景变暗遮罩效果实例代码
2016/06/24 Javascript
Node.js下自定义错误类型详解
2016/10/17 Javascript
jQuery使用siblings获取某元素所有同辈(兄弟姐妹)元素用法示例
2017/01/30 Javascript
javascript中mouseenter与mouseover的异同
2017/06/06 Javascript
微信小程序template模板实例详解
2017/10/27 Javascript
Angular 4根据组件名称动态创建出组件的方法教程
2017/11/01 Javascript
node.js环境搭建图文详解
2018/09/19 Javascript
原生js实现随机点名功能
2019/11/05 Javascript
微信小程序点击按钮动态切换input的disabled禁用/启用状态功能
2020/03/07 Javascript
[01:08]DOTA2“血战之命”预告片
2017/08/12 DOTA
Python爬虫获取图片并下载保存至本地的实例
2018/06/01 Python
Pandas之排序函数sort_values()的实现
2019/07/09 Python
python使用原始套接字发送二层包(链路层帧)的方法
2019/07/22 Python
Python 静态方法和类方法实例分析
2019/11/21 Python
Python高阶函数、常用内置函数用法实例分析
2019/12/26 Python
Pytorch Tensor基本数学运算详解
2019/12/30 Python
python单例设计模式实现解析
2020/01/07 Python
PyCharm GUI界面开发和exe文件生成的实现
2020/03/04 Python
python+opencv实现移动侦测(帧差法)
2020/03/20 Python
python3字符串输出常见面试题总结
2020/12/01 Python
Python用SSH连接到网络设备
2021/02/18 Python
如何使用css3实现一个类在线直播的队列动画的示例代码
2020/06/17 HTML / CSS
企业管理毕业生求职信范文
2014/03/07 职场文书
关于对大人不礼貌的检讨书
2014/09/29 职场文书
2014年中职班主任工作总结
2014/12/16 职场文书
自荐信怎么写
2015/03/04 职场文书
2015银行年终工作总结范文
2015/05/26 职场文书
立秋之描写立秋的作文(五年级)
2019/08/08 职场文书