转自:http://xiaoho.com/webapp-font-size/

前言

文字是网页内容的一枚大将,我们无时无刻都在看着它,只要是你盯屏幕上的任何一个地方都会有文字。地铁上无时无刻都在盯着屏幕上的人对于文字更为敏感,太大不行,太小TN又看不清上面到底在说什么,有时候车一晃完全是蛋疼的货。下面一篇文字就是针对webapp的文字做了一些小捣腾,肯定有很多不足的地方,欢迎补充。

有必要了解一下我们所常见的数值。

关于单位

对于webapp上文字用什么单位的问题,一直以来都是让我们csser头疼的问题,公说公有理,婆说婆有理。有人说px好,有人说em自适应,有的说百分比牛逼,rem文字出来就跟风说目前最好的就是rem单位。不管是什么说,我们还是要实地捣腾一下。

相对PC端,我们基本要做的就是根据设计图设计出来的文字大小,PS上是什么字体大小我们就直接在css控制文字的大小,基本都是以px像素为单位的,当然除了自适应页面的文字需要特别使用em或者rem外。所以对于pc端只要不涉及到自适应页面,我们通常的做法就是px通吃,一个字“爽”。

pc端中的px像素单位是针对电脑屏幕来说的一个单位,对于桌面上来说,衡量屏幕尺寸的就是分辨率了,1920*1280的分辨率屏幕,横向就是1920像素,纵向1280个像素点(除高清屏幕外),那我们设置一个字体样式 font-size:12px 计算得出来的应该是相对于电脑屏幕分辨率的12个单位长度,所以有时候我们会陷入一个误区:px像素单位是一个绝对长度单位,但是其实它也是一个相对单位长度,它相对它的显示设备分辨率。

所以在我们印象里面,12像素的文字它所占的面积应该是12*12像素,但其实它不是,起码在我的设备1920*1080分辨率下它的面积如下:

从图中我们可以看出每个字所占的大小应该是10~11*12个像素点,从这点上我们可以直接排除px说是绝对像素。

绝对大小值在w3c只有7个值,就是平常我们很少用到的那些英文数值 xx-small,x-small,small,medium,large,x-large,xx-large这7个绝对值,具体的请看这里 7个绝对大小值,而一些我们最平常的用到单位px,em,百分比都不在里面,所以记住了这些个词儿都不是绝对大小值。

所以我们要做的就是把这几个数值的文字在手机上做一下实验,然后再看看他们有什么变化

px像素单位

因为安卓机已经宕机了,公司有没有配备,因此只有5S的数值,友盟指数来选设备,目前苹果分辨率比例最大为640*960和640*1136。

测试代码

<span style="font-size:14px;">CSS:
<span class="css-class"><span class="before">.</span>f12</span><span class="paren css-block-open">{</span><span class="builtin css-declaration-kw">font-size<span class="after">:</span></span><span class="css-length">12<span class="after">px</span></span>;<span class="paren css-block-close">}</span>
<span class="css-class"><span class="before">.</span>f14</span><span class="paren css-block-open">{</span><span class="builtin css-declaration-kw">font-size<span class="after">:</span></span><span class="css-length">14<span class="after">px</span></span>;<span class="paren css-block-close">}</span>
<span class="css-class"><span class="before">.</span>f16</span><span class="paren css-block-open">{</span><span class="builtin css-declaration-kw">font-size<span class="after">:</span></span><span class="css-length">16<span class="after">px</span></span>;<span class="paren css-block-close">}</span>
html
<div class=<span class="string"><span class="before">"</span>f12<span class="after">"</span></span>>这是12像素的文字</div><div class=<span class="string"><span class="before">"</span>f14<span class="after">"</span></span>>这是14像素的文字</div><div class=<span class="string"><span class="before">"</span>f16<span class="after">"</span></span>>这是16像素的文字</div></span>

meta标签没有设置width=device-width,initial-scale这些属性值

5S效果如下

假如你手中有安卓设备的,麻烦也拿出来扫一扫,然后在评论中贴出截图,不胜感激。

假如头部添加

<span style="font-size:14px;"><span class="paren xml-tagangle"><</span><span class="keyword xml-tag xml-tag-open">meta</span> <span class="builtin xml-attribute">name</span><span class="undefined"></span><span class="operator">=</span><span class="string"><span class="before">"</span>viewport<span class="after">"</span></span> <span class="builtin xml-attribute">content</span><span class="undefined"></span><span class="operator">=</span><span class="string"><span class="before">"</span>width=device-width,initial-scale=1.0,maximum-scale=1.0,uer-scalabe=no<span class="after">"</span></span><span class="paren xml-tagangle">/></span></span>

5S效果如下

不妨你也可以扫扫下面二维码

em单位和百分比

这两个值会从父元素继承font-size的大小,然后根据自身的给定的值来计算出来,一个父元素div设置为16px(没有定义html,body字体大小情况下),那么这个父元素他的相对值都是1em和100%(也就是16px),但是假如div包含一个span标签,span标签指定为font-size:1.125em;font-size:120%;,那么这个span标签文字大小计算如下:
16*1.125em=18px
16*120%=19.2px(显示应该是19px)

