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 相关文章推荐
Array.prototype 的泛型应用分析
Apr 30 Javascript
利用javascript解决图片缩放及其优化的代码
May 23 Javascript
用jquery.sortElements实现table排序
May 04 Javascript
setInterval计时器不准的问题解决方法
May 08 Javascript
基于JS代码实现导航条弹出式悬浮菜单
Jun 17 Javascript
微信小程序 简单DEMO布局,逻辑,样式的练习
Nov 30 Javascript
Bootstrap框架安装使用详解
Jan 21 Javascript
vue页面使用阿里oss上传功能的实例(一)
Aug 09 Javascript
vue组件watch属性实例讲解
Nov 07 Javascript
layui实现文件或图片上传记录
Aug 28 Javascript
vue实现条件判断动态绑定样式的方法
Sep 29 Javascript
JS异步宏队列与微队列原理区别详解
Jul 02 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
Zend Studio for Eclipse的java.lang.NullPointerException错误的解决方法
2008/12/06 PHP
PHP5函数小全(分享)
2013/06/06 PHP
PHP生成json和xml类型接口数据格式
2015/05/17 PHP
thinkphp5.1框架模板布局与模板继承用法分析
2019/07/19 PHP
ThinkPHP5.1验证码功能实现的示例代码
2020/06/08 PHP
jQuery.Validate验证库的使用介绍
2013/04/26 Javascript
子窗体与父窗体传值示例js代码
2013/08/01 Javascript
jQuery 处理页面的事件详解
2015/01/20 Javascript
简介JavaScript中用于处理正切的Math.tan()方法
2015/06/15 Javascript
Jquery uploadify上传插件使用详解
2016/01/13 Javascript
JavaScript+html5 canvas制作的圆中圆效果实例
2016/01/27 Javascript
Javascript实现汉字和拼音互转的终极方案
2016/10/19 Javascript
Bootstrap树形菜单插件TreeView.js使用方法详解
2016/11/01 Javascript
jQuery图片瀑布流的简单实现代码
2017/03/15 Javascript
基于vue cli重构多页面脚手架过程详解
2018/01/23 Javascript
在Vue中使用Compass的方法
2018/03/02 Javascript
父组件中vuex方法更新state子组件不能及时更新并渲染的完美解决方法
2018/04/25 Javascript
详解处理Vue单页面应用SEO的另一种思路
2018/11/09 Javascript
微信小程序中显示倒计时代码实例
2019/05/09 Javascript
浅谈Python单向链表的实现
2015/12/24 Python
Python在groupby分组后提取指定位置记录方法
2018/04/20 Python
django中模板的html自动转意方法
2018/05/27 Python
python3 对list中每个元素进行处理的方法
2018/06/29 Python
Python 数据可视化pyecharts的使用详解
2019/06/26 Python
pytorch VGG11识别cifar10数据集(训练+预测单张输入图片操作)
2020/06/24 Python
基于logstash实现日志文件同步elasticsearch
2020/08/06 Python
Fossil美国官网:Fossil手表、手袋、珠宝及配件
2017/02/01 全球购物
全球知名的珠宝首饰品牌:Kay Jewelers
2018/02/11 全球购物
世界顶级俱乐部的官方球衣和套装:Subside Sports
2018/04/22 全球购物
彪马俄罗斯官网:PUMA俄罗斯
2019/07/13 全球购物
公共汽车、火车和飞机票的通用在线预订和销售平台:INFOBUS
2019/11/30 全球购物
庆元旦文艺演出主持词
2014/03/27 职场文书
兽医医药专业求职信
2014/07/27 职场文书
求职意向书范本
2015/05/11 职场文书
MySQL数据库⾼可⽤HA实现小结
2022/01/22 MySQL
【TED出品】天梯非主流开心游1700 划水骑士
2022/03/31 魔兽争霸