2012-07-13 51 views
0
<div class="bordered" style="height: 300px; text-align: center"> 
     <div class="bordered inline-blocked" style="height: 100px; vertical-align: middle">XXX</div> 
     <div class="bordered inline-blocked" style="height: 200px; vertical-align: middle">YYY</div> 
    </div> 

Divs XXX和YYY彼此相对垂直居中,即它们在水平线上一个,但不是相对于容器垂直居中。这就是我想要的。为什么元素的垂直对齐会影响其兄弟对齐?

现在的问题:

如果我改变两个垂直对齐的属性奇怪的事情发生西港岛线之一。

  1. 我删除了XXX vertical-align属性。结果:XXX向下移动并且定位为无。 YYY保持不变。
  2. 我将YYY vertical-align属性设置为'top'。 YYY保持原位,XXX尽管自己的价值仍然“中等”,但仍与YYY的顶部一致。
  3. 我将YYY vertical-align属性设置为'bottom'。 YYY保持原位,XXX尽管自身价值仍然“中等”,但仍与YYY的底部保持一致。

我一直认为,当一行中有几个内联元素时,它们形成一行内联框,并且所有垂直对齐值都相对于该框应用,即行内框被垂直定位属性不在其父代内部,而是在父代内部的内联盒子行内,即在其兄弟姐妹行内。因此,如果我将XXX属性设置为'中间',将YYY设置为'底部',那么它应该与它们都设置为中间的情况完全相同,因为假想内联框的大小和位置是没有改变。但事实上,如果它们中的两个都不是垂直对齐到中间,我不能将这些框垂直居中。

那么你能解释一下这个简单例子里发生了什么吗?

我无法得到的另一件事是如何在此示例中的定位受到行高属性的影响。

答:

不幸的是,垂直对齐:中间会无法对齐内联元素就行最大的元素的中间(如你所期望的)。相反,中间值会使元素与假设的小写“x”(也称为“x高度”)的中间对齐。所以,在我看来,这个值实际上应该被称为“文本中间”,以正确识别它的功能。 大段引用

http://www.impressivewebs.com/css-vertical-align/,由于双方黄芪多糖brains911

提醒:

如果与垂直对齐搞乱一些文本添加到您的容器 - 它会显示其用于对齐基线。

回答

1

当人们尝试在块级元素上使用垂直对齐并且得不到结果时。如果您在较大的div内部有一个较小的div,并且想要将较小的那个垂直居中,vertical-align不会对您有所帮助。

更多信息:你可以参考此链接:

Understanding CSS’s vertical-align Property

css trick-vertical align properties

+1

对不起,我只是didnt提到,班里的直列阻止“有属性 '显示:inline-block的'组。 – KutaBeach 2012-07-14 06:40:09