fixed应用

标签: fixed 应用 | 发表时间:2013-02-08 12:00 | 作者:
出处:http://www.iteye.com

今天在逛人人网时,发现人人网首页左侧的“应用动态”,随着我页面向下滚动,一直固定在网站的左侧。但这效果存在一点瑕疵,在拖动过程中存在一点抖动(ie下),不是非常平滑。我尝试使用jquey实现了该效果,也解决了抖动的问题。现在把它拿出来和大家分享一下。

 

人人网效果:

 

 

 

思路:

  1. 创建一个ID为sideBar的div,将它的position设置为absolute。
  2. 当页面滚动条的垂直高度超过sideBar的top时,就将它的position设置为fixed。
  3. 当页面滚动条的垂直高度小于sideBar的top时,将它的position重新设置为 absolute。
  4. sideBar要跟网页顶部保持一定距离,所以我们将sideBar的css里设置 “margin-top”(这就是发生抖动的原因)。

Ie6问题:

Ie6不支持fixed属性,所以这效果需要过滤IE6

 

//判断是否为IE6
var msie6 = $.browser == 'msie' && $.browser.version < 7;
//浏览器不为ie6
if (!msie6) {
//效果代码
}

  Css编写:

*{
margin: 0px;
padding: 0px;
}
body{
text-align: center;
}
#wrapper{
height: 2000px;
position: relative;
}
#sideBar{
width: 100px;
height: 300px;
position: absolute;
top: 0px;
left: 100px;
background: #999;
margin-top: 20px;/*与顶部的距离*/
}
/*不要写成.fixed ,sideBar 已经设置了position为absolute,.fixed与sideBar原有css属性同级别的,将无法覆盖原有属性。而sideBar.fixed选择的优先级别较高*/
#sideBar.fixed{
position: fixed;
top: 0px;
}
#content{
padding-left: 300px;
padding-top: 200px;
}
#sideWrapper{
position: absolute;
width:280px;
top: 100px;
}

  防止抖动:

动态应用与网页顶部的高度为sideBar.offset().top

为了避免抖动,我们应该在动应用距离网页窗口还有动态应用设定的magintop

的距离时,将动态应该的position 设置为fixed.

