• 移动端字体图标不显示的Bug


    用16进制编码的字体图标在部分小米机型显示不正常。

    测试机型:小米1,小米1s,小米2
    浏览器:微信6.1内置浏览器,QQ浏览器 5.7 X5内核
    字体图标:不显示
    svg图标:显示正常

    以下来自额微信内置浏览器的截图,字体图标不显示。

    内置浏览器,uc浏览器,正常显示,以下为内置浏览器截图。

     

    如 Glyphicons 官网的字体图标就显示不正常,svg图标显示正常。

    Glyphicons 官网:http://glyphicons.com/

    截图来自QQ浏览器(新版微信采用QQ浏览器内核)访问Glyphicons 官网,右侧杯子部分是SVG的图片,显示正常;右侧红色标签隔壁空白部分,一堆的iconfont图标都显示异常。

     

    国内阿里Iconfont:http://www.iconfont.cn/    官网采用SVG绘制正常显示,下载回来的demo显示不正常。

    以下截图来自阿里Iconfont下载回来的demo。

     

     偶尔发现icomoon首页的图标采用了字体图标,但是能正常显示。
    icomoon官网地址:https://icomoon.io/
    /* icomoon 的@font-face声明字体如下*/
       @font-face {
            font-family: 'icomoonio';
            src: url("https://s3.amazonaws.com/icomoon.io/4/icomoonio/icomoonio.eot?bqv7mo");
            src: url("https://s3.amazonaws.com/icomoon.io/4/icomoonio/icomoonio.eot?#iefixbqv7mo") format("embedded-opentype"),
            url("https://s3.amazonaws.com/icomoon.io/4/icomoonio/icomoonio.svg?bqv7mo#icomoonio") format("svg"),
            url("https://s3.amazonaws.com/icomoon.io/4/icomoonio/icomoonio.woff?bqv7mo") format("woff"),
            url("https://s3.amazonaws.com/icomoon.io/4/icomoonio/icomoonio.ttf?bqv7mo") format("truetype");
            font-weight: normal;
            font-style: normal
        }
    /*定义使用iconfont的样式*/
        .ff-icomoon {
            font-family: 'icomoonio'
        }
    /*获取字体编码,应用于页面*/
        [data-icon]:before {
            font-family: 'icomoonio';
            content: attr(data-icon);   /*获取标签的data-icon字体编码,与平常我们的方式不太一样*/
            speak: none;                /*取消发音*/
            line-height: 0
        }  
    各种分析调试对比后发现,原来是加载顺序有问题。

    移动端有问题的加载顺序:eto,woff,ttf,svg
    //有兼容问题的字体图标加载顺序
    @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'), /* chrome、firefox */
      url('iconfont.ttf') format('truetype'), /* chrome、firefox、opera、Safari, Android, iOS 4.2+*/
      url('iconfont.svg#iconfont') format('svg'); /* iOS 4.1- */
    }
    移动端字体图标加载顺序应该为 eto,svg,woff,ttf(把SVG放到前面) 
    //移动端字体图标
    @font-face {font-family: "iconfont";
      src: url('../font/iconfont.eot'); /* IE9*/
      src: url('../font/iconfont.svg#iconfont') format('svg'), /* iOS 4.1- */
      url('../font/iconfont.woff') format('woff'), /* chrome、firefox */
      url('../font/iconfont.ttf') format('truetype'); /* chrome、firefox、opera、Safari, Android, iOS 4.2+*/ 
    }
     
     
     不过用fiddler抓包,只看到手机请求了svg,兼容情况良好。
     
    SVG字体兼容如下图: http://caniuse.com/#search=svg%20font
     
    据说安卓4.1一下不支持SVG,但是没机器,测试不了,有Android 2.3的朋友帮忙测一下给个留言感激不尽。
     
     
    在ios系统图标会往下错位,如下图:
     
    设置一下默认行高为1即可。
    .iconfont{line-height:1;}

    设置默认行高后。

     
  • 相关阅读:
    不会全排列算法(Javascript实现),我教你呀!
    驰骋页面,谁主沉浮-也谈清除浮动
    你不知道的parseInt
    Javascript函数重载,存在呢—还是存在呢?
    在这个看脸的世界,该如何优雅的创建JS对象
    Python 函数的使用小结
    Python 集合(set)的使用总结
    Python 文件操作
    python 中字典的操作(增、删、改、查)
    python 中list的操作(循环、切片、增、删、改、查、反转、排序)
  • 原文地址:https://www.cnblogs.com/Megasu/p/4305116.html
Copyright © 2020-2023  润新知