【发布时间】:2013-02-14 19:58:15
【问题描述】:
我有以下 HTML:
<div class="outer">
<div class="inner rotate">Centered?</div>
</div>
div.outer 是一个狭窄的垂直条。 div.inner 旋转 90 度。我想要文本“居中?”在其容器 div 中居中显示。我事先不知道任何一个 div 的大小。
这很接近:http://jsfiddle.net/CCMyf/2/。您可以从 jsfiddle 中看到,在应用 transform: rotate(-90deg) 样式之前,文本垂直居中,但在应用之后有些偏移。当div.outer 很短时,这一点尤其明显。
是否可以在不预先知道任何大小的情况下将文本垂直居中?我没有找到任何解决此问题的 transform-origin 值。
【问题讨论】:
-
你反对在元素上设置
display: table吗?因为垂直对齐动态 div 的“标准”方式应该可以毫无问题地使用转换:stackoverflow.com/a/6182661/188221 -
我不反对
display: table。这个小提琴表明表格解决方案与上面的问题相同:jsfiddle.net/4d384 -
尝试将
rotate类放在中间元素上。应该这样做,但看起来它弄乱了项目的宽度。可能需要使用 padding 或 width 或 height 道具,但它应该是可行的:jsfiddle.net/digthedoug/jWYuq -
解决宽度问题比您预期的要困难得多。将
min-width: 16px; width: 16px放在.outer上会导致与原始问题完全相同的非居中。
标签: css vertical-alignment centering vertical-text