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脚本性能的优化方法
Feb 02 Javascript
利用谷歌地图API获取点与点的距离的js代码
Oct 11 Javascript
jquery中子元素和后代元素的区别示例介绍
Apr 02 Javascript
jQuery实现表格展开与折叠的方法
May 04 Javascript
Jquery全屏相册插件zoomvisualizer具有调节放大与缩小功能
Nov 02 Javascript
js实现炫酷的左右轮播图
Jan 18 Javascript
jquery设置css样式的多种方法(总结)
Feb 21 Javascript
JS实现的Unicode编码转换操作示例
Apr 28 Javascript
vue利用better-scroll实现轮播图与页面滚动详解
Oct 20 Javascript
layui table设置前台过滤转义等方法
Aug 17 Javascript
fetch 如何实现请求数据
Dec 20 Javascript
详解vue2.0模拟后台json数据
May 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
ThinkPHP CURD方法之field方法详解
2014/06/18 PHP
ThinkPHP3.1新特性之查询条件预处理简介
2014/06/19 PHP
PHP图片处理之使用imagecopyresampled函数裁剪图片例子
2014/11/19 PHP
thinkphp中字符截取函数msubstr()用法分析
2016/01/09 PHP
thinkPHP微信分享接口JSSDK用法实例
2017/07/07 PHP
PHP实现求两个字符串最长公共子串的方法示例
2017/11/17 PHP
TP5多入口设置实例讲解
2020/12/15 PHP
使用jquery为table动态添加行的实现代码
2011/03/30 Javascript
Ajax执行顺序流程及回调问题分析
2012/12/10 Javascript
JavaScript中的style.display属性操作
2013/03/27 Javascript
jquery滚动条插件jScrollPane的使用介绍
2013/11/08 Javascript
js调用打印机打印网页字体总是缩小一号的解决方法
2014/01/24 Javascript
JavaScript利用构造函数和原型的方式模拟C#类的功能
2014/03/06 Javascript
jQuery弹出层插件Lightbox_me使用指南
2015/04/21 Javascript
基于PHP和Mysql相结合使用jqGrid读取数据并显示
2015/12/02 Javascript
自定义Angular指令与jQuery实现的Bootstrap风格数据双向绑定的单选与多选下拉框
2015/12/12 Javascript
JavaScript实现计数器基础方法
2017/10/10 Javascript
JS实现简易换图时钟功能分析
2018/01/04 Javascript
vue实现权限控制路由(vue-router 动态添加路由)
2019/11/04 Javascript
Python开发实例分享bt种子爬虫程序和种子解析
2014/05/21 Python
python实现决策树C4.5算法详解(在ID3基础上改进)
2017/05/31 Python
django admin添加数据自动记录user到表中的实现方法
2018/01/05 Python
Python 将pdf转成图片的方法
2018/04/23 Python
Python爬虫实现(伪)球迷速成
2018/06/10 Python
Django实现微信小程序的登录验证功能并维护登录态
2019/07/04 Python
python实现静态web服务器
2019/09/03 Python
Python在后台自动解压各种压缩文件的实现方法
2020/11/10 Python
BookOutlet加拿大:在网上书店购买廉价折扣图书和小说
2018/10/05 全球购物
介绍一下Cookie和Session及他们之间的区别
2012/11/20 面试题
买卖协议书范本
2014/04/21 职场文书
创业计划书之密室逃脱
2019/11/08 职场文书
python 三边测量定位的实现代码
2021/04/22 Python
Python爬虫之自动爬取某车之家各车销售数据
2021/06/02 Python
MySQL删除和插入数据很慢的问题解决
2021/06/03 MySQL
Python socket如何解析HTTP请求内容
2022/02/12 Python
python中pycryto实现数据加密
2022/04/29 Python