假如在span标签下又有个一个i标签,i标签又指定em或者百分比数值,那么这时span中的font-size其实就是1em或者是100%,那么i标签就从span标签继承这个值,然后计算自己的值。所以有时候计算起来会很麻烦,每次都先计算父元素的值是多少,然后再计算子元素的数值。

因为em和百分有点相似所以把这两个合并在一起来说,他们的计算值都是基于父元素的值来计算的。

代码如下

<span style="font-size:14px;">CSS:
<span class="css-class"><span class="before">.</span>em-1</span><span class="paren css-block-open">{</span><span class="builtin css-declaration-kw">font-size<span class="after">:</span></span><span class="css-length">0.75<span class="after">em</span></span>;<span class="paren css-block-close">}</span>
<span class="css-class"><span class="before">.</span>em-2</span><span class="paren css-block-open">{</span><span class="builtin css-declaration-kw">font-size<span class="after">:</span></span><span class="css-length">0.875<span class="after">em</span></span>;<span class="paren css-block-close">}</span>
<span class="css-class"><span class="before">.</span>em-3</span><span class="paren css-block-open">{</span><span class="builtin css-declaration-kw">font-size<span class="after">:</span></span><span class="css-length">1<span class="after">em</span></span>;<span class="paren css-block-close">}</span>
html
<div class=<span class="string"><span class="before">"</span>em-1<span class="after">"</span></span>>这是0<span class="css-class"><span class="before">.</span>75em</span>的文字</div><div class=<span class="string"><span class="before">"</span>em-2<span class="after">"</span></span>>这是0<span class="css-class"><span class="before">.</span>875em</span>的文字</div><div class=<span class="string"><span class="before">"</span>em-3<span class="after">"</span></span>>这是1em的文字</div></span>

meta没有加的情况,效果如下


二维码如下

加上meta的效果如下


二维码如下

rem

w3c定义rem是从根元素计算,不管你的div标签包含N个子元素,你的子元素的字体大小都是直接由根元素计算得出,如下

<span style="font-size:14px;">html<span class="paren css-block-open">{</span><span class="builtin css-declaration-kw">font-size<span class="after">:</span></span>6<span class="css-length">2.5<span class="after">%</span></span>;<span class="paren css-block-close">}</span>       <span class="comment comment-multiline"><span class="before">/*</span> font-size 62.5% = 10px =1rem <span class="after">*/</span></span>
body<span class="paren css-block-open">{</span><span class="builtin css-declaration-kw">font-size<span class="after">:</span></span><span class="css-length">100<span class="after">%</span></span>;<span class="paren css-block-close">}</span>      <span class="comment comment-multiline"><span class="before">/*</span> font-size 100% = 10px = 1rem <span class="after">*/</span></span>
<span class="css-class"><span class="before">.</span>rem-1</span><span class="paren css-block-open">{</span><span class="builtin css-declaration-kw">font-size<span class="after">:</span></span>1.2rem;<span class="paren css-block-close">}</span>
<span class="css-class"><span class="before">.</span>rem-2</span><span class="paren css-block-open">{</span><span class="builtin css-declaration-kw">font-size<span class="after">:</span></span>1.4rem;<span class="paren css-block-close">}</span>
<span class="css-class"><span class="before">.</span>rem-3</span><span class="paren css-block-open">{</span><span class="builtin css-declaration-kw">font-size<span class="after">:</span></span>1.6rem;<span class="paren css-block-close">}</span></span>

html是根元素,那为什么还要写上body,其实也是根据个人习惯来写,是为了方便自己计算。有html定义属性的情况下,body就作为老二出现,假如缺少html定义,那么body就是老大。

此外,并不是所有的浏览都支持rem单位,不过还好在移动端除了opera 8以外的所有移动浏览器都支持rem单位值,更多详情,请移步caniuse.com,浏览器对rem支持情况

代码还是一样的代码,味道还是一样的味道,下面我们来看看移动浏览不加入meta的效果

二维码如下:

再加一点meta配方,再加一点手段,舔一舔,扭一扭


二维码如下:

对于取值

想必到现在各位应该会有所明白了吧,其实对于font-size的取值没有特别之处,最后我觉得是回归到

对于不加meta标签的情况下px像素单位、em单位、rem单位的效果图如下(PC端不做对比)

加上meta为width=device-width 标签之后

看见上面这图片,估计你就会恍如大悟了,其实用什么数值已经不重要了。所以我们可以先按照设计稿的数值来输出,后期不合适再稍作调整。

注意:

假如你头部的meta设置像淘宝手机网

<span style="font-size:14px;"><meta name=<span class="string"><span class="before">"</span>viewport<span class="after">"</span></span> content=<span class="string"><span class="before">"</span>initial-scale=0.5, maximum-scale=0.5, minimum-scale=0.5, user-scalable=no<span class="after">"</span></span>/></span>

