【发布时间】:2016-09-19 12:52:15
【问题描述】:
换句话说,我如何忽略角色的深度和上升,而仅根据其边界框将其垂直居中?
这是一个最小的 html 示例:
.box {
display: inline-block;
width: 1em;
height: 1em;
line-height: 1em;
border: 1px solid black;
text-align: center;
}
<span class="box">?</span>
<span class="box">,</span>
<span class="box">`</span>
它产生以下内容:
如何将其更改为生成以下内容?
如果存在 CSS 解决方案,则首选它们,但 Javascript 作为最后的手段是可接受的。我正在寻找一个通用的解决方案,而不仅仅是图中的三个字符。我的页面中会有很多这样的框,所以性能(如果使用 Javascript)很重要。
为了进一步澄清事情,这是我在 LaTeX 中的做法:
\newlength{\desiredboxsize}
\setlength{\desiredboxsize}{1em}
\newcommand*{\centercharinbox}[1]{%
% Force width
\makebox[\desiredboxsize]{%
% Force height and center vertically
\raisebox{\dimexpr .5\desiredboxsize - .5\height \relax}[\desiredboxsize][0pt]{%
% Cancel depth
\raisebox{\depth}{#1}}}}
【问题讨论】:
-
@Oriol,感谢您的编辑!
-
我想知道
CanvasRenderingContext2D.measureText是否可以用 JS 来实现这一点,但似乎只有 Chrome 支持垂直属性,并且它们为所有字符返回相同的值。
标签: css centering typography