【问题标题】:baseline vertical-align, but at the top基线垂直对齐,但在顶部
【发布时间】:2015-11-25 14:51:40
【问题描述】:

我试图获得类似于基线的垂直对齐方式,但在文本的第一行而不是最后一行。 top 和 text-top 都没有正确对齐。有任何想法吗?谢谢!

edit:这假设字体大小在对齐的元素中是相同的。请参阅下面@FelipeAls 对已接受答案的评论。

编辑:现在带有代码示例和图片:

我正在尝试做的是垂直对齐几个内联块元素中的文本,以便它们的基线都在同一位置。我宁愿不做一些像使用边距和填充来轻推的事情,因为我发现每当我这样做时,我最终都会在不同的浏览器上玩whack-a-mole。

HTML:

<div class="foo">
    <span>one</span>
    <span>two two two two</span>
    <span>three three three three three three three three three</span>
    <button type="button">action</button>
</div>

<div class="bar">
    <span>one</span>
    <span>two two two two</span>
    <span>three three three three three three three three three</span>
    <button type="button">action</button>
</div>

CSS:

body {
    font-family: sans-serif;
    font-size: 12px;
}

button {
    font-family: inherit;
    font-size: inherit;
}

div {
    position: relative;
    width: 500px;
    text-align: center;
}

div.foo, div.bar {
    margin-bottom: 2em;
}

div span {
    text-align: center;
}

div.foo span {
    display: inline-block;
    width: 50px;
    vertical-align: top;
}

div.bar span {
    display: inline-block;
    width: 50px;
    vertical-align: baseline;
}

div button {
    display: inline-block;
    width: 125px;
}

见http://jsfiddle.net/don01001100/3t8v5L1j/3/。

【问题讨论】:

  • 请包含代码示例而不是代码链接。并且更具体一点:您想将什么元素与什么对齐?
  • @Jonathan,对此感到抱歉!我已经添加了相关的 HTML 和 CSS。 jsfiddle 里面有一些额外的代码,但是我放在这里的是相关的。

标签: html css


【解决方案1】:

恐怕你只能用 CSS box-model 来做到这一点,比如margin,padding。

这是因为不同的 inline-block 元素在基线对齐,但它们具有不同的 padding / margin 设置,因此它们的文本在垂直方向上略微偏离。如果您将&lt;button&gt;s 和&lt;span&gt;s 的padding 和margin 更改为相同,那么它应该可以工作。


EDIT1

实际上,现在我想到了,您也许可以手动将值设置为vertical-align(以像素为单位)。试验它(包括负值),看看你想要什么。这将取决于&lt;span&gt;s 和&lt;div&gt;s 中的paddings 和margins。


EDIT2

实际上,vertical-align: text-top 对我来说效果很好:

【讨论】:

  • 我并没有意识到将它们改变为不同的。当我设置text-top 时,我也更改了按钮的垂直对齐方式。当我将第一个示例改回top 时,我必须删除整个规则,而不仅仅是vertical-align 的声明。这适用于 Windows 8 上的 Chrome 46、IE 10 和 Firefox 41,以及我的 iOS 设备上的 Safari。谢谢!
  • @Don01001100 可能存在限制:不同字体大小的元素不会在同一行上呈现,唉jsfiddle.net/3t8v5L1j/7(我没有进一步调查)
  • 感谢您指出这一点,@FelipeAls。在我的用例中,字体大小是相同的。
  • 根据我作为 HTML/CSS 专家的经验,对于设计人员来说,标签和输入(以及“靠近”它们的其他文本)使用相同的字体大小可能是最佳实践。即使在这种情况下也很难:-D
猜你喜欢
  • 2015-10-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-28
  • 2017-08-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多