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 相关文章推荐
使用 Node.js 做 Function Test实现方法
Oct 25 Javascript
javascript实现别踩白块儿小游戏程序
Nov 22 Javascript
js纯数字逐一停止显示效果的实现代码
Mar 16 Javascript
jQuery实现无限往下滚动效果代码
Apr 16 Javascript
JCrop+ajaxUpload 图像切割上传的实例代码
Jul 20 Javascript
jQuery组件easyui对话框实现代码
Aug 25 Javascript
javascript中数组(Array)对象和字符串(String)对象的常用方法总结
Dec 15 Javascript
vue实现表格数据的增删改查
Jul 10 Javascript
浅谈angular.copy() 深拷贝
Sep 14 Javascript
全站最详细的Vuex教程
Apr 13 Javascript
vue 路由嵌套高亮问题的解决方法
May 17 Javascript
layui 关闭open弹出框 刷新table表格页面的方法
Sep 16 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和MySQL保存和输出图片
2006/10/09 PHP
PHP对象链式操作实现原理分析
2016/10/09 PHP
php模式设计之观察者模式应用实例分析
2019/09/25 PHP
Jquery读取URL参数小例子
2013/08/30 Javascript
各种页面定时跳转(倒计时跳转)代码总结
2013/10/24 Javascript
jquery教程ajax请求json数据示例
2014/01/13 Javascript
推荐JavaScript实现继承的最佳方式
2014/11/11 Javascript
jquery ui bootstrap 实现自定义风格
2014/11/14 Javascript
AngularJs入门教程之环境搭建+创建应用示例
2016/11/01 Javascript
BootStrap学习笔记之nav导航栏和面包屑导航
2017/01/03 Javascript
简单谈谈gulp-changed插件
2017/02/21 Javascript
JavaScript实现QQ聊天消息展示和评论提交功能
2017/05/22 Javascript
解决JS内存泄露之js对象和dom对象互相引用问题
2017/06/25 Javascript
JS实现简单短信验证码界面
2017/08/07 Javascript
实例详解Vue项目使用eslint + prettier规范代码风格
2018/08/20 Javascript
js实现旋转的星空效果
2019/11/01 Javascript
JavaScript实现下拉列表
2021/01/20 Javascript
[55:48]VGJ.S vs TNC Supermajor 败者组 BO3 第二场 6.6
2018/06/07 DOTA
使用基于Python的Tornado框架的HTTP客户端的教程
2015/04/24 Python
使用C++扩展Python的功能详解
2018/01/12 Python
Python常见字典内建函数用法示例
2018/05/14 Python
Python 删除整个文本中的空格,并实现按行显示
2018/07/24 Python
python将字符串以utf-8格式保存在txt文件中的方法
2018/10/30 Python
python使用插值法画出平滑曲线
2018/12/15 Python
Python制作简易版小工具之计算天数的实现思路
2020/02/13 Python
自定义Django默认的sitemap站点地图样式
2020/03/04 Python
Django跨域请求原理及实现代码
2020/11/14 Python
CSS3中各种颜色属性的使用教程
2016/05/17 HTML / CSS
英国手机壳购买网站:Case Hut
2019/04/11 全球购物
英语硕士生求职简历的自我评价
2013/10/15 职场文书
客服部班长工作责任制
2014/02/25 职场文书
创建精神文明单位实施方案
2014/03/08 职场文书
网络技术专业求职信
2014/05/02 职场文书
服务承诺书范文
2014/05/19 职场文书
golang DNS服务器的简单实现操作
2021/04/30 Golang
Java数组与堆栈相关知识总结
2021/06/29 Java/Android