我想仅使用CSS来区分外部链接和内部链接。
我想在这些链接的右侧添加一个小图标,而不会覆盖其他文本。
我想使用的图标是icon used on Wikipedia。
例如,这是一个外部链接:
<a href="http://stackoverflow.com">StackOverflow</a>
这是一个内部链接:
<a href="/index.html">home page</a>
我怎样才能使用CSS?
答案 0 :(得分:34)
使用:after
我们可以在每个匹配的选择器之后注入内容。
第一个选择器匹配以href
开头的任何//
属性。这适用于与当前页面保持相同协议(http或https)的链接。
a[href^="//"]:after,
这些是传统上比较常见的网址,例如http://google.com和https://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 */);
}