在dabr中CSS Sprite背景图片

连续第三篇说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也做进去):

bgs 在dabr中CSS Sprite背景图片

为了省事,我是直接用了twitter 官方的图标。而这里各个小图标的位置就是按照上面代码的位置决定的了,每个小图标的宽度和高度都是15像素,我想大家对照一下图标的位置和相应在CSS中的位置数值,应该很容易看明白的了。

接着就是显示的效果:

 在dabr中CSS Sprite背景图片

再查看更改前后源代码的对比。

更改前如下图,每条推上的图标分别是以<img> 标签插入,页面上读取多次图片显示,很不经济。

 在dabr中CSS Sprite背景图片

更改后如下图,源码上看不到图片的读取。因为此时系统只是在加载CSS 样式的时候才读取了一次图片,也就是唯一的一张整合背景图,此时页面的刷新速度加快了不少。

 在dabr中CSS Sprite背景图片

终上述,我是挺满意这样的更改的。反应的不只是页面刷新的速度,还有流量要求的减少。按我观察,现在在手机上刷新一个页面的流量差不多少了1k,效果不错。

有兴趣试用一下这个版本dabr的朋友,可以在这一篇日志中找到更新了的下载链接。

分类:网络 | Web;标签:, , ;收藏本文的永久链接

18 Responses to “在dabr中CSS Sprite背景图片”

  1. thewei 回复此留言 2010/03/30 15:14 #comment-13610

    话说我看不懂这个。。。 :lol:

  2. 乐扣乐扣 回复此留言 2010/03/30 18:05 #comment-13614

    话说。我也不懂。。 :cool:

  3. underone 回复此留言 2010/03/30 19:25 #comment-13615

    你太细心了:)~ :mrgreen:

  4. Jutoy 回复此留言 2010/03/30 21:22 #comment-13618

    搞得我都有冲动试试搭这个版本的dabr用了 :razz:

  5. Afio 回复此留言 2010/03/30 22:24 #comment-13619

    :?: 啊 好复杂 囧

  6. Kars 回复此留言 2010/03/30 22:32 #comment-13620

    :razz: 整合进 我大波的源码中 ~~

  7. zwwooooo 回复此留言 2010/03/31 20:07 #comment-13626

    完美主义者 :lol:

  8. Kars 回复此留言 2010/04/01 22:02 #comment-13632

    .bgs {background:transparent url(./images/bgs.png) no-repeat;width:15px;height:15px;display:inline-block;}
    .AT{background-position:0px 0px;}
    .RE{background-position:-15px 0px;}
    .DM{background-position:-30px 0px;}
    .DEL{background-position:-45px 0px;}
    .FAV{background-position:-60px 0px;}
    .UNFAV{background-position:-75px 0px;}
    .RT{background-position:-90px 0px;}

    这样更好吧、、、 :wink:

  9. Kars 回复此留言 2010/04/01 22:03 #comment-13633

    return "";
    改成
    return "";

  10. 八步学习网 回复此留言 2010/04/03 01:39 #comment-13639

    谷歌也不能上了,原来都是GG搜你站的,郁闷。。。

  11. 聚合搜索 回复此留言 2010/04/03 16:48 #comment-13643

    谢谢 学习

  12. 回复此留言 2010/04/03 22:24 #comment-13645

    twitter不会用,哈哈

  13. wander 回复此留言 2010/04/04 14:14 #comment-13651

    嘿嘿,喜欢干净的css :grin:

  14. wander 回复此留言 2010/04/04 14:14 #comment-13652

    WPG新生,混个熟脸 :twisted:

  15. 大脚下载 回复此留言 2010/04/15 13:28 #comment-13860

    2奶,以前我认为是人有两个……

  16. Trenton Siles 回复此留言 2011/05/22 17:51 #comment-19270

    Greetings everybody, This webpage is superb and so is how the matter was expanded. I like among the comments as well though I would prefer we all hold it on topic in order add worth to the subject. It is going to be additionally encouraging to the creator if we all may share it (for some of us who use bookmarking services such as a digg, twitter,..).