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 注册事件代码
Jan 27 Javascript
jQuery前端框架easyui使用Dialog时bug处理
Dec 05 Javascript
javascript实现滑动解锁功能
Dec 31 Javascript
javascript动态修改Li节点值的方法
Jan 20 Javascript
Bootstrap3 多选和单选框(checkbox)
Dec 29 Javascript
JavaScript中document.referrer的用法详解
Jul 04 Javascript
webstorm添加*.vue文件支持
May 08 Javascript
使用webpack搭建react开发环境的方法
May 15 Javascript
laydate时间日历插件使用方法详解
Nov 14 Javascript
vue拖拽组件 vuedraggable API options实现盒子之间相互拖拽排序
Jul 08 Javascript
node+multer实现图片上传的示例代码
Feb 18 Javascript
JS使用setInterval计时器实现挑战10秒
Nov 08 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 empty,isset,is_null判断比较(差异与异同)
2010/10/19 PHP
Zend Framework中的简单工厂模式 图文
2012/07/10 PHP
javascript实现仿银行密码输入框效果的代码
2007/12/13 Javascript
学习JavaScript的最佳方法分享
2011/10/21 Javascript
jquery 获取自定义属性(attr和prop)的实现代码
2012/06/27 Javascript
JS获得浏览器版本和操作系统版本的例子
2014/05/13 Javascript
Flash图片上传组件 swfupload使用指南
2015/03/14 Javascript
基于javascript实现仿百度输入框自动匹配功能
2016/01/03 Javascript
JavaScript获取css行间样式,内连样式和外链样式的简单方法
2016/07/18 Javascript
原生JS京东轮播图代码
2017/03/22 Javascript
Vue.js实现文章评论和回复评论功能
2020/05/30 Javascript
关于vue-resource报错450的解决方案
2017/07/24 Javascript
vue中的计算属性实例详解
2018/09/19 Javascript
vue数据初始化initState的实例详解
2019/04/11 Javascript
解决layui批量传值到后台操作时出现传值为空的问题
2019/09/28 Javascript
微信小程序使用echarts获取数据并生成折线图
2019/10/16 Javascript
横向对比分析Python解析XML的四种方式
2016/03/30 Python
python模拟Django框架实例
2016/05/17 Python
python中实现迭代器(iterator)的方法示例
2017/01/19 Python
numpy.random.seed()的使用实例解析
2018/02/03 Python
Python设计模式之迭代器模式原理与用法实例分析
2019/01/10 Python
Python实现监控Nginx配置文件的不同并发送邮件报警功能示例
2019/02/26 Python
Django中提供的6种缓存方式详解
2019/08/05 Python
Pytest mark使用实例及原理解析
2020/02/22 Python
最新2019Pycharm安装教程 亲测
2020/02/28 Python
使用python实现CGI环境搭建过程解析
2020/04/28 Python
Django Form设置文本框为readonly操作
2020/07/03 Python
使用Python文件读写,自定义分隔符(custom delimiter)
2020/07/05 Python
新加坡最受追捧的体验平台:Hapz
2018/01/01 全球购物
写一个函数,求一个字符串的长度。在main函数中输入字符串,并输出其长度
2015/11/18 面试题
教师专业自荐书范文
2014/02/10 职场文书
土建专业大学生自荐信范文
2014/04/09 职场文书
惹女朋友生气检讨书
2015/05/06 职场文书
预备党员入党感言
2015/08/01 职场文书
Python基础学习之奇异的GUI对话框
2021/05/27 Python
Python中with上下文管理协议的作用及用法
2022/03/18 Python