この質問は、この関連する質問に提案された修正から生じました
外部、内部、アイテムの 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 つのプロパティに依存するオフセットが必要なため、これは (私には) 悪臭がします。