作者:仅愚
链接:https://www.zhihu.com/question/22022905/answer/20585820
来源:知乎
著作权归作者所有,转载请联系作者获得授权。

  1. :before(或:after)是什么玩意?

答:伪元素(注意,不是伪类)。
它虽然被收录到css3标准中,但其实主流浏览器都已经支持伪元素了,这其中包括了IE8+。
伪元素实际上在html dom中不存在,但会被浏览器渲染成html的一个节点,比如题主提到的#twitter:before,就是在#twitter这个标签里的开始处插入了一个子元素(节点),同理,:after是在该元素的最后插入子元素,它与以下html具有相同的效果:

<div id="twitter">
<span></span><!-- 或者一个div -->
.....
</div>

伪元素与一个CSS属性息息相关,就是content,顾名思义,这是定义伪元素内容的,如:

#twitter:before{
display:inline;
content:'我是个伪元素';
}

相当于:

<div id="twitter">
<span>我是个伪元素</span>
.....
</div>

最广泛的应用大概是这样的:
&amp;lt;img src="https://pic1.zhimg.com/c0371e2dda7310a7534b4d1386545ba8_b.jpg" data-rawwidth="269" data-rawheight="181" class="content_image" width="269"&amp;gt;
剩下的小问题容我吃完饭来说。

==============

2.‘\f33f’是如何被显示为图标的?

答:
这里用到了WebFont,也就是一种“字体”,这种字体包含了矢量图标,诸如 ‘\f33f’就是对应矢量图标的编码。
你这段代码并不全,css里应该还包含这段:

@font-face {
font-family: 'XXX'; /* 给你的自定义WebFont命名 */
src:url('xxx.eot');
src:url('xxx.eot?#iefix') format('embedded-opentype'),
url('xxx.woff') format('woff'),
url('xxxn.ttf') format('truetype'),
url('xxx.svg#micon') format('svg');
font-weight: normal;
font-style: normal;
...
}

它的好处是不必再使用css spirit切图了,而且作为矢量图可以以任意你想要的尺寸显示,另外,这种方法兼容性很好(ie6 7 可以显示,前提是你为不同的浏览器准备了不同的字体文件格式,如eot、woff、ttf、svg)。
如何制作它?请参见@朱勃 的答案,已经很详细了,不再赘述。

3.直接将icon的unicode写在html上不就成了,为什么还得费劲加伪元素:before呢?

答:
从这段代码看,你知道'\f309'、'\f33f'分别代表的是哪些图标么?
别说你看不出来,即使WebFont的作者也看不出来啊,这些unicode编码显然不如html的class或者id语义化。如果在一个大型网站上多处复用这些font icon,那是相当要命的(每用一次就去查一查?),因此,就出现了一种题主展示的解决方案:

HTML:

<i class="icon icon_open"></i>

CSS:

@font-face{
font-family: 'MyFont'; /* 给你的自定义WebFont命名 */
src:url('xxx.eot');
src:url('xxx.eot?#iefix') format('embedded-opentype'),
url('xxx.woff') format('woff'),
url('xxxn.ttf') format('truetype'),
url('xxx.svg#micon') format('svg');
font-weight: normal;
font-style: normal;
...
}
.icon{
font-family: 'MyFont';
speak:none; /* 无障碍阅读所需要的,告诉屏幕阅读器不要读这个字符 */
font-size:14px;
font-variant:normal;
font-weight:normal;
text-transform: none;
...
}
.icon_open:before{
content:"\f001"; /* 相应图标的编码 */
...
}

然后你只要在任何你想使用该图标的地方插入HTML即可:

<nav>
<a href="open.html"><i class="icon icon_open"></i>Open</a>
</nav>
转自:https://www.zhihu.com/question/22022905

