小数和百分比行高有什么区别

2023-12-29

(这个问题最初引用了w3c学校,我已经更正了该引用)

根据w3c http://www.w3.org/TR/CSS21/visudet.html#propdef-line-heightCSSline-height值可以设置如下:

<number>该属性的使用值是该数字乘以元素的字体大小。负值是非法的。计算值与指定值相同。

<percentage>属性的计算值是该百分比乘以元素的计算字体大小

So line height = font-size × number or line height = font-size × percentage ÷ 100%,这应该是相同的。

并且行高是继承的。

但是,我注意到增加字体大小的嵌套元素会导致完全不同的行高,如下所示:

C 列(蓝色)是我所期望的。

参见 jsfiddle http://jsfiddle.net/bkunsr0h/1/.

如果您为了简洁起见而原谅这种 css 语法的混搭,那么 A 列是:

 div {line-height:140%;} > div > div «content»

B 栏是:

 div {line-height:140%;} > div > div {line-height:140%} «content»

C 列是:

 div {line-height:140%;} > div > div {line-height:1.40} «content»

理解的一半

所以看起来像 A 列,行高是计算为长度(例如像素)并设置在外部 div 上font-size。由此算出,长度值然后继承,这就是为什么当字体大小随后增加时它看起来被压扁的原因。

两者的规格均指乘以字体大小的值。所以这里指的是设置了line-height的元素的字体大小,而不是继承line-height的元素的字体大小。

这样就解释了一半。但 B、C 列仅指定 1.4 或 140% 不同,两者是相同的。一定?!

我预计蓝色 C 列的行为至少适用于 B 列和 C 列。(虽然我认为它也不是 A 列,这很奇怪,但至少我明白这一点。)

我查了一下,Firefox 和 Chromium 也做了同样的事情。

你可以解释吗?


首先根据给定元素的字体大小计算百分比行高。这个计算值是then由后代继承预烤。另一方面,小数线高度的计算值是该十进制值(这就是“指定值”的含义);你最终看到的是used值,这是根据每个后代自己的字体大小“计算”的after它已被继承。在 CSS 中,它是继承的计算值 http://www.w3.org/TR/CSS21/cascade.html#inheritance,不是使用值。

让我们从容器开始:

.container {
    font-size:1rem;
    line-height:140%;
}

该容器的计算字体大小为 1rem,计算行高为 1.4rem。

  1. 然后,计算出的行高将由 A 列继承。A 列的字体大小为 1.2rem,行高为 1.4rem。

    The same然后,行高由 A 列的子项继承,因此其字体大小计算为 1.44rem(基于 A 列),并且其行高保持为 1.4rem。

  2. 您覆盖 B 列的行高,使其拥有自己的行高line-height:140%宣言。该百分比是根据 B 列的字体大小计算的。这使得 1.2rem 的 140%,而不是 1rem,导致行高为 1.68rem。

    然后该值由 B 列的子项继承。其字体大小计算为 1.44rem,行高为 1.68rem。

  3. 您可以使用 a 覆盖 C 列的行高line-height:1.40宣言。虽然C列的字体大小和行高的计算方式与B列的相同,但是什么是遗传由它的孩子是not1.4×1.2rem = 1.68rem;它是 1.4(一个比率,或者如果您愿意的话,可以是原始百分比,但不是长度)。

    因此,C 列的子项的计算行高为 1.4,继承自 C 列。然后使用该值根据其自身的字体大小计算子项的行高。因此其used行高为 1.4 × 1.44rem = 2.016rem。

埃里克·迈耶(Eric Meyer)有一个伟大的article http://meyerweb.com/eric/thoughts/2006/02/08/unitless-line-heights关于小数与百分比线高度。我的解释恰好稍微复杂一些,但原理是相同的。

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

