连续第三篇说dabr的了,因为自己使用起来就不得不想把它折腾得顺心一点。
我们知道在dabr中都会有一组小图标以区分功能,但其实当在查看源码时候我们也能发现作者在这方面其实很不在意,因为他只是很简单的把那些图标一个一个用img 链接出来算了。
虽然这样也没什么不好,反正就是最简单的正确;但是当你在网络环境不理想,尤其在移动设备端使用dabr的时候,那些小图标会因为网速慢而一个一个的浮出来让人很是烦恼;另外一个不好的是,在每一条推上面都至少有四到五个小图标,这样下来,每个版面显示的十来条推上每个图标都要用img 读取重复的图片出来,那效率……可想而知的慢。
所以应该把这种显示背景图片还有链接图标的方法改为CSS Sprite,最大化的优化一下执行效率。
查找twitter.php文件,在最后段有这样一句:
return "<a href='$url'><img src='$image_url' /></a>";
我们需要做的就是把中间img 的标签去掉,然后把<a> 属性链接用CSS 的方法把它定义为可点击区块,并为其添加背景图片,代替原来要显示的图标。问题是怎样区分各个不同链接的样式呢?在这里是要感谢下dabr的作者做了的一件好事,他为我们提供了$text 这个变量。那样我们就利用这个变量区分各个不同链接的样式,把上面的代码改为:
return "<a class='$text' href='$url'></a>";
根据dabr原来对$text 的设定,我们需要在theme.php 文件中再增加各个样式定义:
.AT{background:transparent url(./images/bgs.png) no-repeat 0px 0px;width:15px;height:15px;display:inline-block;}
.RE{background:transparent url(./images/bgs.png) no-repeat -15px 0px;width:15px;height:15px;display:inline-block;}
.DM{background:transparent url(./images/bgs.png) no-repeat -30px 0px;width:15px;height:15px;display:inline-block;}
.DEL{background:transparent url(./images/bgs.png) no-repeat -45px 0px;width:15px;height:15px;display:inline-block;}
.FAV{background:transparent url(./images/bgs.png) no-repeat -60px 0px;width:15px;height:15px;display:inline-block;}
.UNFAV{background:transparent url(./images/bgs.png) no-repeat -75px 0px;width:15px;height:15px;display:inline-block;}
.RT{background:transparent url(./images/bgs.png) no-repeat -90px 0px;width:15px;height:15px;display:inline-block;}
上面的就是对各个链接的样式定义了。这里补充说一下,在dabr原来代码中对回复功能还有回复所有功能的$text 定义为“@”和“REPLY ALL”,为了能在CSS 中正确命名,我们需要在
function theme_action_icons($status)
上面这一个function 中把它们手动改成“AT”和“RE”。改的名称随意,没有规定的。只要能和上上面那一段CSS名称对上就可以了。
接下来就是用Photoshop 做一张整合了所有需要用上图片的背景图,就象下面的一样(这里我顺带把logo也做进去):
![]()
为了省事,我是直接用了twitter 官方的图标。而这里各个小图标的位置就是按照上面代码的位置决定的了,每个小图标的宽度和高度都是15像素,我想大家对照一下图标的位置和相应在CSS中的位置数值,应该很容易看明白的了。
接着就是显示的效果:
![]()
再查看更改前后源代码的对比。
更改前如下图,每条推上的图标分别是以<img> 标签插入,页面上读取多次图片显示,很不经济。
![]()
更改后如下图,源码上看不到图片的读取。因为此时系统只是在加载CSS 样式的时候才读取了一次图片,也就是唯一的一张整合背景图,此时页面的刷新速度加快了不少。
![]()
终上述,我是挺满意这样的更改的。反应的不只是页面刷新的速度,还有流量要求的减少。按我观察,现在在手机上刷新一个页面的流量差不多少了1k,效果不错。
有兴趣试用一下这个版本dabr的朋友,可以在这一篇日志中找到更新了的下载链接。