• 欢迎访问web前端中文站,JavaScript,CSS3,HTML5,web前端demo
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏web前端中文站吧

CSS3 rem(设置字体大小) 教程

CSS3 web前端中文站 2年前 (2017-11-12) 978次浏览 已收录 0个评论

css3 新增了相对单位 rem ,使用rem同 em 一样皆为相对字体大小单位,不同的是rem相对的是 HTML 根元素。鉴于很多网友提到了rem,所以我这里就对其中一个总结。

更多精彩内容请看 web 前端中文站
http://www.lisa33xiaoq.net 可按 Ctrl + D 进行收藏

在 Web 中使用什么单位来定义页面的字体大小,至今天为止都还在激烈的争论着,有人说 PX 做为单位好,有人说 EM 优点多,还有人在说百分比方便,以至于出现了 CSS Font-Size: em vs. px vs. pt vs. percent 这样的 PK 大局。不幸的是,仍然有不同的利弊,使各种技术都不太理想,但又无法不去用。

在详细介绍rem之前,我们先一起来回顾一下我们常用的两种记量单位,也是备受争论的两个:

  • PX 为单位
  • EM 为单位

px 为单位

在 Web 页面初期制作中,我们都是使用“px”来设置我们的文本,因为他比较稳定和精确。但是这种方法存在一个问题,当用户在浏览器中浏览我们制作的 Web 页面时,他改变了浏览器的字体大小,这时会使用我们的 Web 页面布局被打破。这样对于那些关心自己网站可用性的用户来说,就是一个大问题了。因此,这时就提出了使用“em”来定义 Web 页面的字体。

em 为单位

前面也说了,使用是“px”为单位是比较方便,而又一致,但在浏览器中放大或缩放浏览页面时会存在一个问题,要解决这个问题,我们可以使用“em”单位。

这种技术需要一个参考点,一般都是以<body>的“font-size”为基准。比如说我们使用“1em”等于“10px”来改变默认值“1em=16px”,这样一来,我们设置字体大小相当于“14px”时,只需要将其值设置为“1.4em”。

 body {  font-size: 62.5%;/*10 ÷ 16 × 100% = 62.5%*/ } 
 h1 {  font-size: 2.4em; /*2.4em × 10 = 24px */ } 
 p {  font-size: 1.4em; /*1.4em × 10 = 14px */ } 
 li {  font-size: 1.4em; /*1.4 × ? = 14px ? */ }

为什么“li”的“1.4em”是不是“14px”将是一个问号呢?如果你了解过“em”后,你会觉得这个问题是多问的。前面也简单的介绍过一回,在使用“em”作单位时,一定需要知道其父元素的设置,因为“em”就是一个相对值,而且是一个相对于父元素的值,其真正的计算公式是:

1 ÷ 父元素的 font-size × 需要转换的像素值 = em 值

这样的情况下“1.4em”可以是“14px”,也可以是“20px”,或者说是“24px”,总之是一个不确定值,那么解决这样的问题,要么你知道其父元素的值,要么呢在任何子元素中都使用“1em”。这样一来可能又不是我们所需要的方法。

rem 为单位

CSS3的出现,他同时引进了一些新的单位,包括我们今天所说的rem。在 W3C 官网上是这样描述 rem 的——“font size of the root element” 。下面我们就一起来详细的了解 rem。

前面说了“em”是相对于其父元素来设置字体大小的,这样就会存在一个问题,进行任何元素设置,都有可能需要知道他父元素的大小,在我们多次使用时,就会带来无法预知的错误风险。而 rem 是相对于根元素<html>,这样就意味着,我们只需要在根元素确定一个参考值,,在根元素中设置多大的字体,这完全可以根据您自己的需,大家也可以参考下图:

CSS3 rem(设置字体大小) 教程

下面再来看一个简单的实例:

 html {font-size: 62.5%;/*10 ÷ 16 × 100% = 62.5%*/} 
 body {font-size: 1.4rem;/*1.4 × 10px = 14px */} 
 h1 { font-size: 2.4rem;/*2.4 × 10px = 24px*/}

我在根元素<html>中定义了一个基本字体大小为 62.5%(也就是 10px。设置这个值主要方便计算,如果没有设置,将是以“16px”为基准 )。从上面的计算结果,我们使用“rem”就像使用“px”一样的方便,而且同时解决了“px”和“em”两者不同之处。

浏览器的兼容性

rem 是CSS3新引进来的一个度量单位,大家心里肯定会觉得心灰意冷呀,担心浏览器的支持情况。其实大家不用害怕,你可能会惊讶,支持的浏览器还是蛮多的,比如:Mozilla Firefox 3.6+、Apple Safari 5+、Google Chrome、IE9+和 Opera11+。只是可怜的 IE6-8 无法,你们就把他们当透明了吧,我向来都是如此。

不过使用单位设置字体,可不能完全不考虑 IE 了,如果你想使用这个 REM,但也想兼容 IE 下的效果,可你可考虑“px”和“rem”一起使用,用”px”来实现 IE6-8 下的效果,然后使用“Rem”来实现代浏览器的效果。就让 IE6-8 不能随文字的改变而改变吧,谁让这个 Ie6-8 这么老呢!

参考资料

  • 《How to size text using ems》
  • 《How to Size Text in CSS》
  • 《CSS Font-Size: em vs. px vs. pt vs. percent》
  • Converting px into percentage and em for relative CSS font sizes
  • Em Vs Percent Widths
  • CSS: Units of Measurement
  • Jennifer Kyrnin 的 Using Points, Pixels, Ems, or Percentages for CSS Fonts

【注:本文源自网络文章资源,由站长整理发布】


web 前端中文站 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:CSS3 rem(设置字体大小) 教程
喜欢 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址