为什么是 em 而不是 px?

2023-12-23

我听说你应该在样式表中定义尺寸和距离em而不是以像素为单位。所以问题是我为什么要使用em代替px在 CSS 中定义样式时?有一个很好的例子来说明这一点吗?


说一个比另一个更好的选择是错误的(或者两者都不会在规范中给出自己的目的)。甚至值得注意的是 Stack Overflow 广泛使用 px 单位。这是not这个问题表明这是一个糟糕的选择。

单位的定义

  • px是绝对测量单位(例如in, pt, or cm)这也恰好是 1/96in单位(稍后详细说明原因)。因为它是绝对测量,所以当您想要将某些内容定义为特定大小时,可以随时使用它,而不是与浏览器窗口大小或字体大小等其他内容成比例。

    与所有其他绝对单位一样,px单位不会根据浏览器窗口的宽度进行缩放。因此,如果您的整个页面设计使用绝对单位,例如px而不是%,它不会适应浏览器的宽度。这本身并没有好坏之分,只是设计师需要在坚持精确尺寸和不灵活与拉伸之间做出选择,但在此过程中不遵循精确尺寸。站点通常混合有固定大小和灵活大小的对象。

    通常需要将固定大小的元素合并到页面中 - 例如广告横幅、徽标或图标。这确保您几乎总是需要至少some设计中基于 px 的测量。例如,图像(默认情况下)将被缩放以使每个像素为 1px尺寸,所以如果您围绕图像进行设计,您将需要px单位。它对于精确的字体大小和边框宽度也非常有用,由于四舍五入,它最适合使用px大多数屏幕的单位。

    所有绝对测量值都彼此严格相关;那是,1in is always 96px, 就像1in is always 72pt。 (注意1in实际上几乎从来都不是物理的inch当谈论基于屏幕的媒体时)。所有绝对测量均假定标称屏幕分辨率为 96ppi 以及桌面显示器的标称观看距离,并且在这样的屏幕上px将等于一physical屏幕上的像素和一个in将等于 96 个物理像素。在像素密度或观看距离显着不同的屏幕上,或者如果用户使用浏览器的缩放功能缩放页面,px将不再必然与物理像素相关。

  • em不是绝对单位 - 它是相对于当前选择的字体大小的单位。除非您通过使用绝对单位设置字体大小来覆盖字体样式(例如px or pt),这将受到用户浏览器或操作系统中字体选择的影响(如果他们已经制作了字体),因此使用 em 作为一般长度单位是没有意义的,除非您特别希望它缩放为字体大小秤。

    Use em当您特别希望某些内容的大小取决于当前字体大小时。

  • rem就好像em,但它是相对于文档(特别是根元素)的基本字体大小,而不是相对于当前元素的字体大小。

  • %也是一个相对单位,在这种情况下,相对于父元素的高度或宽度。它们是一个很好的替代品px如果您的设计不依赖于特定的像素大小来设置其大小,则表示设计的总宽度等单位。

    Using %设计中的单位允许您的设计适应屏幕/设备的宽度,而使用绝对单位,例如px才不是。

  • vh, vw, vmin, and vmax是相对单位,例如%,但它们是相对于viewport(窗口可视区域的大小)而不是父元素的大小。它们分别与视口的高度、宽度、两者中的较小者和两者中的较大者相关。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么是 em 而不是 px? 的相关文章

  • 如何在CSS3媒体查询中使主体宽度自动等于设备宽度?

    我现在正在做一个移动网站 并尝试使用 CSS3 媒体查询来定位不同的设备 我的部分代码如下 media screen and max width 320px body width 320px some other style 正如您所看到的
  • css 计数器在 Internet Explorer 中无法工作以获取隐藏内容 - 如何修复?

    我们想要一些编号列表 并发现了这个很酷的计数器 您可以在 css 中使用它来让浏览器为您计算数字 ol instructions counter reset instructions section ol instructions gt l
  • 使水平滚动条始终可见,即使底部不在视图中

    我将用一个片段来开始这个问题 该片段几乎显示了我想要完成的任务 wrapper overflow hidden display flex sidebar min width 200px background 333 color FFF co
  • jquery:当我在文档上附加一层时,如何重置文档滚动条?

    当我在文档上附加图层时 如何重置文档滚动条 例如 它就像 Facebook 页面 当您有一个很长的文档时 您需要向下滚动才能查看较旧的图像 帖子 当你点击照片时 滚动条发生了变化 从顶部开始 但文档页面根本不跳转 当关闭照片查看器图层时 滚
  • 如何使 jQuery 向上动画

    我有一些 jquery 运行得相当好 但是当我将鼠标悬停在有问题的元素上时 底部向下扩展 这并不意外 但不是所需的效果 我希望元素的底部保持静止 而元素的顶部向上扩展 如果您想查看我目前拥有的内容 您可以导航至http demo ivann
  • CSS - 第一个没有特定类别的孩子

    是否可以编写一个 CSS 规则来选择没有特定类的元素的第一个子元素 example div span class common class ignore span span class common class ignore span sp
  • 每页都包含菜单

    假设我有一个简单的 CSS 布局 我的菜单是侧面的一列 此菜单将出现在每个网页上 大约 10 个网页 如果我在这个菜单上有链接等形式的项目 我怎样才能做到这样 如果我在一页上添加链接 它会将其添加到所有页面 你能把它做成一个 PHP 页面吗
  • CSS“内容”不起作用

    我想通过 CSS 添加该段落的文本 而不是在 HTML 中 因为它会随着网站的响应能力而变化 现在我无法让它工作 我想知道CSS是否有问题 另外 这是唯一可以做到的方法 使用纯 HTML 和 CSS 还是有另一种方法来定位文本并根据每个分辨
  • 使用 CSS 的样式选择选项

    我正在尝试使用 CSS 设置选择选项列表的样式 我希望列表的时间之间有更多的填充 因为它们似乎被压在一起 我尝试向选项元素添加填充 但这似乎不起作用 有任何想法吗 这是我的代码 HTML
  • 如何使用 javascript/ASP.NET/CSS 旋转和淡入淡出背景图像

    我需要随机淡入淡出背景图像 这将是一个定时函数 例如每 5 秒一次 我需要使用 ASP NET Javascript CSS 或全部三者来完成此操作 请大家帮帮我 谢谢 Cycle 一个 jQuery 插件 是一个非常灵活的图像旋转解决方案
  • 将 DIV 堆叠在一起?

    是否可以堆叠多个 DIV 例如 div div div div div div div div div div 那么所有这些内部 DIV 都具有相同的 X 和 Y 位置吗 默认情况下 它们都在彼此下方 将 Y 位置增加了上一个 DIV 的高
  • :目标选择器不适用于选项标签

    我试图在这里帮助一位 StackOverflow 成员 我发现 CSS target选择器不适用于选项标签 我创建了一个示例来说明使用w3schools 教程 http www w3schools com cssref tryit asp
  • 为什么我的字体大小在 android webview 对象中看起来比在 android 浏览器中查看时大得多?

    我正在尝试制作一个小型 Android 应用程序 它除了在 webview 对象而不是浏览中显示网站之外什么也不做 到目前为止它加载了目标网页 但文本和图像大小都比查看页面时大得多在实际设备浏览器中 在浏览器中 页面看起来正确 但在我的应用
  • 是否可以使materialize.css模态更大并删除垂直滚动条?

    我刚刚创建了按钮 单击后会弹出一个模式 每个按钮都有一个显示不同练习 gif 的模式 然而 模态框太小 导致用户无法看到整个 gif 迫使他们向下滚动 我想删除滚动条并使模态更大 以便用户可以看到整个 gif 任何帮助都会很棒 这是我的代码
  • 如何将红色边框与必需的属性一起添加到输入字段?

    目前 如果输入字段带有required属性为空时 会显示浏览器默认的错误信息 如果我删除此属性 由于我的 JavaScript 代码 它将在输入字段上显示红色边框 我如何同时显示两者 form submit function e e pre
  • CSS - 100% 高度,带页眉和页脚

    我正在尝试设计一个带有页眉 延伸至 100 垂直景观 减去页眉和页脚 的主 div 和页脚的页面 就像这张照片 我可以让标题和主 div 正常工作 像这样 div div class header div HEADER div div cl
  • 有什么方法可以让 css 选择除第一页之外的所有内容吗?

    我刚刚找到了 CSS page指令 并将其与 first将 CSS 应用到 html 打印的第一页 有没有办法反其道而行之 将 CSS 应用于所有页面except首先 使用 CSS3 not https developer mozilla
  • 如何按时间间隔翻转div

    您好 请看这个脚本并告诉我如何按时间间隔翻转 A B 和 C div 我希望A先翻转然后停止 B接下来翻转并停止 然后C然后再次回到A B和C 就像循环一样 然后重新开始 这在 CSS3 中可能吗 在此代码中 所有 div 同时翻转 HOL
  • CSS 选择器嵌套

    是否可以在选择器中嵌套选择器 我有很多类似这样的样式 header h1 header img header form 我想压缩它们 使它们看起来像这样 header h1 img form 以提高可读性 这在普通的旧 CSS 中可能吗 不
  • 删除下拉链接并在导航栏菜单中显示其所有项目

    我正在使用 Twitter Bootstrap 及其响应式设计来实现顶部典型的 Twitter Bootstrap 导航栏菜单 在那里我有一些链接和一个下拉菜单 当我将浏览器大小调整为768px或者更少 它会转变为一种新的导航菜单 这一切开

