最近将博客上面的小图标都换成了阿里的iconfont字体图标,其实很早之前就想换了,一直偷懒就没有去改。
当真正使用了之后发现,真香!iconfont上有海量的图标,替换图标也非常方便,现在也支持彩色字体图标了。
在替换字体图标的时候我主要体验了Font Awesome和iconfont。本来想使用Font Awesome,它的免费版中有些我想要的图标没有,Pro版虽然多了很多,但是还不全,远没有使用iconfont来的随意,不过Font Awesome搭配了CSS框架,可以更加方便的使用一些css效果,比如:动画、旋转与翻转、组合使用等。总的来说Font Awesome适合快速使用,iconfont适合DIY。
iconfont使用也比较方便,主要以unicode方式引用举例,创建一个项目,选择你需要的图标添加入库到对应的项目里面,生成对应的font-face,然后就可以愉快的使用起来了。默认生成的font-face不支持IE8及以下浏览器,可以在项目设置的字体格式里面把EOT勾上。
第一步在css文件里面引用生成的font-face
@font-face {font-family: 'iconfont';
src: url('iconfont.eot'); /* IE9 */
src: url('iconfont.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
url('iconfont.woff') format('woff'),
url('iconfont.ttf') format('truetype'),
url('iconfont.svg#iconfont') format('svg');
}
第二步:定义使用iconfont的样式
.iconfont{
font-family:"iconfont" !important;
font-size:16px;
font-style:normal;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
第三步:挑选相应图标并获取字体编码,应用于页面
<i class="iconfont"></i>
最后能在页面展示下图的效果。
在实际使用中,有些图标不是直接放到页面上的,而是类似background方式放到页面上的。这个时候就可以使用font-class方式来展示这些字体图标。
在2011年的时候写过一篇文章《JQuery+CSS实现分类菜单前面不同的图标》和demo,是通过JQuery和CSS配合在展示不同图标的,这里使用iconfont就非常简单了,通过伪类的方式展示图标,在元素之前或者元素之后加上一些内容,可以查看使用iconfont来实现的demo。
Html代码:
<div class="menu">
<ul class="nav">
<li class="page_item home"><a href="https://www.weisay.com/blog/">首页</a></li>
<li class="page_item page-item-1"><a href="https://www.weisay.com/blog/about/">关于</a></li>
<li class="page_item page-item-2"><a href="https://www.weisay.com/blog/archives/">归档</a></li>
<li class="page_item page-item-3"><a href="https://www.weisay.com/blog/guestbook/">留言</a></li>
<li class="page_item page-item-4"><a href="https://www.weisay.com/blog/link/">链接</a></li>
</ul>
</div>
同样引用生成的font-face。
@font-face {font-family: 'iconfont';
src: url('iconfont.eot'); /* IE9 */
src: url('iconfont.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
url('iconfont.woff') format('woff'),
url('iconfont.ttf') format('truetype'),
url('iconfont.svg#iconfont') format('svg');
}
根据实际情况重新定义iconfont的样式
.page_item:before {
font-family: "iconfont" !important;
font-size: 16px;
font-style: normal;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
color:#444;
}
使用:before配合content,在元素之前加上图标的unicode编码,注意content里面引用的内容,比如Unicode编码是  他用&#x后面的4个字符 \e65e
.home:before{content: "\e65e";}
.page-item-1:before{content: "\e60e";}
.page-item-2:before{content: "\e9c0";}
.page-item-3:before{content: "\e605";}
.page-item-4:before{content: "\e606";}
最后
:before 和 :after算是很常用的伪类了,有时候我也会经常看到 ::before 和 ::after 这样的写法。
虽然效果好像差不多,但声明不同,伪类和选择器之间用一个冒号隔开,伪元素则是两个冒号隔。
伪类和伪元素的区别
伪类和伪元素都是为了给一些特殊需求加样式,定义上基本一致。
伪类像类选择器一样给已存在某个元素添加额外的样式;伪元素则是给自己虚拟的元素添加样式。
:before和::before 与 :after和::after 写法是等效的。
:before/:after 是Css2的写法,::before/::after 是Css3的写法。
:before/:after 的兼容性要比 ::before/::after 好。
所以IE8及以上能支持 :before/:after 但IE8就不支持 ::before/::after 了,当然如果不需要IE8支持,就用双冒号(::)吧。
不知js如何定義偽類?
@ejsoonjs定义伪类?
是用js来替换css的伪类值吧,这种还是比较多。
阿里的iconfont确实挺好用,自定义自己需要的,也不浪费。
@左手拨弦确实挺好用,引用也方便。
博客没用几个图标,直接用SVG,不喜欢集成太多
@未命名图标不多确实没有集成的必要,不过iconfont好处就是,只需整合自己需要的图标,不用像Font Awesome一样不管用几个图标都要集成他一套。
哈哈,又开始研究新的东西了。
@阿哲人还是要学习,接触新的事物,不然很容易退步。
这个引用方法是基础玩法,其实它可以像Font Awesome一样的。
大佬又更新主题了?
@橘子书基础玩法已基本够用了,想彩色图标的使用symbol 引用模式。Font Awesome单纯使用起来确实比较方便,人家都封装集成好了。
主题就换换图标,改改细节。
@William也对,简单就够。
其实博客越到后面,小改是乐趣!
真不错啊小威 主体整体美化了很多细节 weisaybox 也来更新一下
@sys哈哈,有时间把weisaybox更新一下
厉害了,阿里图标库确实挺多的
@亮娃子阿里图标确实多,可以隔段时间就换一批
我自己更倾向需要用几个就集成几个,字体更小一些。
@Jeff是的,自己用也就那么10几20来个图标,集成起来生成文件小,加载快一点。
现在的主题刚用时就集成了Font Awesome,现在也难得改了!
不过我网站Logo用的就是iconfont,确实好用!
@LvtuFont Awesome也是不错的,我整了个pro研究了一下,毕竟是国外的,国内的品牌图标就很少。不过单纯使用里面的基本图标还是比较方便的。
@William嗯,国内品牌图标是比较少,貌似图标可以提交申请的,不过现有的一般的网站够用了!
@Lvtu本来想把评论显示浏览器和操作系统的图标都换了的,我自己已经在那个插件上补充了很多偏门一些的浏览器图标了,就没办法弄到那么多的浏览器的字体图标了。
@William难得看到你又开始折腾主题了,不过灰色背景评论最后一条背景下面好像有点小问题(和评论框底部对齐了)。。。
@Lvtu哈哈,火眼金睛啊,确实有点问题,刚刚调整了一下,应该正常了。或者苹果电脑显示效果好,比较容易看到,Windows下我还寻找了一番。
@William嗯,现在正常了!
我的也用上了几个,确实比较方便。
厉害了。我用的主题集成了几个图标库,省得折腾了
@黑桃三集成多就是想用哪个用哪个。