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 相关文章推荐
(仅IE下有效)关于checkbox 三态
May 12 Javascript
Ext第一周 史上最强学习笔记---GridPanel(基础篇)
Dec 29 Javascript
使用JavaScript 实现的人脸检测
Mar 24 Javascript
JavaScript实现Iterator模式实例分析
Jun 09 Javascript
JavaScript中数据结构与算法(二):队列
Jun 19 Javascript
谈谈JavaScript异步函数发展历程
Sep 29 Javascript
学习使用bootstrap基本控件(table、form、button)
Apr 12 Javascript
BootStrap Validator对于隐藏域验证和程序赋值即时验证的问题浅析
Dec 01 Javascript
JS实现滑动门效果的方法详解
Dec 19 Javascript
解决layui前端框架 form表单,table表等内置控件不显示的问题
Aug 19 Javascript
微信小程序template模板与component组件的区别和使用详解
May 22 Javascript
vue-video-player 断点续播的实现
Feb 01 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 采集程序中常用的函数
2009/12/09 PHP
jQuery Mobile + PHP实现文件上传
2014/12/12 PHP
解决phpcms更换javascript的幻灯片代码调用图片问题
2014/12/26 PHP
Linux(CentOS)下PHP扩展PDO编译安装的方法
2016/04/07 PHP
thinkPHP3.2.3实现阿里大于短信验证的方法
2018/06/06 PHP
JS拖动技术 关于setCapture使用
2010/12/09 Javascript
JavaScript中valueOf函数与toString方法深入理解
2012/12/02 Javascript
jquery插件冲突(jquery.noconflict)解决方法分享
2014/03/20 Javascript
extjs每个组件要设置唯一的ID否则会出错
2014/06/15 Javascript
JQuery实现的购物车功能(可以减少或者添加商品并自动计算价格)
2015/01/13 Javascript
Javascript数组操作函数总结
2015/02/05 Javascript
javascript实用方法总结
2015/02/06 Javascript
jQuery根据表单name获取值的方法
2016/05/24 Javascript
浅谈jquery中使用canvas的问题
2016/10/10 Javascript
Bootstrap3 图片(响应式图片&amp;图片形状)
2017/01/04 Javascript
理解 Node.js 事件驱动机制的原理
2017/08/16 Javascript
利用Three.js如何实现阴影效果实例代码
2017/09/26 Javascript
基于node搭建服务器,写接口,调接口,跨域的实例
2018/05/13 Javascript
vue + axios get下载文件功能
2019/09/25 Javascript
jdk1.8+vue elementui实现多级菜单功能
2020/09/24 Javascript
[01:04:01]2014 DOTA2华西杯精英邀请赛5 24 DK VS VG
2014/05/25 DOTA
Python多线程编程(八):使用Event实现线程间通信
2015/04/05 Python
实例说明Python中比较运算符的使用
2015/05/13 Python
python实现搜索本地文件信息写入文件的方法
2016/02/22 Python
全面了解Python的getattr(),setattr(),delattr(),hasattr()
2016/06/14 Python
详解python发送各类邮件的主要方法
2016/12/22 Python
python中文分词,使用结巴分词对python进行分词(实例讲解)
2017/11/14 Python
Python FtpLib模块应用操作详解
2019/12/12 Python
Python日志:自定义输出字段 json格式输出方式
2020/04/27 Python
HTML5 创建canvas元素示例代码
2014/06/04 HTML / CSS
HTML5页面音视频在微信和app下自动播放的实现方法
2016/10/20 HTML / CSS
北大自主招生自荐信
2013/10/19 职场文书
经营理念口号
2014/06/21 职场文书
天猫活动策划方案
2014/08/21 职场文书
行政复议决定书
2015/06/24 职场文书
又涨知识了,自律到底多重要?
2019/06/27 职场文书