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 相关文章推荐
JavaScript对象链式操作代码(jquery)
Jul 04 Javascript
jQuery 淡入淡出 png图在ie8下有黑色边框的解决方法
Mar 05 Javascript
13 款最热门的 jQuery 图像 360 度旋转插件推荐
Dec 09 Javascript
js实现DOM走马灯特效的方法
Jan 21 Javascript
ECMAScript6块级作用域及新变量声明(let)
Jun 12 Javascript
JS实现按比例缩放图片的方法(附C#版代码)
Dec 08 Javascript
AngularJS基础 ng-focus 指令简单示例
Aug 01 Javascript
最基础的vue.js双向绑定操作
Aug 23 Javascript
深入浅析Vue全局组件与局部组件的区别
Jun 15 Javascript
el-select数据过多懒加载的解决(loadmore)
May 29 Javascript
微信小程序获取用户信息及手机号(后端TP5.0)
Sep 12 Javascript
JavaScript语句错误throw、try及catch实例解析
Aug 18 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字符串中插入子字符串方法总结
2016/05/06 PHP
[原创]php常用字符串输出方法分析(echo,print,printf及sprintf)
2016/07/09 PHP
php 输出json及显示json中的中文汉字详解及实例
2016/11/09 PHP
Zend Framework基于Command命令行建立ZF项目的方法
2017/02/18 PHP
PHP实现APP微信支付的实例讲解
2018/02/10 PHP
[JS源码]超长文章自动分页(客户端版)
2007/01/09 Javascript
$()JS小技巧
2007/07/21 Javascript
JS Excel读取和写入操作(模板操作)实现代码
2010/04/11 Javascript
javascript中的toFixed固定小数位数 简单实例分享
2013/07/12 Javascript
js防止表单重复提交的两种方法
2013/09/30 Javascript
javascript实现下班倒计时效果的方法(可桌面通知)
2015/07/10 Javascript
jQuery实现图片加载完成后改变图片大小的方法
2016/03/29 Javascript
JS实现输入框提示文字点击时消失效果
2016/07/19 Javascript
AngularJS利用Controller完成URL跳转
2016/08/09 Javascript
jQuery实现页面点击后退弹出提示框的方法
2016/08/24 Javascript
jQuery实现的自定义滚动条实例详解
2016/09/20 Javascript
jQuery实现鼠标响应式透明度渐变动画效果示例
2018/02/13 jQuery
JS实现方形抽奖效果
2018/08/27 Javascript
js实现淘宝首页的banner栏效果
2019/11/26 Javascript
使用JavaScript获取Django模板指定键值数据
2020/05/27 Javascript
JavaScript中CreateTextFile函数
2020/08/30 Javascript
linux下python抓屏实现方法
2015/05/22 Python
如何使用Python的Requests包实现模拟登陆
2018/04/27 Python
python 读txt文件,按‘,’分割每行数据操作
2020/07/05 Python
python上selenium的弹框操作实现
2020/07/13 Python
基于python tkinter的点名小程序功能的实例代码
2020/08/22 Python
Python日志器使用方法及原理解析
2020/09/27 Python
北京离婚协议书范文2014
2014/09/29 职场文书
交警作风整顿剖析材料
2014/10/11 职场文书
中秋节慰问信
2015/02/15 职场文书
2015年先进个人自荐书
2015/03/24 职场文书
贷款收入证明格式
2015/06/24 职场文书
OpenCV中resize函数插值算法的实现过程(五种)
2021/06/05 Python
Python中如何处理常见报错
2022/01/18 Python
集英社今正式宣布 成立游戏公司“集英社Games”
2022/03/31 其他游戏
SpringBoot深入分析讲解监听器模式下
2022/07/15 Java/Android