小数和百分比行高有什么区别 的相关文章

  • Chrome DevTools:计算样式与 css 规则不同?

    当我在 CSS 文件中定义 4px 时 我的 DOM 元素的 border top width 怎么可能是 0px 当我使用 Chrome DevTools 检查元素时 我发现计算的样式告诉 0px 而最上面的 css 规则是 4px 而且
  • a:active 不起作用

    我在这里很困惑 the a active不工作 但是 hover工作正常 我已经尝试了很多事情 但这个让我陷入困境 而且真的很令人困惑 我刚刚在表中添加了链接 我已将单元格添加到了类中 menu1 现在 当我访问活动页面时 活动链接不会突出
  • 将自定义字体与 wkhtmltopdf 一起使用

    我正在尝试在使用 wkhtmltopdf 生成的 PDF 中使用自定义字体 我读到您不能使用 google webfonts 并且 wkhtmltopdf 使用 truetype ttf 文件 谁能证实这一点吗 所以我从 google we
  • 如何在不同页面上使用不同类型的导航栏组件

    我为我们项目的两个不同子系统创建了两个不同的导航栏组件 App js function App return lt gt
  • jQuery animate() 和 CSS calc()

    我尝试设置CSScalc 使用 jQuery 动画 例如 element animate height calc 100 30px 500 我注意到calc 不支持 jQuery 动画 我希望有一种方法可以做到这一点 我不想要类似的方法 替
  • 为什么 Flexbox 会拉伸我的图像而不是保留纵横比?

    Flexbox 具有这种行为 它将图像拉伸到其自然高度 换句话说 如果我有一个带有子图像的 Flexbox 容器 并且我调整了该图像的宽度 则高度根本不会调整大小 并且图像会被拉伸 div display flex flex wrap wr
  • 边界半径圆

    我有这个代码 span p margin 0 span background color red display inline block border radius 50 span p 25 p p 08 p span 我想在我的跨度上画
  • ReactTable 修复了最后一行

    我正在使用 ReactTable 最后我需要创建一些摘要 当分页存在时 它每次都应该可见 可以用react table来实现吗 我可以通过创建下一个表来部分解决这个问题 但我没有找到如何隐藏标题的方法 另一个问题是调整列宽度时 它不会应用于
  • :hover 状态在 iOS 上不会结束

    我有一个带有悬停状态的简单菜单
  • 具有最大高度和滚动的动态内容的对话框+页脚CSS

    我有一个dialog with 位置 绝对 and a 最大高度放 这最大高度财产是set从外面by a javascript框架 jQuery UI 对话框 所以我无法控制它 里面有 2 个 div 其中一个充满了动态内容 and a 静
  • React JS - 单击时更改颜色并将默认颜色放在所有其他颜色上

    我有 x 个渲染数文章预览依赖于 API 调用的组件 div div Object keys images map index i gt return div div
  • IE8 忽略 td 宽度,适用于 IE7

    有一张表看起来像这样 table width 100 tr td td tr tr td style width 201px td td style width 100 td tr table 在除 IE8 之外的每个浏览器 包括 IE7
  • 监听浏览器宽度以进行响应式网页设计?

    我正在努力使我的网站适合移动设备 我想知道浏览器窗口的大小 以便当它比 728px 窄时我可以执行某些操作 而当它大于 728px 时我可以执行其他操作 这必须考虑到调整 PC 上的窗口大小以及在手机中从纵向模式更改为横向模式 如何才能做到
  • 无法正确显示行

    我应该在这个问题的开头说我完全没有 html css javascript 背景 所以请对我宽容点 如果我使用了错误的术语或者问了一个愚蠢的问题 没有提供足够的信息 请抱歉 我正在尝试让一个可扩展的表工作 通过阅读论坛线程 教程 将 nex
  • 每 2 行后使 html 表格的边框变厚

    我创建了一个包含一些内容的表 其中有 12 行和 2 列 我想显示边框 但每 4 行之后 我想将水平边框设置为比正常情况更粗 怎么做 请在这里帮忙 试试这个选择器 table tr nth of type 4n td border bott
  • html 电子邮件内的背景图像 css - Gmail 不支持

    我想向我的用户发送如下所示的带有背景图像 css 的 html 正文电子邮件 div style width 500px height 1000px background color black background image none
  • 如何使用javascript确保元素仅在圆上朝一个方向移动?

    好吧 我承认我对三角学真的很糟糕 出于上下文的考虑 我将添加我在这里提到的问题中的内容 参考问题 https stackoverflow com a 39429290 168492 https stackoverflow com a 394
  • 使用 JavaScript 移动页面上的按钮

    我的按钮可以移动 但奇怪的是 我无法弄清楚偏移是否有问题 我希望我的按钮随着鼠标光标移动 但现在它的移动方式不是我想要的 有时它会消失 另外 创建的新按钮是重叠的 我不知道如何解决这个问题并拥有更好的外观 var coorA var coo
  • 具有 100% 高度行和 Internet Explorer 9 的表格

    我有以下示例 div style height 150px background color AAAAFF div
  • 使用 CSS 折叠和展开元素

    我正在尝试构建一个页面 加载时仅可见标题 并且 当用户单击标题时 每个标题下方的表格会在隐藏和显示状态之间切换 我的限制是只能在 CSS 中执行此操作 这是我到目前为止想到的 https jsfiddle net Argoron c1ypx