$sideBar.offset().top- parseFloat($sideBar.css("marginTop")

  完整的jquery代码:

$(function() {
var $sideBar = $("#sideBar");
 
//左侧栏与顶部的高度
var top = $sideBar.offset().top - parseFloat($sideBar.css("marginTop").replace(/auto/,0));
var msie6 = $.browser == 'msie' && $.browser.version < 7;
 
if (!msie6) {
$(window).scroll(
//页面滚动条滚动式触发效果
function() {
var scrollTop = $(this).scrollTop();//拖动的高度
if(scrollTop > top) {
$sideBar.addClass("fixed");
}else{
$sideBar.removeClass("fixed");
}
});
}
});

 

代码下载地址: https://github.com/yeahzan/fixed.git

原文地址: http://www.yeahzan.com/blog/item/fixed.html

 

 

 



已有 0 人发表留言,猛击->> 这里<<-参与讨论


ITeye推荐



相关 [fixed 应用] 推荐:

fixed应用

- - ITeye博客
今天在逛人人网时,发现人人网首页左侧的“应用动态”,随着我页面向下滚动,一直固定在网站的左侧. 但这效果存在一点瑕疵,在拖动过程中存在一点抖动(ie下),不是非常平滑. 我尝试使用jquey实现了该效果,也解决了抖动的问题. 创建一个ID为sideBar的div,将它的position设置为absolute.

css固定元素位置(fixed)

- - Web前端 - ITeye博客
我们经常碰到的需求是希望页面某个元素固定在浏览器的一个位置,无论如何滚动滚动条,位置不变,就例如经常看到的弹出广告. 方法一般是使用js控制,或者使用css. 在IE7以上版本及firefox、opera、safari里,都支持css属性"position:fixed",它的作用就是将元素相对于窗口固定位置.

GetEd2k (Android应用)

- 某牢 - eMule Fans 电骡爱好者
GetEd2k是一个Android应用程序,作者是anacletus. 此应用可以帮助你把网页中的电驴(eDonkey) 链接添加到你个人电脑的电驴客户端里,不过前提是你的客户端开启了用于远程控制的Web interface(Web服务器,网页接口,Web界面),当然,eMule(电骡), MLDonkey 和 aMule 都支持该功能,所以这三种主流电驴客户端的用户都可以使用GetEd2k.

Voldemort应用

- - 冰火岛
    互联网数据应用产品涉及到到大数据存储,譬如推荐系统,精准营销,个性化搜索这样的产品,后台离线计算的海量数据需要展示给用户. 在电子商务应用中,譬如将User作为key,给用户挖掘的结果作为value;或者以商品id作为key,商品挖掘的知识作为value,这些数据可以通过KV存储,从而满足实际需求.

httpclient4的应用

- - 编程语言 - ITeye博客
httpclient一个实现了HTTP协议的客户端编程工具包. 一个使用的背景:登录需要验证,需要压力测试一下,用webdriver等工具搞不定. 就用到了他,有ocr开源的工具,结合httpclient完美的处理了. 网上的例子主要是3的版本,这里主要是总结一下4的版本. 本身带的例子也不错:下载地址,api的参考.

Solr SpellCheck 应用

- - 开源软件 - ITeye博客
通过对各类型的SpellCheck组件学习,完成项目拼写检查功能. 本文使用基于拼写词典的实现方式,solr版本为5.3.0. SpellCheck 简述. 拼写检查是对用户错误输入,响应正确的检查建议. 比如输入:周杰轮,响应:你是不是想找 周杰伦. Solr的拼写检查大致可分为两类,基于词典与基于Solr索引.

当应用不仅仅是应用

- HACK21 - 爱范儿 · Beats of Bits
(Ankit Gupta 和 Akshay Kothari 是 Pulse 的创始人,他们的应用在 iOS/Android 平台获得极高的下载量,曾获得乔布斯的赞赏. 他们的公司 Alphonso Labs 获得了 100 万风投和天使投资). by  ankit gupta from posterous blog |  积木 译,转载请注明 ifanr 译文链接.

JMS - JMS​应​用​领​域 应用场景

- - 企业架构 - ITeye博客
Java的JMS消息类型有文本类型,对象类型,字节类型,流类型,XML类型,实际项目中,用的最多的是文本类型,对象类型和xml类型的消息.建议最好不用对象类型,因为如果用对象类型的话,调试的时候是很麻烦的,. 首先你必须要写专门的测试代码用来发送消息,. 第二,必须要管理对象所属的类的不同版本,. 第三,不方便查看queue或者topic中的消息内容..

Java应用运维

- - BlueDavy之技术blog
对于互联网产品或长期运行的产品而言,运维工作非常重要,尤其是在产品复杂了以后,在这篇blog中就来说下Java应用的运维工作(ps:虽然看起来各种语言做的系统的运维工作都差不多,但细节上还是会有很多不同,so本文还是只讲Java的). 苦逼的码农按照需求开发好了一个全新的Java Web应用,该发布上线给用户用了,要把一个Java Web应用发布上线,首先需要搭建运行的环境,运行的环境需要有JDK、APPServer,在已经装好了os的机器上装上JDK和APPServer,开发好的Java Web应用可以用maven直接打成war或ear,将这个打好的包scp或其他方式到目标机器上,准备妥当,就差启动了.

Redis应用场景

- - CSDN博客架构设计推荐文章
Redis最为常用的数据类型主要有以下:. 在具体描述这几种数据类型之前,我们先通过一张图了解下Redis内部内存管理中是如何描述这些不同数据类型的:.          首先Redis内部使用一个redisObject对象来表示所有的key和value,redisObject最主要的信息如上图所示:.