博客文章比较长的时候,侧边栏很容易变得很空,这种情况下,在侧边栏显示些推荐文章、分类或者标签,都是很不错的,可以方便访问者浏览其他文章,间接增加访问者停留的时间。
几个月前就弄过这样的效果,但是没成功,在一些浏览器下显示效果不好,今天看了一篇文章,JS代码写的不错,就稍微修改了下,实现了随着鼠标滚动到侧边栏消失后,显示固定的标签云模块的效果,见下图:
JS的实现原理实际上就是给要显示的模块增加上『position:fixed;』的CSS样式,固定模块,随着鼠标滚动,当滚动条的垂直偏移量超过了指定高度时显示模块,低于指定高度时则隐藏。如果要想将侧边栏的最后一个模块固定,代码就简单多了,在滚动事件内给最后一个模块附上CSS属性即可。
需要按各自的需求修改相应代码,完整的JavaScript代码如下: //固定tag cloud jQuery(function ($) { //指定的高度,侧边栏距顶部距离+侧边栏高度+可视页面的高度 var sideTop=$("#sidebar").offset().top+$("#sidebar").height()+$(window).height(); var scTop = function() { if( typeof window.pageYOffset != 'undefined') { return window.pageYOffset; } else if( typeof document.compatMode != 'undefined' && document.compatMode != 'BackCompat') { return document.documentElement.scrollTop } else if( typeof document.body != 'undefined') { return document.body.scrollTop; } } $(window).scroll(function() { if (scTop() > sideTop) { if($("#fixed-siderbar").length == 0){ //下面是要显示的模块,复制侧边栏中的标签云内容,追加到侧边栏的底部 var tag = $("#tag_cloud-2 .widget-wrap").clone().html(); var html="<div id='fixed-siderbar'><div id='fixed-wrap'><div id='fixedTag' class='widget widget_tag_cloud' >"+ tag +"</div></div></div>" $("#sidebar").append(html); }else{ $("#fixed-siderbar").show(); } }else{ $("#fixed-siderbar").hide(); }; }); }); 最后附上我的CSS,同样按需修改: #fixed-siderbar{ z-index: 0; position:fixed; top:70px; }
经测试,在Chrome、Firefox、Safari和IE中显示正常,就是根据浏览器或显示器分辨率的不同,显示的垂直位置也不同,在iPhone中浏览会有稍微的卡顿。欢迎大家给出更好的获取垂直偏移量的方法!
此文章由 http://www.ositren.com 收集整理 ,地址为: http://www.ositren.com/htmls/68347.html