如何设置维基百科等外部链接的样式?

时间:2013-08-11 02:52:15

标签: css css3 progressive-enhancement

我想仅使用CSS来区分外部链接和内部链接。

我想在这些链接的右侧添加一个小图标,而不会覆盖其他文本。

我想使用的图标是icon used on Wikipedia

例如,这是一个外部链接:

<a href="http://stackoverflow.com">StackOverflow</a> 

这是一个内部链接:

<a href="/index.html">home page</a> 

sample of desired result


我怎样才能使用CSS?

3 个答案:

答案 0 :(得分:34)

demo

基本

使用:after我们可以在每个匹配的选择器之后注入内容。

第一个选择器匹配以href开头的任何//属性。这适用于与当前页面保持相同协议(http或https)的链接。

a[href^="//"]:after, 

这些是传统上比较常见的网址,例如http://google.comhttps://encrypted.google.com

a[href^="http://"]:after, 
a[href^="https://"]:after {

然后我们可以将url传递给content属性以在链接后显示图像。可以自定义边距以适合

  content: url(http://upload.wikimedia.org/wikipedia/commons/6/64/Icon_External_Link.png);
  margin: 0 0 0 5px;
}

允许某些域为本地

假设我们在example.org,我们希望为此目的在同一域上标记blog.example.org的链接。这是一种相当安全的方法,但我们可以使用http://example.org/page//blog.example.org/

这样的网址

注意:确保在你的风格

之后出现这种情况
a[href*="//blog.example.org/"]:after {
  content: '';
  margin: 0;
}

对于更严格的匹配,我们可以进行初始设置并覆盖它们。

a[href^="//blog.example.org/"]:after, 
a[href^="http://blog.example.org/"]:after, 
a[href^="https://blog.example.org/"]:after {
  content: '';
  margin: 0;
}

答案 1 :(得分:8)

我认为这可以帮助您简单地解决问题,

Add an offsite link icon after external links with CSS

引用文章:

这将使所有链接最终用外部链接图标设置样式

a[href^="http://"] {
    background: url(http://upload.wikimedia.org/wikipedia/commons/6/64/Icon_External_Link.png)     center right no-repeat;
    padding-right: 13px;
}

以下代码将阻止特定网址上的外部图标样式:

a[href^="http://www.stackoverflow.com"]  {
    background: none;
    padding-right: 0;
}

答案 2 :(得分:7)

好的,这与其他答案非常相似,但它简短而且甜美,适用于http和https。当然,如果您在内部网址中使用双斜杠,则会遇到问题,但无论如何都不应该这样做(see these questions)。

a:not([href*="//"]) {
    /* CSS for internal links */
}

a[href*="//"] {
    /*CSS for external links */
}

我希望在之前知道这个我用class="internal"class="external"标记了我的所有链接。

所以要添加图像,如前所述:

a[href*="//"]::after {
    content: url(/* image URL here */);
}