最近突然有一个想法,文章中的链接不够明显,可不可以在不修改类名的前提下,给所有 a
标签添加一个图标呢?
答案是肯定的,只有想不到,没有做不到。
我们可以分析一下, bootstrap 的组件图标库。
它们在图标标签上加了一个伪类,这个伪类就代表了相对应的图标。
那么我可以直接拿这个标识来用吗?试一下:
.article-content p a:after {
content: "\e989";
}
但貌似不好用嘞,图标无法正常显示,显示小方块。
什么原因呢?我们先看一下字体的 CSS 源码,这里以阿里图标库的 iconfont 生成的 CSS 文件为例:
@font-face {font-family: "iconfont";
src: url('iconfont.eot?t=1111'); /* IE9 */
src: url('iconfont.eot?t=1111#iefix') format('embedded-opentype'), /* IE6-IE8 */
url('data:application/x-font-woff2;') format('woff2'),
url('iconfont.woff?t=1111') format('woff'),
url('iconfont.ttf?t=11111') format('truetype'), /* chrome, firefox, opera, Safari, Android, iOS 4.2+ */
url('iconfont.svg?t=1111#iconfont') format('svg'); /* iOS 4.1- */
}
.iconfont {
font-family: "iconfont" !important;
font-size: 16px;
font-style: normal;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
.icon-open_in_new:before {
content: "\e989";
}
首先要自定义一个字体,然后把元素的 font-family
设置为这个字体,然后再给需要图标的元素设置伪类。
所以我要向直接用的话,需要给 a
标签设置一下字体。像下面这样:
.article-content p a {
font-family: 'iconfont';
}
.article-content p a:after {
content: "\e989";
}
如果只给外链设置图标,可以只选择带有 target='_blank'
的 a
标签。像下面这样:
.article-content p a[target=_blank] {
font-family: 'iconfont';
}
.article-content p a[target=_blank]:after {
content: "\e989";
}
当然,可以把 iconfont 下载到本地,把 iconfont.css 在头部引入。
也可以直接生成 Unicode 代码,放在你 CSS 样式文件的开头,就可以愉快的给某个元素批量设置自定义图标了。