同样字号的字体在不同浏览器显示大小不一样
请教大神该怎么解决?
第一张是chrome浏览器
第二张是QQ浏览器
手机端显示的为跟chrome浏览器一样的,字体都偏大,QQ浏览器是正常显示的。
同样字号的字体在不同浏览器显示大小不一样
请教大神该怎么解决?
第一张是chrome浏览器
第二张是QQ浏览器
手机端显示的为跟chrome浏览器一样的,字体都偏大,QQ浏览器是正常显示的。
字号一样,那也要用的字体是不是一样的,不同浏览器对字体的支持也是有差异的。
你第一张图貌似是pc的截图,第二张是手机截屏么。
你要注意的书,各个手机系统有自己的默认字体,且都不支持微软雅黑.
如无特殊需求,手机端无需定义中文字体,使用系统默认.
英文字体和数字字体可使用 Helvetica ,三种系统都支持.
通常的做法是:
body {font-family: "Helvetica Neue", Helvetica, STHeiTi, sans-serif;}
另外,iOS 4.0+ 使用英文字体 Helvetica Neue,之前的iOS版本降级使用 Helvetica。
中文字体设置为华文黑体STHeiTi(中文名称叫黑体-简)。设计时候一般用华文黑体来代替,两者差异微小。
关于适配的问题,可以瞄下我的这篇:
http://www.jianshu.com/p/3a50...
希望对你有所帮助。
其实上面几位大神的答案,都是把问题复杂化了。出现这种情况的原因很简单,就是IE,Edge,Chrome,Firefox等主流浏览器在渲染文本内容时,会根据系统文本比例等比换算。但360,搜狗,QQ等浏览器并不会,只会显示文本原本的大小。
3 回答5.1k 阅读✓ 已解决
5 回答1.9k 阅读
2 回答1.9k 阅读✓ 已解决
4 回答1.9k 阅读✓ 已解决
1 回答3k 阅读✓ 已解决
2 回答2.3k 阅读✓ 已解决
3 回答2.4k 阅读
本文是找了在网上搜了好久才找到非常棒的一篇文章,很好的解决了这个问题。
原文地址:https://github.com/amfe/artic...
这个特性被称做「Text Autosizer」,又称「Font Boosting」、「Font Inflation」,是 Webkit 给移动端浏览器提供的一个特性:当我们在手机上浏览网页时,很可能因为原始页面宽度较大,在手机屏幕上缩小后就看不清其中的文字了。而 Font Boosting 特性在这时会自动将其中的文字字体变大,保证在即不需要左右滑动屏幕,也不需要双击放大屏幕内容的前提下,也可以让人们方便的阅读页面中的文本。
不过这个特性并不总是有必要的,还好在查到问题原因的同时,大家也讨论了对这个问题的一些处理方案:
手动指定 viewport width=320,这时 Font Boosting 不会被触发。(后边可以知道,这个说法不严谨,在其他设置均为默认值时,这一条才有效)
Font Boosting 仅在未限定尺寸的文本流中有效,给元素指定宽高,就可以避免 Font Boosting 被触发。
显然第 2 条方案是有缺陷的,文本内容不可能都指定宽高。不过还好,我们通过指定 max-height , min-height, min-width, max-width(经 @Ovaldi 指正,只有 max-height 有效) 也是可以的。比如 body * { max-height: 999999px; } 就可以无副作用的禁掉 Font Boosting 特性。当然,我觉得没必要使用通用选择器,用类似 p { max-height: 999999px; } 可能更好一些。
到这里,我们已经明白问题所在,并且也有解决方案了。但是有一个问题仍然困扰着我:当字体大于某一个值时(比如当不指定viewport width,手机屏幕width=320,字体大于等于82px时),这个 Font Boosting 就始终不会被触发。Chrome 是如何计算的,这其中的逻辑又是什么?
这一次问题解决起来就没有那么容易了,我先是各种搜索无果,然后自己人肉去试,慢慢找规律,但是发现变化不是线性的,看来这个公式还比较复杂。终于在今天被我发现了这篇文章:Chromium's Text Autosizer,彻底解释了我的疑问。
Font Boosting 具体的实现代码在 TextAutosizer.cpp 这个文件中可以看到,有兴趣的可以翻一下。
简单说来,Font Boosting 的计算规则伪代码如下:
其中变量名解释如下,更具体的说明可以参考上边的两个链接。
originFontSize: 原始字体大小
computedFontSize: 经过计算后的字体大小
multiplier: 换算系数,值由以下几个值计算得到
deviceScaleAdjustment: 当指定 viewport width=device-width 时此值为 1,否则值在 1.05 - 1.3 之间,有专门的计算规则
textScalingSlider: 浏览器中手动指定的缩放比例,默认为 1
systemFontScale: 系统字体大小,Android设备可以在「设备 - 显示 - 字体大小」处设置,默认为 1
clusterWidth: 应用 Font Boosting 特性字体所在元素的宽度(如何确定这个元素请参考上边两个链接)
screenWidth: 设备屏幕分辨率(DIPs, Density-Independent Pixels),如 iPhone 5 为 320
说了这么多,貌似只需要记住
**指定的元素{ max-height: 999999px; }
用 max-height: 100% 可能会更好一些。**