Actually this artical is from other person's opnion ,i just put it into chinese,and this means a very big progress for me.Because today i am going to start my front-end way in blog,means everyday i will make myself know something new .It will make me happy and far away from lonely.This is a good thing for me .Now let's start with chinese and begin with em vs rem vs px.

在css当中我们应该用什么样的测量单位来构建样式呢?em ,rem 还是px?

我们很多人摒弃了rem而转入px的怀抱,但是忘记了为何之前要首先使用rem.问题不仅仅是在字体大小的设置上面,还有关于它的可访问性。

1,px 是狭隘无知的,不要使用它们。

2,设置尺寸和间距使用rem。

3,媒介查询用em。

Pixels

像素(px)是我们几年来习惯的像素。 每个人都知道一个像素是什么(虽然像素的大小并不总是相同的)。 人人都喜欢使用像素。 他们很容易翻译。 设计师通常以像素为单位,因此可以直接从Photoshop直接进行构建。

所以用像素到底哪里不对了?

Accessibility(可访问性)

我是网站可访问性兼容的提倡者,相比于网站的漂亮而言,我更喜欢他可访问性做的好点。

如果你给网站用像素设置所有的字体大小,元素大小以及间距大小,那么你就没有尊重终端用户。

在大多的浏览器,用户可以自己设置默认的字体(浏览器默认字体大小是16px),如果用户将默认字体设置为20px,那么所有的字体应该相应的缩放。

但是,如果网站以像素构建网站,那么一个30px的头部就是30px,这对于设计师或者开发者来说,听起来不错,但是你不是用户,不要自己觉得网站是怎样就怎样。

幸运的是,以像素为单位设置字体大小并不会完全破坏可访问性。 用户还可以使用ctrl + +/-(cmd而不是OS X上的ctrl)放大和缩小。 但是,我们可以做得更好。

Rem

如果你对于网站建设很熟悉,毫无疑问你听说过rem,如果没有,REMs是一种基于根HTML元素的字体大小设置字体大小的方式。它们还允许您通过更改根字体大小(例如在某个媒体查询/屏幕大小)快速缩放整个项目。

“[REM]单位表示根元素的字体大小(例如<html>元素的字体大小)。当在此根元素上的font-size上使用时,它表示其初始值。“[3]

如何从REM计算PX
一个基本和最常见的例子:html font-size设置为10px,设置10px的根字体大小是我看到使用REM的人最常见的情况。它允许通过将数字除以10将像素值与REM值之间的快速转换。但是,将基本字体大小设置为像素仍然具有与上述像素示例相同的问题。可访问性差。

那么我们怎样才能打破我们的可访问性虚拟空间?
将根HTML字体大小设置为百分比。这是用户默认浏览器字体大小的一个百分比。一个典型的方法是将HTML font-size设置为62.5%。这是因为16px(典型的默认浏览器字体大小)的62.5%是10px。那仍然会使1.6rem = 16px。这意味着如果用户的默认浏览器字体大小更改为例如20px,则1.6rem现在将等于20px。所以如果你的用户想要更大的字体让他们随便设置。

理想的情况是将HTML font-size保留为100%,但这确实会使数学变得更加困难。例如,16px现在是1rem,20px是1.25rem,24px是1.5rem等

Sass / SCSS抢救
在你的头脑中工作所有这些数字将是相当耗时的。幸运的是,如果您使用Sass / SCSS,LESS或任何其他CSS预处理器,您不用担心。您可以使用函数为您计算这些内容。

Em怎么样呢?

EM最初以与REM相似的方式执行,直到设计到嵌套。 我从来不是em的粉丝,特别是当涉及到字体大小。 例如,取一个字体大小为2em的div,然后添加一个字体大小为2em的段落。 该段的font-size现在是相对于div的2ems。 我就不知道到底这个段落的字体大小是多少了,很快就变得难以控制。 这是REM解决的 - 大小总是指向根。

媒介查询怎么样呢?

所以我们已经确定,使用像素值会覆盖浏览器的默认设置,因此只需将所有像素大小转换为REM即可就好了吗? 答案是不完全对的。

