私はグリフィコンを持っています:
<div class="col-xs-4 col-sm-2">
<span class="glyphicon glyphicon-circle-arrow-up glyphicon-large"></span>
</div>
.glyphicon-large {
min-height: 260px;
font-size: 35px;
width: 1em;
display: block;
top: 50%;
margin: -0.5em auto 0px;
}
グリフィコンは、垂直に中央に整列しません。 firefoxを開いて要素を検査し、top 50%
ルール、突然機能します。どうして?
top
によると:相対的に配置された要素(
position: relative
を含むもの)の場合、それは要素が通常の位置より下に移動される量を指定します 。
注:割合は、要素を含むブロックの高さの割合として適用されます
top
によると:相対的に配置されたボックスの場合、オフセットはボックス自体の上端を基準とします(つまり、ボックスには通常のフロー内の位置が与えられ、次にその位置からオフセットされます)これらのプロパティに)。 注:パーセンテージは、包含ブロックの高さを指します
ブラウザが最初にビジュアルツリーをレンダリングしている でtop:50%;
を確認すると、親が高さを設定しているようです。高さは特に適用されておらず、子コンテンツもロードされていないため、このdiv(およびすべてのdiv)の高さは、特に指示がない限り、効果的にゼロから始まります。次に、グリフをゼロの50%押し下げます。
後でプロパティを切り替えると、ブラウザーはすべてを既にレンダリングしているため、親コンテナーの計算された高さはその子の高さによって提供されます。
注:これは実際にはBootstrapまたはGlyphiconsとは関係ありません。依存関係を回避するためにブートストラップでは、top: 1px
クラスによって適用される.glyphicon
を追加します。これは50%
によって上書きされますが、それでも重要な役割を果たします。
次に、親/子要素の簡単なセットを示します。
<div id="container">
<div id="child">Child</div>
</div>
プロパティの切り替えをより再現可能な方法でシミュレートするには、2秒待ってから、次のようにJavaScriptでスタイルを適用します。
window.setTimeout(function() {
document.getElementById("child").style.top = '50%';
},2000);
開始点として、問題を再現しましょう。
#container {
position: relative;
/* For Visual Effects */
border: 1px solid grey;
}
#child {
position: relative;
height: 50px;
top: 1px;
/* For Visual Effects */
border: 1px solid orange;
width: 50px;
margin: 0px auto;
}
ウィンドウのサイズを変更するとすぐに、ブラウザが画面を再描画し、要素を最上部に戻します。
子要素にtop: 50%
を追加した場合、上書きするものがないため、JavaScriptがプロパティを追加しても何も起こりません。
top: 49%
を子要素に追加した場合、DOMには何か更新する必要があるため、奇妙な不具合が再び発生します。
height: 50px;
を子ではなくコンテナに追加した場合、top
プロパティには、最初から配置すべきものがあり、JavaScriptでトグルを使用する必要はありません。
何かを一貫して垂直方向に中央揃えする方法を知りたいだけの場合は、以下を実行できます。
テキストを垂直方向に中央揃えにするコツは、コンテナの高さに等しい line-height
を設定することです。 1行が100ピクセルを占め、オンラインのテキスト行が10を占める場合、ブラウザは残りの90ピクセルの中央にテキストを配置しようとします。
.glyphicon-large {
min-height: 260px;
line-height: 260px;
}
H1タグ内にあるグリフアイコンを中心にしてみましたが、時間がかかりました。そのため、グリフを含むSPANタグ内のフォントサイズと色を実際に変更できることがわかりました。
したがって:
<h1><span class="glyphicon glyphicon-envelope" style="font-size: 24px; color: #108db7;"></span> Mes Messages</h1>
実際に私のために働いた。