`

CSS3的REM设置字体大小

阅读更多

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

最近在学习em的相关知识的时候,无意之间让我拾得一宝,就是使用rem来设置Web页面的字体大小。让我一下子就来劲了,一口气看完并测试了一回,还真是爽歪歪的呀。师傅说好东西不能吃独食,于我就在这里给大家吹吹这个从没见过的REM

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

  1.  PX为单位
  2.  EM为单位

PX为单位

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

em为单位

前面也说了,使用是“px”为单位是比较方便,而又一致,但在浏览器中放大或缩放浏览页面时会存在一个问题,要解决这个问题,我们可以使用“em”单位。Richard Rutter'在《How to size text using ems》一文中有做过详细的介绍,追至早一点,Richard Rutter也在《How to Size Text in CSS》中进行过深入的剖析。

这种技术需要一个参考点,一般都是以<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”。这样一来可能又不是我们所需要的方法。

这里我只是简单的介绍了一个这两个单位的使用,具体一点的大家可以参阅:

  1.  Best Practices的站长Kyle的《CSS Font-Size: em vs. px vs. pt vs. percent
  2.  Converting px into percentage and em for relative CSS font sizes
  3.  Em Vs Percent Widths
  4.  CSS: Units of Measurement
  5.  Jennifer KyrninUsing Points, Pixels, Ems, or Percentages for CSS Fonts

Rem为单位

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

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

我们来看一个简单的代码实例:

			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”两者不同之处。

浏览器的兼容性

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

不过使用单位设置字体,可不能完全不考虑IE了,如果你想使用这个REM,但也想兼容IE下的效果,可你可考虑“px”和“rem”一起使用,用"px"来实现IE6-8下的效果,然后使用“Rem”来实现代浏览器的效果。就让IE6-8不能随文字的改变而改变吧,谁让这个Ie6-8这么老呢?哈。。。。大家不仿试试,还蛮有意思,说不定这个就是主流的度量单位了。

分享到:
评论

相关推荐

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

    css3新增了相对单位 rem ,使用rem同em一样皆为相对字体大小单位,不同的是rem相对的是HTML根元素。鉴于很多网友提到了rem,所以我这里就对其中一个总结。 在Web中使用什么单位来定义页面的字体大小,至今天为止都还...

    轻松掌握CSS3中的字体大小单位rem的使用方法

    rem是css3新定义的设置字体大小属性,rem大小都是以html的字体大小设置为参考值进行一个字体大小缩放,下面就带大家来轻松掌握CSS3中的字体大小单位rem的使用方法:

    Gan_Rem.min.css

    然后所有的字体以及盒子都给他一设计图的大小除以100就得出了他的rem适配大小,可能写的不是很好,希望朋友们多多给点建议,朋友们也可以联系我互相探讨前端的一些知识。我的QQ:65173014 网名是:半心人

    postcss-pxtorem:使用PostCSS将像素单位转换为rem(根em)单位

    此脚本将从您选择的允许浏览器设置字体大小的属性中将每个px值转换为rem。 输入输出 使用默认设置,仅定位与字体相关的属性。 / / input h1 { margin : 0 0 20px; font - size : 32px; line-height : 1.2; ...

    使用CSS3的rem属性制作响应式页面布局的要点解析

    CSS3的rem属性除了设置字体大小,还经常被用来做页面布局中的很多尺寸控制,这里我们就来看一下使用CSS3的rem属性制作响应式页面布局的要点解析

    了解和使用CSS中的rem单位

    什么是雷姆单位? 在收听广播或音乐播放器之前,您可能...这意味着1rem等于该html元素的字体大小(对于大多数浏览器而言,其默认值为16px)。 新建一个前端学习qun438905713,在群里大多数都是零基础学习者,大家相互帮

    知识普及:彻底搞懂CSS中单位px和em,rem的区别

    1. IE无法调整那些使用px作为单位的字体大小; 2. 国外的大部分网站能够调整的原因在于其使用了em或rem作为字体单位; 3. Firefox能够调整px和em,rem,但是96%以上的中国网民使用IE浏览器(或内核)。 px像素(Pixel...

    CSS中的字体大小设置属性总结

    里我们整理了px、em以及CSS3中的rem三大文字大小设置方式,尤其是rem的相关知识,下面就一起来看一下CSS中的字体大小设置属性总结,需要的朋友可以参考下

    postcss-pxtorem:px转rem,基于postcss

    postcss-pxtorem 移动端px to rem 例如设计师给出640px的设计稿,写css样式的时候,就按照640px切图,单位px。 完工后,js或者css媒体查询,设定1... //默认根目录字体大小(px) "root_value": 20, //保留小数位 "uni

    rem.js........

    (1)在vscode中的扩展安装cssrem插件,文件—》首选项—》设置—》(搜索cssrem,改变rootfontsize为设计图 / 10的数字) (2)在页面中使用script标签引入rem.js文件(在js文件的18行把数字改为设计图的大小) ...

    typeboost.css:Typeboost.css是一组CSS规则,可确保可读性,可伸缩性和响应式排版。 REM用于字体大小,填充和边距。 就像排版规范化器一样。 没有依赖关系。 用.col类包装HTML内容,您就完成了

    REM用于字体大小,填充和边距。 可用作排版规范化器。 没有依赖关系。 用类.col包裹HTML内容,您就完成了。 npm安装 npm install typeboost.css 用法 &lt;!DOCTYPE html &gt; &lt; ...

    postcss-function-rem

    Taikonauten postCSS函数rem安装npm install --save-dev @taikonauten/postcss-function-rem 在项目根目录中创建一个postcss.config.js文件: const postCSSFunctions =...} 使用默认的基本字体大小16。结果: padding:

    Vue项目自动转换 px 为 rem的实现方法

    前端开发中还原设计图的重要性毋庸置疑,目前来说...因为rem单位是相对于根节点的字体大小的,所以通过设置根节点的字体大小可以动态的改变rem的大小。 原理网上有很多文章分享,这里不具体解释。 1、创建rem.js文件

    rem布局原理解析

    很简单:元素、字体大小能随着屏幕大小(一般相对于宽度来说)变化而变化,在大一点的屏幕上,尺寸大一些;在小一点的屏幕上,尺寸小一些;尺寸的大小和屏幕大小成正比。 最简单最直接的方案就是直接用百分比设置...

    CSS 中px、em、rem、%、vw、vh单位之间的区别详解

    但是效果却截然不同,按照W3C提供的公式,我们可以计算下: class为id1的div字体大小继承自父元素body:16px*1.5em = 24px class为id2的div字体大小继承自父元素id1:24px*1.5em = 36px class为id3的div字体大小继承...

    css3中单位px,em,rem,vh,vw,vmin,vmax的区别及浏览器支持情况

    rem:相对单位,可理解为”root em”, 相对根节点html的字体大小来计算,CSS3新加属性,chrome/firefox/IE9+支持。 (另外需注意chrome强制最小字体为12号,即使设置成 10px 最终都会显示成 12px,当把html的font-...

    css中px、em和rem的区别总结

    em 和 rem 都是灵活可扩展的单位,由浏览器转换为像素值,取决于设计中的字体大小,如果使用值 1em 或 1rem ,它可以被浏览器转换为从 16px 到 160px 或其他任意值。浏览器使用 1px ,那么 1px 始终显示为完全 1px。...

Global site tag (gtag.js) - Google Analytics