利用JQuery自动为文章内图片添加背景效果

今天闲逛一些设计网站时候,发现一种文章插入图片的背景效果处理:图片居中,然后是图片背景是等宽的区域,无论图片大小。自己觉得这个挺不错,相对我们习惯的图片设置border和padding的样式。我这里上传两张(一竖一横)图片让大家看看这个效果(在RSS阅读器看此文的朋友需要到本站一趟了,否则看不了效果):

img00030 20090323 1552 利用JQuery自动为文章内图片添加背景效果

img00015 20090321 1628 利用JQuery自动为文章内图片添加背景效果

我简单地说一下,上面两张图片只是在WordPress的后台上传插入,没有修改其代码。一般情况下,如果我们只在CSS中设置<img>的样式是很难做出上面的效果的,因为我们虽然能对图片进行居中,加边框,加背景等处理;但对于宽度不一样的图片,我们并不能保证它的背景会一样宽,因为此时它们的padding-left和padding-right的值会不一样;但是,WordPress会很自动地会为每张上传的图片前后加上<p>标签,而当我们把图片的背景样式应用到这个<p>标签上,上面的样式就可以解决了。

但是,如果我们每插入一张图片都要切换到xhtml编辑,为每个<p>都手工添加成如<p class="xxx">的话,不是很麻烦吗?这个时候我想到JQuery,如果用它自动搜索到包含<img>的每下个<p>,然后再自动为这些<p>添加一个样式“xxx”,不就行了吗?

JQuery说明文档中找到如下的两个函数:Selectors/hasAttributes/addClass,具体用法大家都去看下吧,很容易懂的。

我在站内加载的JavaScript中增加如下一句:

$(document).ready(function() {
$("#content p:has(img)").addClass("imgbg");
});

上面的语句是通过JQuery自动查找在#content这个div中包含有<img>标签的每一个<p>,然后为它们添加上样式.imgbg。当然你可以去掉前面的#content,这样就会对全局的<p>进行检查,但我不知道这样会不会很浪费呢。

然后在CSS文件(style.css)中添加对imgbg样式的设置:

.imgbg {
background-color: #F0F0F0;
color: #555;
border: 1px solid #CECFD0;
margin-bottom: 10px;
padding-bottom: 6px;
padding-top: 10px;
text-align: center;
}

大功告成!

分类:theme skill, WordPress;标签:, , , , ;收藏本文的永久链接

26 Responses to “利用JQuery自动为文章内图片添加背景效果”

  1. 爱月 回复此留言 2009/03/25 04:12 #comment-5245

    你的这套版越来越华丽了~简约的华丽~很棒很棒~反正我喜欢~就是怕应用到自己博客上了以后出错~

    PS:你这里的沙发永远都抢不上啊。。。

  2. leehow 回复此留言 2009/03/25 01:27 #comment-5238

    沙发啊?难得。

  3. sherrysherry 回复此留言 2009/03/25 02:58 #comment-5241

    我也沙發?

  4. sherrysherry 回复此留言 2009/03/25 03:00 #comment-5242

    這個功能貌似WP已經加入了啊?就是圖片的caption功能,如果在圖片編輯的caption里寫了文字什麽的,就會顯示出來也有一背景,是圓角的背景來的。。。

  5. Alan 回复此留言 2009/03/25 04:08 #comment-5244

    前排占位 :D

  6. Jinwen 回复此留言 2009/03/25 05:25 #comment-5247

    @sherrysherry 好像是,但这个方法还可以推广,比如以后你想自动对某些条件的样式进行修改。
    @爱月 因为时差?

  7. 植树 回复此留言 2009/03/26 05:15 #comment-5277

    只是单纯插入img代码就能这样吧!很方便。

    你的主题实在棒极了……

  8. 植树 回复此留言 2009/03/26 08:12 #comment-5284

    晕,看来我的留言你误解了!我是接你文中的话,完整的说就是,只要把上面的代码添上,以后只写img代码就能那样的效果了。
    PS:你的回复让我觉得自己变得好无知啊!

  9. bssn 回复此留言 2009/03/26 09:28 #comment-5288

    可以举一反三的好东西。
    另外你的那个公告slider感觉也不错。

  10. sherry 回复此留言 2009/03/26 05:47 #comment-5279

    我的前兩個留言,名字怎麼是sherrysherry了呢?奇怪。。。
    不過你說的倒是真的,不見得就是給圖片一個背景,也可以是別的什麽

  11. Jinwen 回复此留言 2009/03/26 07:43 #comment-5283

    @植树 只是单纯用img的样式是不以这样的,你可以试下的呢。

  12. Jinwen 回复此留言 2009/03/26 08:17 #comment-5285

    @植树 对不起哦。是的,以后只要插入图片就行了,不用再修改什么。
    PS.嗯,我觉得是那个感叹号的问题影响,呵呵。

  13. pan 回复此留言 2009/03/26 13:16 #comment-5298

    不错的技巧~

    另外,很喜欢你网站的外观样式啊,真牛!

  14. Jinwen 回复此留言 2009/03/26 16:04 #comment-5306

    @bssn 公告slider的代码我的不太好,但在shawn那里介绍过一段更好的代码,可以看一下。
    @pan 谢谢呢。不过样式的话各有所好,说不准的,呵。

  15. Tina 回复此留言 2009/03/27 00:36 #comment-5323

    唔 为什么你会知道RSS上看的人会看不见效果呢......

  16. 奋飞 回复此留言 2009/03/27 01:55 #comment-5326

    不错,学习了,
    不过好像挺难的啊

  17. Zoll 回复此留言 2009/03/27 07:39 #comment-5337

    @Tina 因为是 jQuery 实现的。。

  18. welee 回复此留言 2009/03/27 19:28 #comment-5345

    效果不错,不过如果文章中有表情符号的话,不知会不会影响到?

  19. Jinwen 回复此留言 2009/03/27 20:44 #comment-5347

    @welee 是-有-影响的,呵呵,不过会有办法区别它们的。

  20. Alex 回复此留言 2009/03/28 17:34 #comment-5376

    @welee 这是个问题啊。。

  21. Alex 回复此留言 2009/03/28 17:36 #comment-5377

    你博客上留言后会自动AJAX跳转到留言和自动加深效果是怎么样做的!很好用啊。。

  22. Jinwen 回复此留言 2009/03/28 17:43 #comment-5378

    @Alex 自动跳转到留言?我做的是留言提交-跳转到页顶-隐藏留言框,这三步。至于自动加深效果?那是CSS控制的呢。

  23. 优酷视频精品 回复此留言 2009/04/01 06:04 #comment-5514

    效果看起来还可以,学习了。

  24. 小墨 回复此留言 2009/04/05 08:58 #comment-5637

    这个效果真不错~thx

  25. sexy2funny 回复此留言 2009/08/14 05:13 #comment-9357

    不错.我先测试一下看看效果如何...谢谢..


The trackbacks and pingpacks: