EM vs REM vs PX,为什么你不应该”只用px“”

时间:2022-09-17 08:05:08

EM vs REM vs PX,为什么你不应该”只用px“”

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. 自定义Image自动切换图像控件

    做这么一个控件,图片自动切换,形成动画效果. 随便的码码,码完发现东西太少了,不过还算完善. public class MyPictureBox : PictureBox { Timer timer ...

  2. PHP---TP框架---添加数据-----有三种方式

    添加数据 添加数据有三种方式: 第一种: <?php namespace Home\Controller;//这个文件的命名空间 use Think\Controller;//use使用哪一个而 ...

  3. 【Unity3D游戏开发】性能优化之spine提高80~90&percnt;的效率 &lpar;三一&rpar;

    Spine效率低 Unity项目加载spine动画,经常会出现卡顿的情况,如游戏中瞬间播放一个动画,打开一个带spine动画的界面.尤其是SkeletonRenderer.Awake时,会瞬间出现大量 ...

  4. Mysql中的DQL查询语句

    ----------------1.查询所有列 --查询 学生 表所有记录(行) select *from 学生 --带条件的查询 select *from 学生 where 年龄>19 --- ...

  5. Smarty 插件开发

    插件包含了: functions modifiers block functions compiler functions prefilters postfilters outputfilters r ...

  6. 浅析Content Negotation在Nancy的实现和使用

    背景介绍 什么是Content Negotation呢?翻译成中文的话就是"内容协商".当然,如果不清楚HTTP规范(RFC 2616)的话,可以对这个翻译也是一头雾水. 先来看看 ...

  7. 【one day one linux】linux下的软件包管理工具

    Linux 下的软件包管理工具 linux下的软件安装可以通过两种方式,一种是直接使用自带的软件包管理工具安装,另外一种通过编译源码安装. 1.软件包的种类 Red Hat和Fedora:redhat ...

  8. 高效工作的秘诀——Doit&period;im使用总结报告

    从上次购买doit.im pro账户到现在已经快一年了,从摸索到现在的熟悉,目前这款软件已经成为我工作生活中最为重要的效率工具,在此之前也用过很多软件进行时间管理,综合起来评价,doit应该算是最棒的 ...

  9. BBS论坛(一)

    1.1.项目结构搭建 (1)创建flask项目Perfect_bbs,然后搭建项目结构如下: (2)构建蓝图 cms/views.py # cmd/views.py from flask import ...

  10. jvm运行时内存模式

    jvm内存模型 内存模型粗略划分为:堆和栈 详细划分为:堆,虚拟机栈,方法区,本地方法区,程序计数器 程序计数器: 为了线程切换后能恢复到正确的执行位置,每条线程都需要有一个独立的程序计数器,各条线程 ...