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学习笔记(七) js函数介绍
Jun 19 Javascript
js形成页面的一种遮罩效果实例代码
Jan 04 Javascript
js 获取、清空input type=&quot;file&quot;的值示例代码
Feb 19 Javascript
javascript数组遍历for与for in区别详解
Dec 04 Javascript
分享28款免费实用的 JQuery 图片和内容滑块插件
Dec 15 Javascript
仅30行代码实现Javascript中的MVC
Feb 15 Javascript
浅析JavaScript中命名空间namespace模式
Jun 22 Javascript
基于jquery实现弹幕效果
Sep 29 Javascript
javascript入门之window对象【新手必看】
Nov 22 Javascript
基于Vue的SPA动态修改页面title的方法(推荐)
Jan 02 Javascript
解决layui表格的表头不滚动的问题
Sep 04 Javascript
JavaScript基于面向对象实现的无缝滚动轮播示例
Jan 17 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针对cookie操作的队列操作类实例
2014/12/10 PHP
在JavaScript中获取请求的URL参数[正则]
2010/12/25 Javascript
javascript中取前n天日期的两种方法分享
2014/01/26 Javascript
Extjs Label的 fieldLabel和html属性值对齐的方法
2014/06/15 Javascript
jQuery+CSS实现滑动的标签分栏切换效果
2015/12/17 Javascript
Javascript对象字面量的理解
2016/06/22 Javascript
jQuery下拉框的简单应用
2016/06/24 Javascript
jQuery实现的多张图无缝滚动效果【测试可用】
2016/09/12 Javascript
js图片切换具体实现代码
2016/10/13 Javascript
纯JS焦点图特效实例(可一个页面多用)
2016/12/07 Javascript
Bootstrap轮播图学习使用
2017/02/10 Javascript
微信小程序 解析网页内容详解及实例
2017/02/22 Javascript
JavaScript的for循环中嵌套一个点击事件的问题解决
2017/03/03 Javascript
node.js基于socket.io快速实现一个实时通讯应用
2019/04/23 Javascript
vue-router 中 meta的用法详解
2019/11/01 Javascript
详解微信小程序之提高应用速度小技巧
2020/01/07 Javascript
Vue设置长时间未操作登录自动到期返回登录页
2020/01/22 Javascript
vue3.0封装轮播图组件的步骤
2021/03/04 Vue.js
[39:07]LGD vs VP 2018国际邀请赛淘汰赛BO3 第二场 8.21
2018/08/22 DOTA
用Python的线程来解决生产者消费问题的示例
2015/04/02 Python
Python中字符串的格式化方法小结
2016/05/03 Python
Python模块搜索路径代码详解
2018/01/29 Python
对Python3.6 IDLE常用快捷键介绍
2018/07/16 Python
selenium切换标签页解决get超时问题的完整代码
2020/08/30 Python
PyQt5中QSpinBox计数器的实现
2021/01/18 Python
html5的画布canvas——画出简单的矩形、三角形实例代码
2013/06/09 HTML / CSS
手工制作的男士奢华英国鞋和服装之家:Goodwin Smith
2019/06/21 全球购物
乌克兰机票、铁路和巴士票、酒店搜索、保险:Tickets.ua
2020/01/11 全球购物
实用求职信范文分享
2013/12/25 职场文书
关于人生的感言
2014/01/17 职场文书
农村党支部书记司法四风问题对照检查材料
2014/09/26 职场文书
毕业生对母校寄语
2015/02/26 职场文书
2015年教师党员自我评价材料
2015/03/04 职场文书
导游词之铁岭象牙山
2019/12/06 职场文书
Python中X[:,0]和X[:,1]的用法
2021/05/10 Python
Python 操作pdf pdfplumber读取PDF写入Exce
2022/08/14 Python