流動的なパーセンテージ ベースのコンテナーがあり、その中に div があり、タイトルが含まれています。ブラウザーのサイズが変更されたり、ビューポートが変更されたりするたびに、このタイトルが常にこのコンテナーの中央に垂直に配置されるようにします。JavaScript を使用せずにこの垂直方向の再配置を行うことは可能ですか?
<div class="fluid-container">
<div class="meta">Title</div>
</div>
流動的なパーセンテージ ベースのコンテナーがあり、その中に div があり、タイトルが含まれています。ブラウザーのサイズが変更されたり、ビューポートが変更されたりするたびに、このタイトルが常にこのコンテナーの中央に垂直に配置されるようにします。JavaScript を使用せずにこの垂直方向の再配置を行うことは可能ですか?
<div class="fluid-container">
<div class="meta">Title</div>
</div>
これが私のお気に入りの方法です。この目標を達成するために、2 つのヘルパー クラスを使用します。
.valign:after {
display: inline-block;
height: 100%;
width: 0;
vertical-align: middle;
content: '';
}
.valign > .valigned {
display: inline-block;
vertical-align: middle;
text-align: left;
}
何かを垂直方向に配置する必要がある場合は、valign
クラスを親とvaligned
実際の要素に追加するだけです。このような:
<div class="fluid-container valign">
<div class="meta valigned">Title</div>
</div>
「タイトル」タグの高さの高さを知っている場合、またはで設定できる場合はline-height
、height
次のようにすることができます。
.fluid-container {
position: relative;
}
.fluid-container > .meta {
width: 100%;
height: 20px;
line-height: 20px;
position: absolute;
top: 50%;
margin-top: -10px;
text-align: center;
}
line-height
、inline-block
、およびを(乱用) 使用vertical-align:middle
して、目的の効果を得ることができます。すべてのまともなブラウザで動作します。(私はかつてこのテクニックをここで見つけました)
.fluid-container {
line-height: 8em; /* some abundant value, around the max height */
}
.fluid-container > div.meta {
vertical-align: middle; /* center… */
display: inline-block; /* …like text */
}