随机推荐

  • Laravel Eloquent ORM 中的自然 ORDER

    我如何在 Eloquent ORM 中获得 自然顺序 在表中我有 文本 列 字符串 正常顺序 Model orderBy text value 1 value 12 value 23 value 3 value 8 我需要这个 value
  • 运行 django 本地服务器时出错:`__init__() 得到意外的关键字参数 'tcp_nodelay'`

    一切都很好并且始终运行没有问题 现在 当我从浏览器加载应用程序时出现错误 似乎与代码无关 因为我跳到了最旧的分支上 并且得到了相同的错误 这是我的 python 和 django 版本 python version Python 3 6 0
  • 进行带有超时的 EJB 调用

    我有一个EJBA调用 EJBB UI 等待响应的时间不应超过 30 秒 如果某些数据丢失 它应该返回部分响应 如何在 EJB 上定义超时 30 秒的时间限制 B 我可以定义EJBB as Asynchronous返回Future 然后做Fu
  • 如何将嵌入/嵌套 FormGroup 转换为 FormData

    这是我的表格组 this shopGroup this fb group user name Validators compose Validators required Validators maxLength 60 url name d
  • C# - 文件关联对注册表项“HKEY_CLASSES_ROOT\”的访问被拒绝

    我目前有一个使用注册表设置文件关联的程序 注意 它是 NET 2 0 所以我必须通过注册表方法 问题是 由于它正在尝试写入 HKCR 因此可能会遇到管理问题 在其他计算机上 是否有更通用的方法来设置文件关联 对于 NET 2 0 例如使用
  • 无法将本地更改推送到现有远程分支

    有一个名为 my remote 的远程分支 我之前已毫无问题地推送到该分支 截至今天 我无法推动并且出现不同的错误 我得到的第一个错误是 hint Updates were rejected because a pushed branch
  • 无法文本对齐:CSS 居中

    我似乎无法将 主页 按钮置于中央 主文本位于左侧而不是中心 我的 htm 和 css 链接如下 html h1 Bully Free Zone h1 h2 Online harassment has an off line impact h
  • 打字稿 |每次调用函数时都会调用一个函数

    我正在尝试编写 Typescript API 服务 对于该服务 我需要一种方法来检查该方法是否存在 例如函数get叫做 我意识到我可以这样做 get endpoint string this handleRequest post endpo
  • 调整 UIWebView 文本大小

    我试图让用户调整给定网页的文本大小 我在 Xcode 6 中使用 Swift HTML 文件 h1 My First Heading h1 My first paragraph 这是我调用的快速函数来尝试更改大小 func changeWe
  • 如何使用Monitor(DDMS)工具调试应用程序

    这些天我正在将开发环境从 Eclipse 切换到 Android Studio 我真的很喜欢它的自动完成功能以及这个 IDE 提供的许多其他功能 但是 我在调试时遇到了一些问题 我希望使用这个IDE提供的Monitor工具 自带的DDMS和
  • 在单元测试中抑制 Vue 警告

    我试图按照此处列出的配置在测试中抑制警告 https vue test utils vuejs org api config html silent https vue test utils vuejs org api config htm
  • JavaFX 制作相同动画的副本

    我正在尝试扩展之前的作业 它是画一个风扇 并有一个滑块来控制播放速度 以及播放 暂停和反转风扇的按钮 这是我的该作业的代码 public class FanWithControls extends Application Override
  • 500 HTTP POST 请求的内部错误

    我正在使用下面的代码使用 HTTP POST 上传文件 但我从服务器收到 500 内部服务器错误响应 您能看一下并让我知道哪个代码部分是罪魁祸首 丢失的吗 HTTPS 连接没有错误 我认为标头存在问题 因此服务器不接受此请求 Check s
  • PHP/MYSQL AJAX 聊天

    寻找一个开源的php mysql ajax聊天室 不是1对1的私人聊天 你们会推荐什么 我将需要创建数百个聊天室实例 例如 每个用户组都有自己的专属聊天室 看看 phpFreeChat 这是一个易于实施的活跃项目 http www phpf
  • 如何在OpenAI中创建新的健身房环境?

    我的任务是制作一个 AI 代理 该代理将学习使用 ML 玩视频游戏 我想使用 OpenAI Gym 创建一个新环境 因为我不想使用现有环境 如何创建新的自定义环境 另外 我是否可以通过其他方式开始开发 AI 代理来玩特定的视频游戏 而无需
  • Django 1.0.2 中的多个数据库与自定义管理器

    我在用户组中询问了这个问题 但没有得到回应 所以我想我会在这里尝试一下 我正在尝试设置自定义管理器来连接到另一个数据库 在与我的默认 mysql 连接相同的服务器上 我努力了 遵循示例here http groups google com
  • 应用程序不使用 MSAL (react-aad-msal) 从缓存中获取访问令牌

    authProvider getAccessToken 为每个 API 调用调用身份验证端点 而不是从缓存中获取它 我不知道问题是否出在 Msal 中的 AcquireTokenSilent 或 React aad msal 中的 getA
  • 为什么静态块中的代码不执行?

    当我打印constant in main the static块不执行 但是当我打印时stat 它确实执行了 有什么重要意义吗static final在Java中 package com test doubt class Doubt pub
  • 如何编写包含“主体块”的自定义 WorkFlow 4 代码活动?

    这可能吗 我知道这是针对 MS 的 因为他们有 WF 活动包 但我不确定它是如何完成的 如果能够使用带有 Body 块的活动来插入其他活动 按钮等 那就太好了 如果不是太麻烦和 或耗时的话 如果您遵循一些规则 这很容易 以下是具有子项的 N
  • 为什么是 em 而不是 px?

    我听说你应该在样式表中定义尺寸和距离em而不是以像素为单位 所以问题是我为什么要使用em代替px在 CSS 中定义样式时 有一个很好的例子来说明这一点吗 说一个比另一个更好的选择是错误的 或者两者都不会在规范中给出自己的目的 甚至值得注意的