定义页面中的链接样式

最近读《精通CSS》一书,学了不少知识。前两天给博客的链接添加了一些样式,因为本身博客主题的链接就不怎么显眼,这样也是想给读者更多方便,同时让博客的样式更加丰富好玩。

我根据不同的链接,设定了不同的显示效果,如下图。


本来这些如果都用class实现可能也不麻烦,但是每次添加链接都要设定一个类很累。所以我用CSS里的“属性选择器”来通过rel来给链接赋予不同效果。需要注意的是,IE6并不支持这些代码,应避免将这类代码用在重要功能上。如果要兼容IE6只能结合class来实现。

链接分类图里,external是让链接在新窗口打开,相比使用target="_blank"这样符合W3C的标准。用代码实现起来很简单(不然我就不用这代码了 🙂 )。

a[rel~="external"] {
background:url(images/icon_link.gif) no-repeat;
padding-left:16px;
}
.attachment {
background:url(images/icon_attachment.gif) no-repeat !important;
padding-left:16px;
}

第一句是给所有rel属性包含external的链接添加一个小图标。如果你的页面还在用target="_blank"属性,最好自己修改为rel="external"这样。修改教程请见Shawn的教程。不然请用这样的代码

a[target="_blank"] {
background:url(images/icon_link.gif) no-repeat;
padding-left:16px;
}

第二句由于附件也有external属性,所以给附件.attachment的background加了一个!important。
这样链接基本不用管,只需要给附件链接添加一个class="attachment"属性就可以啦。

还有一点,要给css指向比较详细的路径,不然所有链接都将应用这个样式。
我是用下面的代码,这个代码只适用于我自己的主题

#wrapper #frame #content #left .entry .post p a[rel~="external"],
#wrapper #frame #content #left .entry .post > ul a[rel~="external"],
#wrapper #frame #content #left .entry .post > quote a[rel~="external"],
#wrapper #frame #content #left .entry .post > ol a[rel~="external"] {
background:url(images/icon_link.gif) no-repeat;
padding-left:16px;
}
#wrapper #frame #content #left .entry .post p .attachment,
#wrapper #frame #content #left .entry .post > ul .attachment,
#wrapper #frame #content #left .entry .post > quote .attachment,
#wrapper #frame #content #left .entry .post > ol .attachment {
background:url(images/icon_attachment.gif) no-repeat !important;
padding-left:16px;
}

好了,就写这么多,哪里没说明白我再继续补充。

Tags : ,

本博文章均为Sivan原创,内容遵循 署名-非商业性使用 2.5 共享协议,转载请注明来自 Sivan's Blog
原文链接为 http://sivan.in/blog/modify-link-style/
这篇日志发表于2009年03月14日 18:00。你可以订阅该日志的所有评论通过RSS 2.0。评论跟引用通告当前被关闭。

9 条回应

评论(9)引用通告(0)

  1. Donald

    哇,好专业!我占沙发~~

    2009-03-14 19:31 | #1
  2. Leeiio

    偽類的樣式可惜IE6不支持[rel~="external"]這類的啊。
    不過要讓類為external的鏈接在新窗口打開還需要配合js的,否則這只是一個類標記。

    2009-03-14 20:37 | #2
    • Sivan

      :mrgreen: 主要就是想写用属性选择器改链接的样式,external那个我是比着shawn的教程弄得~应该扔个链接的,我改改。

      2009-03-14 20:49 | #3
  3. 猪小猪'space

    不错,我现在已经把我站内的链接全是external了。在利用jquery设置新窗口打开,在用数据库批量替换target.

    2009-03-14 22:16 | #4
    • 猪小猪'space

      汗。。。我在别人启用gravatar的博客里都无法显示,就在你博客和@leehow的博客里可以显示。。。我就纳闷。。。

      2009-03-14 22:17 | #5
      • Sivan

        上天的旨意,让你在我这多留言

        2009-03-15 11:05 | #6
  4. 笨猫

    主要想学习一下内页设置。。前台看不到。

    2009-03-16 09:25 | #7
    • Sivan

      😐 啥意思哇。。

      2009-03-16 12:55 | #8
  5. 安东

    😯 完全看不懂……哈哈

    2009-03-17 10:49 | #9

站点评论关闭

有问题请联系 sun.sivan[at]gmail.com 或新浪微博 @Sivan