dominant-baseline

Baseline 已广泛支持

此特性已相当成熟,可在许多设备和浏览器版本上使用。自 ⁨2020 年 1 月⁩ 起,所有主流浏览器均已支持。

dominant-baseline CSS 属性指定用于对齐框的文本和行内级内容的特定基线。它还指示在框的对齐上下文中参与基线对齐的任何框的默认对齐基线。如果存在,它将覆盖形状的 dominant-baseline 属性。

基线选自字体基线表。如果名义字体中没有基线表,或者基线表中缺少所需基线的条目,则浏览器可以使用启发式方法来确定所需基线的位置。

dominant-baseline 属性用于确定或重新确定一个缩放基线表(scaled-baseline-table)。缩放基线表是一个包含三个组件的复合值:

  1. 主导基线的基线标识符,
  2. 基线表,以及
  3. 基线表字体大小。

dominant-baseline 的某些值会重新确定所有三个值。其他值仅重新建立基线表字体大小。当初始值 auto 会产生不希望的结果时,可以使用此属性显式设置所需的缩放基线表。

注意: dominant-baseline 属性仅对 <text><textPath><tspan> SVG 元素起作用。

语法

css
/* Initial value */
dominant-baseline: auto;

/* Keyword values */
dominant-baseline: alphabetic;
dominant-baseline: central;
dominant-baseline: hanging;
dominant-baseline: ideographic;
dominant-baseline: mathematical;
dominant-baseline: middle;
dominant-baseline: text-bottom;
dominant-baseline: text-top;

/* Global values */
dominant-baseline: inherit;
dominant-baseline: initial;
dominant-baseline: revert;
dominant-baseline: revert-layer;
dominant-baseline: unset;

auto

如果此属性应用于 <text> 元素,则计算值取决于 writing-mode 属性的值。

如果 writing-mode 是水平的,则 dominant-baseline 组件的值为 alphabetic。否则,如果 writing-mode 是垂直的,则 dominant-baseline 组件的值为 central

如果此属性应用于 <tspan><textPath> 元素,则 dominant-baseline 和 baseline-table 组件保持与父文本内容元素相同。

如果计算的 baseline-shift 值实际改变了基线,则 baseline-table 字体大小组件被设置为 dominant-baseline 属性所在元素的 font-size 属性的值;否则,baseline-table 字体大小保持与该元素相同。

如果没有父文本内容元素,则缩放基线表值将按照 <text> 元素的构造方式进行构造。

alphabetic

主导基线的基线标识符设置为 alphabetic,派生基线表使用字体中的 alphabetic 基线表构建,并且基线表字体大小更改为元素的 font-size SVG 属性或 CSS font-size(如果已设置)的值。

central

主导基线的基线标识符设置为 central。派生基线表根据字体基线表中定义的基线构建。该字体基线表按照以下基线表名称的优先级顺序选择:ideographicalphabetichangingmathematical。基线表字体大小更改为元素的 font-size SVG 属性或 CSS font-size(如果已设置)的值。

hanging

主导基线的基线标识符设置为 hanging,派生基线表使用字体中的 hanging 基线表构建,并且基线表字体大小更改为该元素的 font-size SVG 属性或 font-size CSS 属性的值。

ideographic

主导基线的基线标识符设置为 ideographic,派生基线表使用字体中的 ideographic 基线表构建,并且基线表字体大小更改为元素的 font-size SVG 属性或 CSS font-size(如果已设置)的值。

mathematical

主导基线的基线标识符设置为 mathematical,派生基线表使用字体中的 mathematical 基线表构建,并且基线表字体大小更改为元素的 font-size SVG 属性或 CSS font-size(如果已设置)的值。

middle

主导基线的基线标识符设置为 middle。派生基线表根据字体中基线表中定义的基线构建。该字体基线表按照以下基线表名称的优先级顺序选择:ideographicalphabetichangingmathematical。基线表字体大小更改为元素的 font-size SVG 属性或 CSS font-size(如果已设置)的值。

text-bottom

行下边缘用作基线,这通常是字体 em 框的下边缘。

text-top

行上边缘用作基线,这通常是字体 em 框的上边缘。

正式定义

初始值auto
应用于块容器、弹性容器、网格容器、行内框、表格行和 SVG 文本内容元素
继承性
计算值同指定值
动画类型离散

正式语法

dominant-baseline = 
auto |
text-bottom |
alphabetic |
ideographic |
middle |
central |
mathematical |
hanging |
text-top

示例

html
<svg viewBox="0 0 450 160" width="700" height="200">
  <text x="50" y="20">alphabetic</text>
  <text x="50" y="60">central</text>
  <text x="50" y="100">hanging</text>
  <text x="50" y="140">ideographic</text>
  <text x="250" y="20">mathematical</text>
  <text x="250" y="60">middle</text>
  <text x="250" y="100">text-bottom</text>
  <text x="250" y="140">text-top</text>
  <path
    d="M   0,20 l 400,0
       m -400,40 l 400,0
       m -400,40 l 400,0
       m -400,40 l 400,0"
    stroke="grey" />
  <text x="0" y="20" fill="red">auto</text>
  <text x="0" y="60" fill="red">auto</text>
  <text x="0" y="100" fill="red">auto</text>
  <text x="0" y="140" fill="red">auto</text>
</svg>
css
text {
  font-size: 20px;
}
text:nth-of-type(1) {
  dominant-baseline: alphabetic;
}
text:nth-of-type(2) {
  dominant-baseline: central;
}
text:nth-of-type(3) {
  dominant-baseline: hanging;
}
text:nth-of-type(4) {
  dominant-baseline: ideographic;
}
text:nth-of-type(5) {
  dominant-baseline: mathematical;
}
text:nth-of-type(6) {
  dominant-baseline: middle;
}
text:nth-of-type(7) {
  dominant-baseline: text-bottom;
}
text:nth-of-type(8) {
  dominant-baseline: text-top;
}

规范

规范
CSS 内联布局模块级别 3
# dominant-baseline-property
Scalable Vector Graphics (SVG) 2
# DominantBaselineProperty

浏览器兼容性

另见