【发布时间】:2015-10-07 23:49:20
【问题描述】:
这个问题是由this related question建议的修复引起的
我有 3 个嵌套的 div:外部、内部和项目。
<div class="outer">
<div class="inner"><div class="item"></div></div>
</div>
给定以下基本 CSS:
.outer{
width:50%;
height:100px;
border: 1px solid red;
position:relative;
overflow-x:hidden;
box-sizing:border-box;
}
.inner{
border:1px solid blue;
height:100%;
position: absolute;
box-sizing: border-box;
line-height:98px;
}
.item{
width:100px;
height:94px;
background-color:yellow;
display: inline-block;
border:1px solid green;
box-sizing:border-box;
vertical-align:middle;
}
挑战是将“项目”div 垂直居中,上下有相等(或没有)间隙,并且不出现垂直滚动条。
更新:
如下所述,我应该补充一点,不同高度的多个项目必须居中。到目前为止,最好的答案是为每个项目添加负边距,结果如下:http://codepen.io/anon/pen/dYWEYZ
但是,这闻起来很糟糕(对我来说),因为它需要一个依赖于其他 3 个属性的偏移量。
【问题讨论】:
-
这里有很多 hacky 的东西,为什么不添加另一个:margin-top: -5px;以 .item 类为中心。 codepen.io/anon/pen/PPmgBR
-
似乎是这样,行高为 98px,必须有 overflow-x: hidden,必须在 .item 类上有 inline-block。无论哪种方式, margin-top: -5px 都会修复它,因为它会针对外部和内部(总共 4px)和行高差异调整为 1px 边框。如果您在外部和内部(总共 8 像素)上设置边框 2 像素,那么边距顶部变为 -9 像素,这很好。都是关于边界的,加上行高
-
这些东西都不是hacky,它们是设计所要求的。用于图片轮播,图片高度不同,需要堆叠在一起(需要inline-block),溢出隐藏是一次只显示部分图片,yada yada。这都是必需的。
标签: css vertical-alignment border-box