细心的访客可以看见,首页导航条上,加了个封神榜(topten),这里的封神榜,指将来访的访客按评论总数进行排行,也就是类似读者墙插件读取的用户数的前十位。由于tiandi一直使用最近访客showguests插件,所以一直没有使用读者墙这类插件,今天偶尔看见一个js特效SwatchBook,感觉可以拿来和wordpress的评论者数据结合一下,做出一些排名效果,下图为效果图截图。
想看真实效果,请看这里。[flatbtn url=”http://www.tiandiyoyo.com/topten/” size=small type=blue]封神榜示例页面[/flatbtn]
1.打开functions.php文件,插入下面代码以添加showtopten函数,js文件请自行下载获取并调整路径地址。
function showtopten() { echo "<script type='text/javascript' src='http://www.tiandiyoyo.com/wp-content/themes/freshblog/javascripts/modernizr.custom.79639.js'></script>"; global $wpdb; $counts = $wpdb->get_results("SELECT COUNT(comment_author) AS cnt, comment_author, comment_author_url, comment_author_email FROM $wpdb->comments where user_id = '0' and comment_approved = 1 GROUP BY comment_author_email ORDER BY cnt DESC LIMIT 10"); echo "<div class='container'> <section class='main'> <div id='sb-container' class='sb-container'>"; foreach(array_reverse($counts) as $count){ $guesturl = $count->comment_author_url; $guestavatar = get_avatar($count->comment_author_email, 50); $guest = $count->comment_author; echo "<div style='transition: all 700ms ease; -webkit-transition: all 700ms ease; -webkit-transform: rotate(0deg);'><span class='sb-icon'><a href=".$guesturl." target=_blank>".$guestavatar."</a><span style='color:#eee'>".$count->cnt."</span></span><h4><span>".$guest."</span></h4></div>"; } echo "<div style='transition: all 700ms ease; -webkit-transition: all 700ms ease; -webkit-transform: rotate(0deg);'><h4><span>名人堂</span></h4><span class='sb-toggle'>都是千年老妖啊</span><h5><span>★千丝海阁</span></h5></div></div><!-- sb-container --></section></div>"; echo "<script type='text/javascript' src='http://www.tiandiyoyo.com/wp-content/themes/freshblog/javascripts/jquery.swatchbook.js'></script>"; echo "<script type='text/javascript'> $(function() { $( '#sb-container' ).swatchbook( { angleInc : 17, neighbor : 15, initclosed : true, closeIdx : 10 } ); }); </script>"; }
2.打开style.css文件,添加如下样式:
/***************************/ /* topten css */ /***************************/ .sb-container { position: relative; width: 150px; height: 400px; margin: 30px auto 0 auto; } .sb-container div { position: absolute; top: 0; left: 0; width: 130px; background: #fff; height: 400px; border-radius: 5px; box-shadow: -1px -1px 3px rgba(0,0,0,0.1); cursor: pointer; text-align: center; -webkit-transform-origin: 25% 90%; -moz-transform-origin: 25% 90%; -o-transform-origin: 25% 90%; -ms-transform-origin: 25% 90%; transform-origin: 25% 90%; } .sb-container div:last-child:after{ content: ''; position: absolute; bottom: 15px; left: 15px; width: 20px; height: 20px; border-radius: 50%; background: #dddddd; background: -moz-linear-gradient(-45deg, #dddddd 0%, #58535e 48%, #889396 100%); background: -webkit-gradient(linear, left top, right bottom, color-stop(0%,#dddddd), color-stop(48%,#58535e), color-stop(100%,#889396)); background: -webkit-linear-gradient(-45deg, #dddddd 0%,#58535e 48%,#889396 100%); background: -o-linear-gradient(-45deg, #dddddd 0%,#58535e 48%,#889396 100%); background: -ms-linear-gradient(-45deg, #dddddd 0%,#58535e 48%,#889396 100%); background: linear-gradient(135deg, #dddddd 0%,#58535e 48%,#889396 100%); filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#dddddd', endColorstr='#889396',GradientType=1 ); box-shadow: -1px -1px 1px rgba(0,0,0,0.7), 1px 1px 1px rgba(255,255,255,0.1); } .sb-container div:nth-child(1){ background-color: #ea2a29; box-shadow: -1px -1px 3px rgba(0,0,0,0.1), 1px 1px 1px rgba(0,0,0,0.1), inset 0 3px 0 rgba(255, 255, 255, 0.2); } .sb-container div:nth-child(2){ background-color: #f16729; box-shadow: -1px -1px 3px rgba(0,0,0,0.1), 2px 2px 1px rgba(0,0,0,0.1), inset 0 3px 0 rgba(255, 255, 255, 0.2); } .sb-container div:nth-child(3){ background-color: #f89322; box-shadow: -1px -1px 3px rgba(0,0,0,0.1), 3px 3px 2px rgba(0,0,0,0.2), inset 0 3px 0 rgba(255, 255, 255, 0.2); } .sb-container div:nth-child(4){ background-color: #ffcf14; box-shadow: -1px -1px 3px rgba(0,0,0,0.1), 4px 4px 4px rgba(0,0,0,0.2), inset 0 3px 0 rgba(255, 255, 255, 0.2); } .sb-container div:nth-child(5){ background-color: #ffea0d; box-shadow: -1px -1px 3px rgba(0,0,0,0.1), 5px 5px 6px rgba(0,0,0,0.3), inset 0 3px 0 rgba(255, 255, 255, 0.2); } .sb-container div:nth-child(6){ background-color: #87b11d; box-shadow: -1px -1px 3px rgba(0,0,0,0.1), 6px 6px 8px rgba(0,0,0,0.3), inset 0 3px 0 rgba(255, 255, 255, 0.2); } .sb-container div:nth-child(7){ background-color: #008253; box-shadow: -1px -1px 3px rgba(0,0,0,0.1), 7px 7px 10px rgba(0,0,0,0.4), inset 0 3px 0 rgba(255, 255, 255, 0.2); } .sb-container div:nth-child(8){ background-color: #3277b5; box-shadow: -1px -1px 3px rgba(0,0,0,0.1), 8px 8px 12px rgba(0,0,0,0.4), inset 0 3px 0 rgba(255, 255, 255, 0.2); } .sb-container div:nth-child(9){ background-color: #4c549f; box-shadow: -1px -1px 3px rgba(0,0,0,0.1), 9px 9px 14px rgba(0,0,0,0.4), inset 0 3px 0 rgba(255, 255, 255, 0.2); } .sb-container div:nth-child(10){ background-color: #764394; box-shadow: -1px -1px 3px rgba(0,0,0,0.1), 10px 10px 16px rgba(0,0,0,0.4), inset 0 3px 0 rgba(255, 255, 255, 0.2); } .sb-container div:last-child{ background: #111; box-shadow: -1px -1px 3px rgba(0,0,0,0.2), 12px 12px 20px rgba(0,0,0,0.6), inset 2px 2px 0 rgba(255, 255, 255, 0.1); } .sb-container div h4{ color: rgba(255,255,255,0.9); text-shadow: 1px 1px 1px rgba(0,0,0,0.2); font-weight: 700; font-size: 16px; text-transform: uppercase; border-top: 1px dashed rgba(0,0,0,0.1); border-bottom: 1px dashed rgba(0,0,0,0.1); margin: 5px; padding: 5px; -webkit-touch-callout: none; -webkit-user-select: none; -khtml-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; } .sb-container div:last-child h4{ background: rgba(0,0,0,0.2); box-shadow: 0 1px 1px rgba(255,255,255,0.1); } .sb-container div:last-child h5{ font-size: 50px; white-space: nowrap; text-align: left; margin: 0; padding: 0; position: absolute; line-height: 50px; top: 0px; left: 0px; color: #000; text-shadow: -1px -1px 1px rgba(255,255,255,0.1); text-transform: uppercase; -webkit-transform: rotate(-90deg) translateX(-157%) translateY(73px); -moz-transform: rotate(-90deg) translateX(-157%) translateY(73px); -o-transform: rotate(-90deg) translateX(-157%) translateY(73px); -ms-transform: rotate(-90deg) translateX(-157%) translateY(73px); transform: rotate(-90deg) translateX(-157%) translateY(73px); -webkit-transform-origin: 0 0; -moz-transform-origin: 0 0; -o-transform-origin: 0 0; -ms-transform-origin: 0 0; transform-origin: 0 0; -webkit-touch-callout: none; -webkit-user-select: none; -khtml-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; } span.sb-icon{ display: block; height: 70px; width: 70px; margin: 20px auto; -webkit-touch-callout: none; -webkit-user-select: none; -khtml-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; }
3.新建一个页面模板并命名为topten.php,在模板里相应位置调用showtopten函数,例如:
<?php /* Template Name: Topten */ ?> <?php get_header(); ?> <div id="content"> <div id="innercontent"> <h2 class="pagetitle">名人堂</h2> <div class="entry"> <?php showtopten(); ?> </div> <!--end: entry--> </div> </div> <!--end: content--> <?php include('sidebar.php'); ?> <?php get_footer(); ?>
4.最后新建一个页面,启用刚刚创建的topten.php模板。
大功告成啦!来看下实际效果吧:[flatbtn url=”http://www.tiandiyoyo.com/topten/” size=small type=blue]封神榜示例页面[/flatbtn]
文章评分1次,平均分5.0:★★★★★
好经典的特效
这个可以用,用户应该很受乐
这个特效很酷啊
为什么不直接给出js的下载地址?
js直接看源码下载吧。
这东西不错,以前看见过。
挺酷的,就是感觉有点小卡。。大概是我关了硬件加速的关系吧。。
不知道啊,反正我不卡,所以就放上来玩玩了。
对评论框无力吐槽了
评论框怎么了?
一看代码就头疼………
代码太复杂了 增加那么多代码
那个最长的只是CSS样式
不过js加载的速度确实有点慢,效果很炫
恩,js比较大,效果真的是没话说了。
可不可以不要这么好看。。。。。。
就看看,现在都没折腾的心了
好多代码,看的头都疼了
这个特效是挺不错的 不过代码也好多
很不错,详细而经典,学习一下
木有上榜,还得努力
不过 点击某个 标签 会先打开网页 返回才能看到动画效果 不是很好呀 可以是 打开新标签网页 但是还停留在当前页面吗
这个。。。貌似是浏览器设置的。。。和代码无关吧。
额……我也不懂诶 只是觉得这样不是很舒服呀
哇~这个好炫 当打开我还以为 出啥问题了呢 只有一个黑块块 没想到 点一下会有惊喜 我居然也在上边 我要加油 不能下去了
哈哈,不可能只给一个黑方块这么简单的,这样我自己都说不过去了。
这个功能真炫,研究着弄我站上去
代码虽多,大多是CSS,很容易搞的。
这个功能我喜欢,小媒体也有,嘿嘿。
你那108将,也不错。