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