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 相关文章推荐
修改file按钮的默认样式实现代码
Apr 23 Javascript
使用js实现一个可编辑的select下拉列表
Feb 20 Javascript
Backbone.js框架中Model与Collection的使用实例
May 07 Javascript
JavaScript 弹出子窗体并返回结果到父窗体的实现代码
May 28 Javascript
AngularJS模仿Form表单提交的实现代码
Dec 08 Javascript
JS实现自动轮播图效果(自适应屏幕宽度+手机触屏滑动)
Jun 19 Javascript
JS中的三个循环小结
Jun 20 Javascript
vue实现div单选多选功能
Jul 16 Javascript
Vue.js暴露方法给WebView的使用操作
Sep 07 Javascript
原生js实现简单轮播图
Oct 26 Javascript
用几道面试题来看JavaScript执行机制
Apr 30 Javascript
Vue3.0中Ref与Reactive的区别示例详析
Jul 07 Vue.js
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上传图片重命名的6种解决方法的详细介绍
2013/04/28 PHP
那些年我们错过的魔术方法(Magic Methods)
2014/01/14 PHP
ThinkPHP单字母函数(快捷方法)使用总结
2014/07/23 PHP
php无限分类使用concat如何实现
2015/11/05 PHP
apache php mysql开发环境安装教程
2016/07/28 PHP
javascript实现的动态文字变换
2007/07/28 Javascript
js展开闭合效果演示代码
2013/07/24 Javascript
Flex通过JS获取客户端IP和计算机名的实例代码
2013/11/21 Javascript
详细介绍jQuery.outerWidth() 函数具体用法
2015/07/20 Javascript
jQuery实现带动画效果的多级下拉菜单代码
2015/09/08 Javascript
轻松学习jQuery插件EasyUI EasyUI实现拖动基本操作
2015/11/30 Javascript
jQuery的框架介绍
2016/05/11 Javascript
jquery实现无刷新验证码的简单实例
2016/05/19 Javascript
jQuery实现手机版页面翻页效果的简单实例
2016/10/05 Javascript
jQuery插件echarts去掉垂直网格线用法示例
2017/03/03 Javascript
jquery中$.fn和图片滚动效果实现的必备知识总结
2017/04/21 jQuery
vue.js中created方法作用
2018/03/30 Javascript
vue-自定义组件传值的实例讲解
2018/09/18 Javascript
mpvue性能优化实战技巧(小结)
2019/04/17 Javascript
json字符串对象转换代码实例
2019/09/28 Javascript
JavaScript鼠标拖拽事件详解
2020/04/03 Javascript
Vite和Vue CLI的优劣
2021/01/30 Vue.js
解决python3 Pycharm上连接数据库时报错的问题
2018/12/03 Python
Django 请求Request的具体使用方法
2019/11/11 Python
Python调用Windows API函数编写录音机和音乐播放器功能
2020/01/05 Python
tensorflow实现对张量数据的切片操作方式
2020/01/19 Python
django model 条件过滤 queryset.filter(**condtions)用法详解
2020/05/20 Python
Python基于字典实现switch case函数调用
2020/07/22 Python
Europcar葡萄牙:葡萄牙汽车和货车租赁
2017/10/13 全球购物
耐克亚太地区:Nike APAC
2019/12/07 全球购物
英国标志性生活方式品牌:Skinnydip London
2019/12/15 全球购物
网络工程专业自荐信范文
2014/03/16 职场文书
互联网创业计划书写作技巧攻略
2014/03/23 职场文书
大学生社会实践评语
2014/04/25 职场文书
2014年秋季开学典礼致辞
2014/08/02 职场文书
2014最新预备党员思想汇报范文:中国梦,我的梦
2014/10/25 职场文书