css content 如何自定义生成图标?的更多相关文章

  1. CSS学习笔记----CSS3自定义字体图标

    响应式网页字体图标 作者:大漠 日期:2014-01-28 点击:3220 @font-face Responsive 本文由大漠根据Jason的<Responsive Webfont Icon ...

  2. CSS content内容生成技术以及应用

    content属性早在CSS2.1的时候就被引入了,可以使用:before以及:after伪元素生成内容.此特性目前已被大部分的浏览器支持:(Firefox 1.5+, Safari 3.5+, IE ...

  3. CSS content内容生成技术以及应用(转)

    一.哗啦哗啦的简介 zxx://这里“哗啦哗啦”的作用是为了渲染一种氛围.content属性早在 CSS2.1的时候就被引入了,可以使用:before以及:after伪元素生成内容.此特性目前已被大部 ...

  4. 基于MVC4+EasyUI的Web开发框架经验总结(14)--自动生成图标样式文件和图标的选择操作

    在很多Web系统中,一般都可能提供一些图标的选择,方便配置按钮,菜单等界面元素的图标,从而是Web系统界面看起来更加美观和协调.但是在系统中一般内置的图标样式相对比较有限,而且硬编码写到样式表里面,这 ...

  5. CSS content应用

    一.简介 content属性早在 CSS2.1的时候就被引入了,可以使用:before以及:after伪元素生成内容.此特性目前已被大部分的浏览器支持:(Firefox 1.5+, Safari 3. ...

  6. 在项目中增加自定义icon图标

    以MUI框架为例,内容来自于MUI官网. mui如何增加自定义icon图标 mui框架遵循极简原则,在icon图标集上也是如此,mui仅集成了原生系统中最常用的图标:其次,mui中的图标并不是图片,而 ...

  7. (转)基于MVC4+EasyUI的Web开发框架经验总结(14)--自动生成图标样式文件和图标的选择操作

    http://www.cnblogs.com/wuhuacong/p/4093778.html 在很多Web系统中,一般都可能提供一些图标的选择,方便配置按钮,菜单等界面元素的图标,从而是Web系统界 ...

  8. 关于阿里图标库Iconfont生成图标的三种使用方式(fontclass/unicode/symbol)

    1.附阿里图标库链接:http://www.iconfont.cn/ 2.登录阿里图标库以后,搜索我们需要的图标,将其加入购物车,如图3.将我们需要的图标全部挑选完毕以后,点击购物车图标4.这时候右侧 ...

  9. sench touch 自定义小图标(转)

    自定义图标的方法 Sencha touch自带图标有限,有时需要自己添加图标.下面介绍自定义图标的方法: 首先需要生成图标字体.有许多网站提供在线生成图标字体的功能,比如IcoMoon,通过这个网站, ...

随机推荐

  1. 【分享】仿东软OA协同办公服务管理源码

    功能列表: 1.个人办公管理: 内部邮件.消息管理.手机短信.公告通知.新闻管理.投票管理.个人考勤 日程安排:我的安排.下属安排 工作日志:我的日志.日志查询.日志设置 工作汇报:我的汇报.下属汇报 ...

  2. Spring配置文件中别名的使用

    id是bean的唯一标识符号,若没有Id那么name为默认标识符号 如果配置了id又配置了name,那么name为别名,别名可以配置多个,这些别名用逗号.空格等隔开. 还可以通过<alias n ...

  3. 解决:笔记本安装mint18时,安装界面显示不全

    近日在给自己的笔记本安装mint18时,安装界面显示不全,就是安装时到了分区界面后看不到下一步. 很无奈.... 于是胡乱摸索,得到解决的办法. 按住键盘上的ALT键,用鼠标向上拖动安装的界面,最好是 ...

  4. 解决:Windows 开机弹出AotuIt ERROR 错误

    AutoIt是个脚本语言,常被用于自动化安装.网络上有些系统镜像里含有AutoIt脚本,用于系统的自动配置.出现这种问题往往有两种可能的原因: 1)做系统的时候没搞好.这种情况就需要换一个镜像文件. ...

  5. Java开发环境搭建——Eclipse配置

    Pa设置utf-8a.b. (虽然不知道Spelling设置了有什么意义) 显示行号 添加jar包 快捷键xml注释选中内容   CTRL+SHIFT+/格式化                CTRL ...

  6. 微信学习总结 09 解析接口中的消息创建时间CreateTime

    1 消息的创建时间 网页超链接的作用以及如何在文本消息中使用网页超链接 2. 具体实现 刘峰博主的博文已经分析的很清楚了,直接去看就行了 .http://blog.csdn.net/lyq8479/a ...

  7. 1 云计算系列之云计算概述和KVM虚拟化简介

    为什么会出现云之传统数据中学面临的问题 物理服务器的利用率非常低,浪费资源,且资源分配不合理,比如一台服务器CPU使用率不到40%,或者某个应用需要的硬件配置低但是服务器硬件配置高等等. 云计算概念 ...

  8. <<< Java提取网页源码

    package com.sevennight; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io ...

  9. spring aop的使用

    使用上次整合的s2sh工程,加入aop的功能.aop(面向切面编程)是一种对oop的完善,比如在进行数据库操作的时候执行方法前或者后加入一条日志记录,使用一个额外的类去做日志操作,让dao类专注地做它 ...

  10. (转载)Sumblime Text 2 常用插件以及安装方法

    [内容提要]使用Package Control组件在线安装更方便 安装Sublime Text 2插件的方法: 1.直接安装 安装Sublime text 2插件很方便,可以直接下载安装包解压缩到Pa ...