一、px与em

用px设置文字大小是再正常不过的事情,比如

html {font-size: 12px;}

随处可见的在设置width、height使用px,这也是细致稳妥的设置方法,这样做的缺点在于调整浏览器的文字大小并未影响以px为单位的文本,这对一部分用户造成了不便。

用em设置文字大小弥补了这个问题,em是一个相对单位。文字大小用em表示的情况下,可以随着浏览器字号(比如在chrome下“设置->高级设置->字号”)的变大(变小)而变大(变小),使用格式与px基本一样,比如

p {font-size: 1em;}

以上面这个p元素为例,em的计算方式是这样的:

  1. 若p的父元素设置了文字大小,如font-size:20px,则1em=20px;
  2. 若父元素没有设置文字大小,则继续寻找上层节点的文字大小,直到根节点html;
  3. 若根节点html没有设置文字大小,则取浏览器默认文字大小16px。

使用em有一个令人头疼的地方:

假设的文档结构是这样的:html>p>span,样式是这样的:

html {
font-size: 62.5%;/* 10px÷16px=62.5% */
}
p {
font-size: 1.4em;/* 14px */
}

现在我想设置span的文字大小为12px,我需要计算12/14=85.7%

span {
font-size: 0.857em/* 12px/14px=85.7% */
}

若还要设置span里面子节点的文字大小,计算会越来越痛苦。。。

这就是该rem出现的时候了。

二、rem

在CSS3中引入了rem,rem是指根元素(root element,html)的文字大小,IE9+与Firefox、Chrome、Safari、Opera等主流版本都支持。

设置过根节点的文字大小后,所有子节点的文字大小全部相对于根节点计算。比如html为10px,则1.2rem=12px,2rem=20px...以此类推。

html {
font-size: 62.5%;/* 10px÷16px=62.5% */
}
p {
font-size: 14px;
font-size: 1.4rem;
}
span {
font-size: 12px;
font-size: 1.2rem;
}

为了兼容不支持rem的浏览器,要在设置rem的前面写上对应的px值,实现优雅降级。

使用rem的好处是:它具有em的相对特性(相对浏览器),又不会像em一样难以计算和控制。

用rem设置文字大小的更多相关文章

  1. 响应式十日谈第一日:使用 rem 设置文字大小

    上面回顾: 在序言中我们已经提到了响应式的一些基本理念,比如: 响应式网页不仅仅是响应不同类型的设备,而且需要响应不同的用户需求.响应式的初衷是为了让信息更好的传递交流,让所有人无障碍的获取信息,同时 ...

  2. 使用 rem 设置文字大小

    一.那到底什么是 rem 呢? 规范中明确写道: Equal to the computed value of ‘font-size’ on the root element. 「rem」是指根元素( ...

  3. 【转】CSS3的REM设置字体大小

    rem 长度单位   在Web中使用什么单位来定义页面的字体大小,至今天为止都还在激烈的争论着,有人说PX做为单位好,有人说EM优点多,还有人在说百分比方便,以至于出现了CSS Font-Size: ...

  4. CSS3的REM设置字体大小

    在Web中使用什么单位来定义页面的字体大小,至今天为止都还在激烈的争论着,有人说PX做为单位好,有人说EM优点多,还有人在说百分比方便,以至于出现了CSS Font-Size: em vs. px v ...

  5. Android中设置文字大小的定义类型

    在Android中所有的组件可以设置大小,但是在设置大小的时候需要指定其单位,这些单位如下: px(pixels):像素: dip(device independent pixels):依赖于设备的像 ...

  6. QLabel设置文字大小和颜色

    https://blog.csdn.net/fm0517/article/details/4805462 ui.label是QLabel ui.label_4->setText("so ...

  7. Eclipse设置文字大小

    1,选择窗口,preference 2,general

  8. UIButton修改文字大小问题

    一.问题描述 通过UIButton对象font属性设置文字大小,却发现该属性在2.0.3.0就已经被废弃,ios不建议使用. 图1-1:点出UIButton对象的font属性提示被废弃 图1-2:UI ...

  9. iOS UIAlertView 文字对其方式 文字大小 设置方法

    - (void) willPresentAlertView:(UIAlertView *)alertView { for (UIView *subViewin alertView.subviews) ...

随机推荐

  1. Ubuntu 17.10 安装 “爱壁纸” 时,缺失了 python-support 依赖

    Ubuntu 17.10 安装 "爱壁纸" 的 deb 包时,缺失了 python-support 依赖.使用  sudo apt-get -f install 也没修复.查了下官 ...

  2. 关于linux系统如何实现fork的研究(二)【转】

    转自:http://www.aichengxu.com/linux/7166015.htm 本文为原创,转载请注明:http://www.cnblogs.com/tolimit/ 引言 前一篇关于li ...

  3. 13.Python3标准库--互联网

    (一)urllib.parse:分解url urllib.parse模块提供了一些函数,可以管理URL以及组成部分 1.解析 from urllib.parse import urlparse ''' ...

  4. JavaScript变量命名规则:匈牙利命名法

    匈牙利命名法语法 变量名=类型+对象描述 类型指变量的类型 对象描述指对象名字全称或名字的一部分,要求有明确含义,命名要容易记忆容易理解. 提示 虽然JavaScript变量表面上没有类型,但是Jav ...

  5. POJ 2230 Watchcow(欧拉回路:输出点路径)

    题目链接:http://poj.org/problem?id=2230 题目大意:给你n个点m条边,Bessie希望能走过每条边两次,且两次的方向相反,让你输出以点的形式输出路径. 解题思路:其实就是 ...

  6. Codeforces 776C - Molly's Chemicals(思维+前缀和)

    题目大意:给出n个数(a1.....an),和一个数k,问有多少个区间的和等于k的幂 (1 ≤ n ≤ 10^5, 1 ≤ |k| ≤ 10, - 10^9 ≤ ai ≤ 10^9) 解题思路:首先, ...

  7. 自组织神经网络介绍:自组织特征映射SOM(Self-organizing feature Map),第三部分

    前面两篇介绍了SOM的基本概念和算法,第一部分,第二部分,本篇具体展开一下应用中的一些trick设定. SOM设计细节 输出层设计 输出层神经元数量设定和训练集样本的类别数相关,但是实际中我们往往不能 ...

  8. 用strtok函数分割字符串

    用strtok函数分割字符串 需要在loadrunner里面获得“15”(下面红色高亮的部分),并做成关联参数. //Body response 内容: <BODY><; PRE&g ...

  9. spring_150807_hibernate_transaction_annotation

    实体类: package com.spring.model; import javax.persistence.Entity; import javax.persistence.Id; import ...

  10. Codeforces Round #489 (Div. 2) E - Nastya and King-Shamans

    E - Nastya and King-Shamans 题目大意:有n个数,每一次操作更改一个数,每次操作之后问你是否有一个数等于其前面所有数的和. 思路:好题,想了很久没想出来,看了题解,主要思想就 ...