这篇博客文章强调了媒体查询(https://zellwk.com/blog/media-query-units/)中使用像素,EM和REM之间差异的一些关键。 去阅读,然后回来。

总之,使用浏览器缩放时,各种浏览器中的媒体查询的像素和REM都会失败,而EM是我们拥有的最佳选择。 REMs在这一点上比像素还差,所以我们应该在媒介查询上面不考虑他们了。

这确实有点棘手了,当涉及该单位的小数位的差异时,EM和像素都会与媒体查询有垮台。 如果您恰好在同一代码块中使用最小和最大宽度的媒体查询,则一旦用户开始更改其浏览器缩放或默认字体大小,将会出现糟糕的响应式。

那么解决方案是什么?
不幸的是,没有答案。在浏览器整理问题之前,我们有点卡住了。

最简单的可接受选项是,我们不会在同一个块中创建最小宽度和最大宽度的重叠。例:

EM vs REM vs PX,为什么你不应该”只用px“”的更多相关文章

  1. css中px,em和rem的区别

    css中px,em和rem的区别 今天,突然间发现一个特别有意思的问题,就是无意间看到一个网站中的em并不是16px,下面展开了对于px和em以及rem的探究. 首先,px是绝对长度单位,是相对于显示 ...

  2. 说说css中pt、px、em、rem都扮演了什么角色

    前段时间,终于仔仔细细的把pt.px.em.rem了解了一遍,简单整理了一下做个记录. pt.px.em.rem都是什么 pt单位名称为点(Point),绝对长度单位.现在网页中出现得很少甚至不出现, ...

  3. 关于px、em和rem的学习笔记!

    刚参加前端工作,字体一般使用px来设置大小,在处理响应式界面时对字体的大小变化处理感觉很吃力,得知对字体的大小有三种大小格式设置方式,便想一探究竟,希望可以有所帮助! px px像素(Pixel),相 ...

  4. css中单位px、pt、em和rem的区别

    国内的设计师大都喜欢用px,而国外的网站大都喜欢用em和rem,那么三者有什么区别,又各自有什么优劣呢? px :像素(Pixel).相对长度单位.像素px是相对于显示器屏幕分辨率而言的.(引自CSS ...

  5. px,em,rem

    px:像素是相对于显示器屏幕分辨率而言的相对长度单位.pc端使用px倒也无所谓,可是在移动端,因为手机分辨率种类颇多,不可能一个个去适配,这时px就显得非常无力,所以就要考虑em和rem. em:继承 ...

  6. (转)px、em、rem的区别和使用

    国内的设计师大都喜欢用px,而国外的网站大都喜欢用em和rem(国外的大部分网站能够调整的原因在于其使用了em或rem作为字体单位),那么三者有什么区别,又各自有什么优劣呢? 一.px特点 1. IE ...

  7. 深度讲解VIEWPORT和PX是什么?移动端单位px,em,rem

    刚开始接触移动页面重构,是不是很迷惑应该按照多大的尺寸制作?320.640还是720?按照640的设计稿重构完页面,是不是还需要写其他尺寸来适配不同的屏幕大小?—— 这源于对viewport和px的不 ...

  8. px和em和rem的区别

    一.px特点: 1. IE无法调整那些使用px作为单位的字体大小: 2. 国外的大部分网站能够调整的原因在于其使用了em或rem作为字体单位: 3. Firefox能够调整px和em,rem,但是96 ...

  9. css中的px、em、rem 详解

    概念介绍: 1.px (pixel,像素):是一个虚拟长度单位,是计算机系统的数字化图像长度单位,如果px要换算成物理长度,需要指定精度DPI(Dots Per Inch,每英寸像素数),在扫描打印时 ...

  10. px、em、rem区别介绍

    px.em.rem区别介绍 PX px像素(Pixel).相对长度单位.像素px是相对于显示器屏幕分辨率而言的. PX特点 1. IE无法调整那些使用px作为单位的字体大小: 2. 国外的大部分网站能 ...

随机推荐

  1. VMware虚拟机,从厚置备改成精简置备,并减小硬盘的实际占用空间

    工作中由于前期规划不足,导致磁盘空间分配较大,而且是厚置备.后期不再需要时,无法把用不到的空间释放出来,造成空间浪费.经过摸索和实验验证,总结出来一套方法. 风险提示:这个方法在我的环境中验证通过了, ...

  2. print 函数设置字体颜色

    格式:\033[显示方式;前景色;背景色m数值表示的参数含义:显示方式: 0(默认值).1(高亮).22(非粗体).4(下划线).24(非下划线). 5(闪烁).25(非闪烁).7(反显).27(非反 ...

  3. Object.defineProperties()和Object.defineProperty()方法

    Object.defineProperty() 方法会直接在一个对象上定义一个新属性,或者修改一个对象的现有属性, 并返回这个对象. 语法:Object.defineProperty(obj, pro ...

  4. Java-NIO(七):阻塞IO与非阻塞IO

    阻塞IO 传统的 IO 流都是阻塞式的. 也就是说,当一个线程调用 read() 或 write()时,该线程被阻塞,直到有一些数据被读取或写入,该线程在此期间不能执行其他任务. 因此,在完成网络通信 ...

  5. hdu-2602&&POJ-3624---01背包裸题

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=2602 https://vjudge.net/problem/POJ-3624 都是01背包的裸题 这 ...

  6. https://segmentfault.com/a/1190000004518374#articleHeader3

    https://segmentfault.com/a/1190000004518374#articleHeader3 https://segmentfault.com/q/10100000049065 ...

  7. vscode设置出错, 无法自动补全

    问题: 之前设置的没问题, vscode重装后, 发现vscode里面的设置还在, 但敲代码却无法识别虚拟环境中的包了, 因此相关的内容也无法自动补全. 解决: 后来发现, 实际上设置没有出错, 但重 ...

  8. bcrypt对密码加密的一些认识(学习笔记)

    学习nodejs和mongoDB的时候,接触了用户注册和登录的一些知识. 1.关于增强用户密码的安全性 用户的密码肯定不能保存为明文,避免撞库攻击. 撞库攻击:撞库是一种针对数据库的攻击方式,方法是通 ...

  9. crypto必知必会

    crypto必知必会 最近参加了个ctf比赛,在i春秋,南邮方面刷了一些crypto密码学题目,从中也增长了不少知识,在此关于常见的密码学知识做个小总结! Base编码 Base编码中用的比较多的是b ...

  10. java中关于&、&&、|、||之间的区别和运算

    关于&.&&.|.||之间的区别和运算 在逻辑运算中: 普通与&:要判断所有的判断的条件 短路与&&:如果前面一个判断条件出现false,则后续的判断条 ...