画像スライド (flexslider) をオーバーレイする一部のコンテンツを垂直方向および水平方向に中央揃えにしようとしています。これと似たような質問がいくつかありましたが、私の特定の問題に直接適用できる満足のいく解決策は見つかりませんでした。FlexSlider の制限により、position: absolute;
私の実装では img タグで使用できません。
私はほとんど以下の回避策を持っています。唯一の問題は、プロパティ を使用してinner-wrapper
div で幅と高さの宣言を機能させることができないことです。display: table-cell
これは標準的な動作ですか、それともコードに何か不足していますか? それが標準的な動作である場合、私の問題に対する最善の解決策は何ですか?
HTML
<ul>
<li>
<img src="#">
<div class="outer-wrapper">
<div class="inner-wrapper">
<h1>My Title</h1>
<h5>Subtitle</h5>
</div>
</div>
</li>
</ul>
CSS
html, body {
margin: 0; padding: 0;
width: 100%; height: 100%;
}
ul {
background: #CCC;
height: 100%;
width: 100%;
list-style-position: outside;
margin: 0; padding: 0;
}
li {
width: 100%;
display: table;
}
img {
width: 100%;
height: 410px;
}
.outer-wrapper {
position: absolute;
width: 100%;
height: 100%;
top: 0;
margin: 0; padding: 0;
}
.inner-wrapper {
display: table-cell;
vertical-align: middle;
text-align: center;
width: 100%;
height: 100%;
}
注: 中央のコンテンツは複数の要素になるため、行の高さのトリックは使用できません。
jsFiddle .