wordpress侧边栏滑动模块的实现

05-29 | 夜光 | IT记录

当某篇文章比较长时,我们阅读时屏幕滚动到下面的时候,可能已经看不到侧边栏里面的那些模块了。所以我们想实现一种效果,就是当屏幕滚动到侧边栏结束时,出现我们想显示的一些小模块,并且这些小模块固定显示在侧边栏。我在本地电脑已经实现,但是没有应用到网站中,下面介绍具体实现方法:

假如主题的侧边栏结构如下:

<div class="sidebar">
	<ul>
		<li>
			<h3>小模块1</h3>
			......
		</li>
		<li>
			<h3>小模块2</h3>
			......
		</li>
		<li>
			<h3>小模块3</h3>
			......
		</li>
	</ul><div class="clear"></div>
</div><!--sidebar_END-->

我们为想要实现侧栏滑动的前两个小模块分别加上:

class="roll-one" 与 class="roll-two"

我们在开始滑动的地方,也就是侧边栏结束的地方加上:

<div id="rollstart"></div>

加好以上代码后,侧边栏结构如下:

<div class="sidebar">
	<ul>
		<li class="roll-one">
			<h3>小模块1</h3>
			......
		</li>
		<li class="roll-two">
			<h3>小模块2</h3>
			......
		</li>
		<li>
			<h3>小模块3</h3>
			......
		</li>
	</ul><div class="clear"></div>
	<div id="rollstart"></div>
</div><!--sidebar_END-->

最后在侧栏结束处加上如下jQuery代码即可:(需要先加载jQuery库)

<script type="text/javascript">
//<![CDATA[
jQuery(document).ready(function($) {
    if (!isie6()) {
        var rollStart = $('#rollstart'),
        rollSet = $('.roll-one,.roll-two'); //想要滑动的小模块容器
        rollStart.before('<ul class="rollbox" style="position:fixed;width:235px;"></ul>'); //包裹所有想要滑动的小模块,宽度为侧边栏宽度
        var offset = rollStart.offset(),
        objWindow = $(window),
        rollBox = rollStart.prev();
        if (objWindow.width() > 960) {
            objWindow.scroll(function() {
                if (objWindow.scrollTop() > offset.top) {
                    if (rollBox.html(null)) {
                        rollSet.clone().prependTo('.rollbox')
                    }
                    rollBox.show().stop().animate({
                        top: 0,
                        paddingTop: 15
                    },
                    400)
                } else {
                    rollBox.hide().stop().animate({
                        top: 0
                    },
                    400)
                }
            })
        }
    }
    function isie6() {
        if ($.browser.msie) {
            if ($.browser.version == "6.0") return true;
        }
        return false;
    }
});
//]]>
</script>
本文标签: ,
本文链接: wordpress-sidebar-slide-module-implementation/
版权所有: 玻璃泉, 转载请注明本文出处。

9个评论

  1. 膜拜一下,O(∩_∩)O哈哈~

  2. 滑动之后有保存的效果没?

    • @盘先海
      效果就是,屏幕滚动到下方时,指定的侧边栏小工具仍可以固定在右侧,我在本地做了,没有应用到博客中~

  3. 终于找到了我想要的效果代码了,之前在另一个人的站里看到了这个效果,但他网站上写的一篇文章是让右侧整体或部分模块跟随左侧滚动而不是固定在那,感觉一直在那晃啊晃的影响阅读左侧正文内容的注意力。今天还在那网站上留言问他自己用的效果的JS代码呢!然后自己一搜索却搜索到你这篇文章了。感觉这种固定的效果正是比较合理符合用户体验的。然后我到之前那位朋友的站里再次找他的JS代码,终于在一个引用的JS文件里面发现了,跟您的代码一对比,除了自定的模块选择器之外一模一样的。已经测试成功了,但我用的模板右侧全部是调用的小工具,sidebar.php里面的代码都是这样的

    这种我要选择其中几个小模块的容器不知道怎么办了。我只知道调用标签云是这个代码:

    以至于我测试您这个代码的时候复制了5份标签云模块来测试效果。。。。 :evil: :evil:

  4. 看看我的站点右侧那个广告位有法修改吗,我的class 的都一样。要怎么改,这个广告位是在后台有开关,是主题原来就带有的功能,看啊看你怎么改啊
    百度搜
    “牵着手习惯了”第一个就是我

  5. 这个可以么?我试过了不行,应主题而异吧