深入剖析 CSS:字体度量、行高和垂直对齐

本文深入探讨了CSS中字体度量、行高和垂直对齐的复杂性。通过示例解释了字体大小如何影响元素高度,以及`line-height`的默认值和无单位值的含义。内容涵盖了字体的全角方块、上升器和下降器等概念,以及内联元素的内容区域和虚拟区域。文章指出,`line-height`的无单位值可能导致意外的高度行为,并讨论了`vertical-align`属性在内联格式设置中的作用。尽管存在挑战,但作者表达了对CSS的热爱,并强调了理解和掌握这些概念的重要性。
摘要由CSDN通过智能技术生成

Line-height 并且是简单的 CSS 属性。如此简单,以至于我们大多数人都相信要完全理解它们的工作原理以及如何使用它们。但事实并非如此。它们真的很复杂,也许是最难的,因为它们在创建CSS鲜为人知的功能之一(内联格式设置上下文)方面发挥着重要作用。 vertical-align

例如,可以设置为长度或无单位值 line-height 1,但默认值为 。好吧,但什么是正常的?我们经常读到它是(或应该是)1,或者可能是1.2,甚至是 normal CSS规范在这一点上尚不清楚.我们知道无单元是相对的,但问题是它的行为在字体系列之间是不同的,所以总是相同还是不同?它真的介于 1 和 1.2 之间吗?以及,它有什么影响? line-height font-size font-size: 100px line-height vertical-align line-height

深入了解一个不那么简单的CSS机制...

我们先来谈谈 font-size 

看看这个简单的HTML代码,一个包含3的标签,每个标签都有不同的: <p> <span> font-family

<p>
    <span class="a">Ba</span>
    <span class="b">Ba</span>
    <span class="c">Ba</span>
</p>
p  { font-size: 100px }
.a { font-family: Helvetica }
.b { font-family: Gruppo    }
.c { font-family: Catamaran }

对不同的字体系列使用相同的字体可生成具有不同高度的元素: font-size

不同的字体系列,相同的字体大小,给出不同的高度即使我们知道这种行为,为什么不创建高度为100px的元素呢?我测量并发现了这些值:Helvetica:115px,Gruppo:97px和Catamaran:164px font-size: 100px

字体大小的元素:100px 的高度从 97px 到 164px 不等虽然乍一看似乎有点奇怪,但完全可以预料到。原因在于字体本身。以下是它的工作原理:

  • 字体定义其全开-方形(或 UPM,单位单位/em),一种将绘制每个字符的容器。此正方形使用相对单位,通常设置为 1000 个单位。但它也可以是1024,2048或其他任何东西。

  • 根据其相对单位,设置字体的度量(升序,降序,大写高度,x高度等)。请注意,某些值可能会在全角方块之外渗出。

  • 在浏览器中,相对单位会缩放以适合所需的字体大小。

让我们采用双体船字体并将其打开FontForge获取指标:

  • 全角方块为 1000

  • 上升器为 1100,下降器为 540。运行一些测试后,浏览器似乎在Mac OS上使用HHead上升/下降值,在Windows上使用Win上升/下降值(这些值可能会有所不同!我们还注意到,资本高度为 680,X 高度为 485。

使用 FontForge 的字体指标值这意味着双体船字体在1000个单位的em-square中使用1100 + 540个单位,这在设置时提供164px的高度。这个计算的高度定义了元素的内容区域,我将在本文的其余部分参考这个术语。您可以将内容区域视为应用属性的区域 font-size: 100px background 

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

库特社区

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值