陈德馨

Font Awesome图标在IE浏览器不显示的解决方法

2383人参与 |分类: 站长百科|时间:2016年12月07日 13:15

IIS安装了font awesome图标字体库之后,在firefox和chrome上浏览正常,但在IE上却看不见图标,咋回事?查询后才知道,font awesome在IE上确实不能运行正常。后来通过查询,原来可以通过两个方法来解决这个问题,完美解决了Font Awesome图标在IE浏览器不显示的问题。

1、css利用expression表达式输出图标

由于 content: "\f08e"; 的写法在IE无效,所以图标无法显示。不过css里利用expression表达式,使用 this.innerHTML 方法却是可以输出图标的。代码如下所示:

.fa-external-link {
  *zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '');
}

这其中  便是一个font awesome图标(超链接箭头)。*zoom 前面的星号“*”是表示只对IE浏览器有效。

html代码就可以这样写来输出一个font awesome图标:

<i class="fa fa-external-link"></i>

这里 fa 是另一个相关的css类,主要是要声明 font-family 使用 fontAwesome 字体的作用。代码如下:

.fa {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

完整html代码如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh-CN">
<head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
 <meta http-equiv="Content-Language" content="zh-CN" />
     <meta http-equiv="Cache-Control" content="no-transform " /> 
     <meta http-equiv="Cache-Control" content="no-siteapp" />
     <meta name="viewport" content="width=device-width,initial-scale=1.0,user-scalable=yes" />
     <title>font awesome实例_兼容IE浏览器的方法_陈德馨博客 ChenDeXin.com</title>
<style type="text/css">
/* 引用图标文件 注意路径 */
@font-face {
  font-family: 'FontAwesome';
  src: url('fonts/fontawesome-webfont.eot?v=4.2.0');
  src: url('fonts/fontawesome-webfont.eot?#iefix&v=4.2.0') format('embedded-opentype'),
  url('fonts/fontawesome-webfont.woff?v=4.2.0') format('woff'),
  url('fonts/fontawesome-webfont.ttf?v=4.2.0') format('truetype'),
  url('fonts/fontawesome-webfont.svg?v=4.2.0#fontawesomeregular') format('svg');
  font-weight: normal;
  font-style: normal;
}
.txtContent{
    width:100%;
    margin:30px 30px 30px 30px;
}
.fa {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}
.fa-external-link:before {
  content: "\f08e";  /* 非IE浏览器有效 */
}
.fa-external-link {
  *zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xf08e;');
}
.fa-fw {
  width: 1.28571429em;
  text-align: center;
}
</style>
</head>
<body>
    <div>
        <font style="font-size:16px;font-weight:bold">超链接图标</font><br>
        <a href="#">超链接图标<i class="fa fa-external-link fa-fw"></i></a><br>
    </div>
</body>
</html>

代码运行结果如图:

49401.jpg

css利用expression表达式输出图标

2、html直接输出图标

除了上述使用css类输出图标外,其实我是还可以直接在html里写上图标编码,网页打开时即显示相应的图标。这样说比较抽象,我们看看下面的写法范例:

<span style="">&#xf08e;</span>

这代码里 &#xf08e; 便是一图标的编码(超链接箭头)。查看所有font awesome图标的编码

icon-external-link是css类名,主要作用是要声明 font-family 使用的字体为 FontAwesome

.icon-external-link {
  font-family:FontAwesome; /* FontAwesome 无引号 */
  font-weight: normal;
  font-style: normal;
}

FontAwesome 是一个变量,它是由 @font-face 定义的,如下代码所示:

@font-face {
  font-family: 'FontAwesome'; /* FontAwesome 有引号 */
  src: url('fonts/fontawesome-webfont.eot?v=4.2.0');
  src: url('fonts/fontawesome-webfont.eot?#iefix&v=4.2.0') format('embedded-opentype'),
  url('fonts/fontawesome-webfont.woff?v=4.2.0') format('woff'),
  url('fonts/fontawesome-webfont.ttf?v=4.2.0') format('truetype'),
  url('fonts/fontawesome-webfont.svg?v=4.2.0#fontawesomeregular') format('svg');
  font-weight: normal;
  font-style: normal;
}

声明 @font-face 时,需要特别主要各文件的路径要正确。

完整的html代码如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh-CN">
<head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
 <meta http-equiv="Content-Language" content="zh-CN" />
     <meta http-equiv="Cache-Control" content="no-transform " /> 
     <meta http-equiv="Cache-Control" content="no-siteapp" />
     <meta name="viewport" content="width=device-width,initial-scale=1.0,user-scalable=yes" />
     <title>font awesome实例_兼容IE浏览器的方法_陈德馨博客 www.chendexin.com</title>
<style type="text/css">
@font-face {
  font-family: 'FontAwesome';
  src: url('fonts/fontawesome-webfont.eot?v=4.2.0');
  src: url('fonts/fontawesome-webfont.eot?#iefix&v=4.2.0') format('embedded-opentype'),
  url('fonts/fontawesome-webfont.woff?v=4.2.0') format('woff'),
  url('fonts/fontawesome-webfont.ttf?v=4.2.0') format('truetype'),
  url('fonts/fontawesome-webfont.svg?v=4.2.0#fontawesomeregular') format('svg');
  font-weight: normal;
  font-style: normal;
}
.txtContent{
    width:100%;
    margin:30px 30px 30px 30px;
}
.icon-external-link {
  font-family:FontAwesome;
  font-weight: normal;
  font-style: normal;
}
</style>
</head>
<body>
    <div>
        <font style="font-size:16px;font-weight:bold">超链接图标</font><br>
        <span style="">&#xf08e;</span>
    </div>
</body>
</html>

运行结果如图:

49402.jpg

以上是两个解决font awesome兼容IE浏览器的方法,一般来说,第一个方法更好,更容易维护。

扩展:

Font Awesome 4.2.0下载

来源:陈德馨博客(微信/QQ号:35435164),转载请保留出处和链接!

地址:

必填

选填

选填

◎已有 6 人评论,请发表您的观点。

  
    
1楼手机蛙排名软件   2016-12-16 11:58:15
这个写的很好,ie浏览器总是各种问题,又一解决了一个新问题
回复
2楼松松软文发布   2016-12-19 08:02:21
不是很懂代码的。。
回复
2楼陈德馨[博主]   2016-12-25 21:19:22
松松是博客行业的第一人!
回复
3楼松松软文发布   2016-12-19 08:02:39
不是很懂代码的。。
回复
4楼欣荣制品   2016-12-28 16:19:02
这个小知识挺实用的
回复