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 相关文章推荐
JSQL  一个 web DB 的封装
May 05 Javascript
Javascript对象属性方法汇总
Nov 21 Javascript
js判断一个字符串是否包含一个子串的方法
Jan 26 Javascript
点评js异步加载的4种方式
Dec 22 Javascript
JS实现重新加载当前页面
Nov 29 Javascript
node.js基于mongodb的搜索分页示例
Jan 22 Javascript
jQuery插件jqGrid动态获取列和列字段的方法
Mar 03 Javascript
layer.open弹层查看缩略图的原图,自适应大小的实例
Sep 05 Javascript
刷新页面后让控制台的js代码继续执行
Sep 20 Javascript
p5.js临摹动态图形实现方法详解
Oct 23 Javascript
Vue+Element实现网页版个人简历系统(推荐)
Dec 31 Javascript
vue pages 多入口项目 + chainWebpack 全局引用缩写说明
Sep 21 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通过排列组合实现1到9数字相加都等于20的方法
2015/08/03 PHP
PHP扩展Memcache分布式部署方案
2015/12/06 PHP
详解no input file specified 三种解决方法
2019/11/29 PHP
精通JavaScript 纠正 cleanWhitespace函数
2010/03/11 Javascript
跨浏览器的 mouseenter mouseleave 以及 compareDocumentPosition的使用说明
2010/05/04 Javascript
基于JQuery的asp.net树实现代码
2010/11/30 Javascript
jQuery EasyUI API 中文文档 - DataGrid数据表格
2011/11/17 Javascript
JavaScript 高级篇之闭包、模拟类,继承(五)
2012/04/07 Javascript
jQuery实现统计复选框选中数量
2014/11/24 Javascript
jQuery div拖拽用法实例
2016/01/14 Javascript
浅谈js基本数据类型和typeof
2016/08/09 Javascript
解析利用javascript如何判断一个数为素数
2016/12/08 Javascript
用 js 的 selection range 操作选择区域内容和图片
2017/04/18 Javascript
php中and 和 &amp;&amp;出坑指南
2018/07/13 Javascript
微信小程序实现选项卡滑动切换
2020/10/22 Javascript
[02:52]2014DOTA2西雅图国际邀请赛 CIS战队巡礼
2014/07/07 DOTA
python用ConfigObj读写配置文件的实现代码
2013/03/04 Python
Python写的服务监控程序实例
2015/01/31 Python
使用XML库的方式,实现RPC通信的方法(推荐)
2017/06/14 Python
使用Python实现从各个子文件夹中复制指定文件的方法
2018/10/25 Python
python GUI图形化编程wxpython的使用
2019/07/19 Python
python实现的分析并统计nginx日志数据功能示例
2019/12/21 Python
numpy实现神经网络反向传播算法的步骤
2019/12/24 Python
python简单实现最大似然估计&amp;scipy库的使用详解
2020/04/15 Python
css3 transform 3d 使用css3创建动态3d立方体(html5实践)
2013/01/06 HTML / CSS
浅谈利用缓存来优化HTML5 Canvas程序的性能
2015/05/12 HTML / CSS
wordpress添加Html5的表单验证required方法小结
2020/08/18 HTML / CSS
LORAC官网:美国彩妆品牌
2019/08/27 全球购物
Java多态性的定义以及类型
2014/09/16 面试题
俄语翻译实习生的自我评价分享
2013/11/06 职场文书
网络维护管理员的自我评价分享
2013/11/11 职场文书
效能风暴心得体会
2014/09/04 职场文书
院党委组织查摆问题对照检查材料思想汇报2014
2014/10/08 职场文书
奠基仪式致辞
2015/07/30 职场文书
SQLServer2019 数据库的基本使用之图形化界面操作的实现
2021/04/08 SQL Server
Python读写yaml文件
2022/03/20 Python