随机推荐

  • 如何将llvm IR转换为c代码?

    有什么方法可以将 llvm IR 转换为 c 代码并保留其语义吗 例如 我们可以先将c代码编译到llvm IR 然后再将其编译回另一段c代码吗 我不希望这两个文件是相同的 但它们需要具有相同的功能 谢谢 您可以使用 C 后端 llc mar
  • 使用 MIDP 通过 http 从服务器读取 UTF8 字符串

    我想使用 java MIDP 从我控制的服务器读取 UTF 8 字符串 我的服务器正在发送 UTF 8 数据 下面的代码很接近 c StreamConnection Connector open myServer Connector REA
  • 使用样式或 Javascript 使图像变亮

    我想使用 css 或 javascript 在鼠标悬停时使网页上的图像变亮 我见过一些在样式中使用不透明度和滤镜的示例 但它们似乎对我不起作用 提前致谢 CP UPDATE 一个纯 CSS 解决方案是使用CSS 过滤器 https deve
  • 在 R 中读取二进制文件

    在以下代码中 可以导入具有这些属性的部分 LAS 文件版本 1 1 列表 项目格式 尺寸要求 X长4字节 Y长4字节 Z长4字节 强度无符号短 2 字节 返回编号 3 位 位 0 1 2 3 位 返回数 给定脉冲 3 位 位 3 4 5 3
  • 将页面映射到不同进程的地址空间

    可以使用以下命令读取和修改另一个进程地址空间中的内存ptrace 2 or process vm readv 2 process vm writev 2 但是我找不到系统调用来在另一个进程的地址空间中分配新内存 我目前能想到的唯一方法是向进
  • undefined 不是对象(评估 '_react.PropTypes.object')

    刚刚使用react native init创建了一个新项目 使用 react 16 0 0 react native 0 51 0 从 xcode 运行项目我收到以下错误 未处理的 JS 异常 模块 AppRegistry 不是已注册的可调
  • Antlr4:如何在语法中隐藏和使用令牌

    我正在解析一种定义两种类型的语句的脚本语言 控制语句和非控制语句 非控制语句总是以 而控制语句可能以以下结尾 or EOL n 语法的一部分如下所示 script statement EOF statement control statem
  • 在 PowerShell 中选择数组的所有对象的一个​​属性的值

    假设我们有一个对象数组 objects 假设这些对象有一个 Name 属性 这就是我想做的 results objects results Name 这可行 但是可以用更好的方式来完成吗 如果我做类似的事情 results objects
  • 无法绑定Margin属性?

    我正在尝试制作一种动画电影片段 其中在给定时刻只有一个字段可见 就像相机中的胶片一样 当前只有一个胶片场放置在镜头下方并准备被照亮 我尝试将其实现为一个带有另一个网格的网格 Film strip 在下面的代码中称为 pageContaine
  • 为什么x86很丑?为什么与其他人相比,它被认为是劣等的? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 我的 redis 密钥不会过期

    当生存时间达到 0 时 我的 Redis 服务器不会删除键 这是示例代码 redis cli gt SET mykey ismykey gt EXPIRE mykey 20 check TTL gt TTL mykey gt integer
  • 配置两节点 hazelcast 集群 - 避免多播

    上下文 Hazelcast 集群的两个节点 每个节点都位于一个离散的子网上 因此多播不适合也不适合节点定位 我想使用最少的 XML 配置文件 比如说hazelcast xml 将 Hazelcast 配置为使用 TCP IP 连接两个节点
  • 如何根据闪亮的输入选择对数据框进行子集化并用传单进行绘图

    我正在尝试使用 Rstudio 制作一个闪亮的应用程序来生成传单输出 请注意 shiny 是我以前从未使用过的包 因此脚本中可能存在除我当前遇到的错误之外的其他错误 我正在使用一个包含不同个体轨迹的数据帧 我想从中子集并绘制一只动物的轨迹以
  • 32位校验和算法比CRC32质量更好?

    是否有具有以下任一功能的 32 位校验和算法 输入数据大小 碰撞的分布更加均匀 这些与 CRC32 相关 由于 32 位存储空间的限制 我实际上不依赖第一个属性 但第二次 似乎就在那里could予以改进 有任何想法吗 谢谢 我需要具体的实现
  • 使用struts2使用动态参数进行重定向不起作用

    我在尝试使用动态参数重定向映射时遇到问题 我在 Struts2 中映射的方式
  • Facebook:应用程序配置不允许给定 URL

    从本周末开始 我们的一些较旧的 Facebook 游戏将无法加载 我认为这是由于游戏未获得访问令牌而导致的问题 因此无法代表用户 即 me 等 进行调用 我在 Javascript 控制台中看到以下内容 应用程序配置不允许给定 URL 应用
  • 'Zend_Db_Statement_Exception' 并显示消息 '无效的绑定变量名称 ':1'

    再会 背景信息 客户的托管服务器正在从 PHP 5 2 升级到 PHP 5 3 在 PHP 5 3 上测试时 客户端的应用程序崩溃了 具体来说 插入和更新方法是破坏应用程序的方法 该应用程序在 Zend Framework v1 7 2 中
  • WebAuthenticationBroker.AuthenticateAsync 引发异常

    我的代码使用 WebAuthenticationResult WebAuthenticationResult await WebAuthenticationBroker AuthenticateAsync WebAuthentication
  • 具有任意顺序的 JavaScript 依赖解决方案包括

    问题是这样的 我包含一个脚本 它使用另一个脚本 但是如果该依赖项还需要准备另一个脚本怎么办 这意味着加载它是不够的 但我还需要确保在执行之前调用了它的初始化回调 如果允许依赖项需要更多依赖项并在加载后显示它们 则 DOM 中脚本标签的顺序可
  • 小数和百分比行高有什么区别

    这个问题最初引用了w3c学校 我已经更正了该引用 根据w3c http www w3 org TR CSS21 visudet html propdef line heightCSSline height值可以设置如下