那么你在设置文字字体的时候应该是为设计稿的2x,而不是直接按照设计稿输出。

结语

所以,其实当meta头部设置宽度=设备宽度的时候,就不存在到底在纠结用什么单位,你喜欢怎么用就怎么用,前提是你把字体统一化,建议用px和rem。对于射击湿的设计稿应该是以这几大主流设备分辨率来进行设计,重构师应该最后还是要根据相关的设备做向下和向上兼容。

关于webapp中的文字单位的一些捣腾相关推荐

  1. [安卓基础] 008.Android中的显示单位

    Android中的显示单位 px (pixels)像素 一般HVGA代表320x480像素,这个用的比较多. dip或dp (device independent pixels)设备独立像素 这个和设 ...

  2. 移动设备web文字单位_移动设备如何塑造现代Web设计

    移动设备web文字单位 I was working with a nonprofit earlier this month on redesigning their website and durin ...

  3. html 中rem是什么单位,了解并使用CSS中的rem单位

    什么是 rem 可能在你使用收音机或者用其他音乐播放器之前,就已经听过"R.E.M."这个词了.在这个乐队眼中,这个词是"浅睡眠时眼球的快速转动"的缩写,而在 ...

  4. css font size 单位,css中font-size的单位总结:px、em、pt

    px:基于像素的单位.像素是一种有用的单位,因为在任何媒体上都可以保证一个像素的差别确实是可见的. em :一般用来测量长度的通用单位(例如元素周转的页边空白和填充),当用于指定字体大小时,em单位是 ...

  5. 详解css中的em单位

    文章目录 详解CSS中的em单位 解释 Examp-01 源码 Example-02 源码: 详解CSS中的em单位 css中的长度单位有很多,可谓五花八门,而下面本篇文章就来给大家介绍一下em单位. ...

  6. autocad不能画图_Autocad中的文字样式及标注样式设置

    我刚开始工作的时候,主任就安排我出去设代了,刚好运气很不错,遇上了善解人意的业主.热心助人的跟审.技术强大的后方以及没那么事逼的施工方,小日子总的来说过的不错.但是有一天突然接到电话,让我五天之内出一 ...

  7. 03-07 创建和编辑AutoCAD实体(七) 向图形中添加文字(1)使用文字样式

    Add Text to Drawings向图形中添加文字 Text conveys important information in yourdrawing. Use text objects for ...

  8. CSS中的尺寸单位总结

    文章目录 CSS中的尺寸单位总结 CSS中的尺寸单位总结 绝对单位: px(Pixel):像素 (1px = 1/96th of 1in); pt(Point):大约1/72英寸 (1pt = 1/7 ...

  9. 如何在GIS中转出并显示CAD的DWG中的文字(注记)数据

    在使用GIS数据时经常会遇到DWG格式的数据,尤其是从国家单位拿到的测绘数据.很多时候我们需要将DWG数据转换为传统的GIS数据使用.下面我演示如何使用[GIS数据转换器]来将DWG数据转换为SHP数 ...

最新文章

  1. Python3.7模块之hashlib
  2. 不用if/while等操作实现
  3. [noip2017]列队 splay
  4. mysql在线增加字段_MySQL在线加字段实现原理
  5. 富文本编辑器 CKeditor 配置使用
  6. sql server 2005管理员手册_执行一条sql语句都经历了什么?
  7. 神经网络技巧篇之寻找最优参数的方法【续】
  8. 解决sql2008附加不了2005的数据库文件的问题
  9. SnagIt - 专业的截图工具
  10. 中职生c语言搜题软件,适合法考学生用的搜题软件,这几款帮你搞定!
  11. 基于CIM的智慧城市建设
  12. 中国普通魔方行业市场供需与战略研究报告
  13. Error in Summary.factor ‘min’ not meaningful for factors
  14. (励志)(转载) 在华为的十年
  15. 招商加盟竞价推广,怎么做才会有效果?
  16. 迅雷7 down.php,帝国CMS教程:教你如何添加迅雷下载
  17. brpc搭建、编译和使用
  18. 逻辑函数的简化之图解法(卡诺图法)
  19. Arduino读取GPS模块
  20. 当“大嘴”李国庆遇见“大炮”罗永浩

热门文章

  1. goaheadlinux移植_goAhead2.5嵌入式web服务器移植
  2. linux lo回环服务名称是什么,什么叫 lo 回环? ESTABLISHED及RELATED?[已经解决]
  3. 【深度强化学习】深度学习:Pytorch的使用
  4. 中国联通虚商用户接近1800万:试点模组套餐转售模式
  5. 树莓派 ROS 学习(二)小乌龟 turtlesim
  6. Excel如何快速将工作簿中的图片全部保存下来?
  7. 亚马逊跟卖是什么?新手怎么跟卖?
  8. Cocos2d-x 3.2 大富翁游戏项目开发-第二十四部分 彩票开奖
  9. Python 支持向量机分类算法实现
  10. 5年客户端开发的程序员如何转型服务端开发?