【发布时间】:2015-03-11 12:27:49
【问题描述】:
我一直在查看 SO 和 google 上的几个线程,它们说我可以在设置 div 的高度后使用 line-height 使文本垂直对齐。然而,这需要您设置 div 的高度,这对于响应式网页设计来说不是很好吗?我正在尝试对齐导航栏中的单行文本。
一些示例代码:
<nav>
<section class="logo">
<span>logo text</span>
</section>
<section>
<ul>
<li>link</li>
<li>link</li>
<li>link</li>
<li>link</li>
</ul>
</section>
<section class="dropdown">
<span>dropdown</span>
</section>
</nav>
.logo {
display: inline-block;
}
.dropdown {
display: inline-block
}
我需要在 span 元素内对齐徽标和下拉文本,但我没有在任何地方设置任何高度,因为我希望设计更容易适应屏幕分辨率。
跨度在导航元素内,所以我认为如果我将跨度设置为内联块元素,我可以在跨度上执行“高度:100%”,但这不起作用。
有什么方法可以让 line-height 与 height 一起工作,而无需手动指定跨度的高度(以像素为单位),这样我就可以获得尽可能响应的垂直对齐文本?
我也一直在研究将垂直对齐属性与 css 表一起使用,但看起来我在这种情况下也必须以像素为单位指定容器元素的高度。
【问题讨论】:
-
你可以设置相对单位的高度和行高(例如
em)? -
你也可以用数字来设置(
line-height:1.2;),它是相对于元素的font-size => developer.mozilla.org/en-US/docs/Web/CSS/line-height -
我希望浏览器计算元素的高度并据此调整行高,而不是对其进行硬编码。我确实看到 w3c (w3.org/Style/Examples/007/center.en.html#text) 也在手动设置高度,所以我想可能没有办法做到这一点..但手动设置高度似乎不是很好的编码,我认为有例如,如果您调整屏幕分辨率或浏览器的大小,可以通过某种方式自动调整此高度/行高。
-
请指定您所指的问题和答案(“主题”)。
line-height属性用于设置行高,从而设置基线之间的间距;使用它进行垂直对齐是不可靠的诡计。考虑描述(在标题和问题本身中)你的原始问题和你解决它的最佳尝试,而不是在你的示例中甚至没有使用的假设解决方案。 -
@Jukka:我几乎在任何地方都能看到人们使用 line-height 进行垂直对齐。以css-tricks.com/vertically-center-multi-lined-text 为例,但也以stackoverflow.com/questions/4785871/css-vertical-align 等SO 上的线程为例。我认为我的问题很清楚,因为我基本上要求如何垂直对齐 div 中的文本,但不必手动设置行高似乎取决于的高度