CSSの要素が中央にある
3395 ワード
人々はよくCSSの中で中の要素の問題に文句を言って、実はこの問題は実は複雑ではありませんて、ただ方法が多いため、情況によって多くの方法の中から1つを選ぶ必要があります.
簡単に1つのblock要素の中で水平に1つのinline要素を中心にすることができます.以下のコードはinline、inline-block、inline-table、inline-flexなどに有効です.サブエレメントが上記のタイプでない場合は、
block要素が固定幅に設定されている場合、要素margin-leftとmargin-rightの値をautoに設定する方法で水平中央を実現することができる.
block要素が固定幅に設定されていない場合は、サブ要素のcssに
inline/text要素は、同じ上下padding値を設定して垂直中心にする目的で簡単に使用できます.
何らかの理由でpaddingメソッドが使用できない場合は、line-heightをheightに等しく設定して目的を達成することもできます.
同じ上下paddingもこの場合に適用できます.有効にならない場合は、エレメントの親エレメントのdispalyをtableに設定し、エレメントのdispalyをtable-cellに設定してvertical-alignを設定します.
上記の方法が使用できない場合は、flexboxを使用してみてください.個別のflexboxサブエレメントは、親エレメントの中で簡単に中央に位置することができます.この方法では、親要素に一定の高さが必要であることを覚えておいてください.
上記の2つの方法が使用できない場合は、「幽霊要素」技術を使用することができます.この方法は、beforeが高さを広げ、文字が垂直に中央に位置します.
flexboxの使用
ただし、この方法では、厳密な垂直中央を実現するには、親要素に
参考資料segmentfault:CSSの各種中央segmentfault:CSS中央完全ガイド
水平方向中央
1.inline-block配合text-align(不定幅使用可能)
簡単に1つのblock要素の中で水平に1つのinline要素を中心にすることができます.以下のコードはinline、inline-block、inline-table、inline-flexなどに有効です.サブエレメントが上記のタイプでない場合は、
display: inline-block
を設定できます..parent {
text-align: center;
}
2.margin:0 autoメソッド
block要素が固定幅に設定されている場合、要素margin-leftとmargin-rightの値をautoに設定する方法で水平中央を実現することができる.
.child {
width: 100px;
margin: 0 auto;
}
block要素が固定幅に設定されていない場合は、サブ要素のcssに
display:table;
を加えるだけでよい..parent {
width: 200px;
height: 200px;
background: #ccc;
}
.child {
/*width: 100px;
height: 100px; */
background: rgba(199,1,1,0.2);
display: table;
margin: 0 auto;
}
3.absolute配合transform(不定幅使用可能)
.parent{
position:relative;
}
.child{
position:absolute;
left:50%;
transform: translateX(-50%);
}
4.Flexレイアウトの使用
.parent {
display: flex;
justify-content: center;
}
垂直方向中央揃え
1.垂直中央inlineまたはinline-*要素
1.1 1行
inline/text要素は、同じ上下padding値を設定して垂直中心にする目的で簡単に使用できます.
.center {
pading-top: 30px;
padding-bottom: 30px;
}
何らかの理由でpaddingメソッドが使用できない場合は、line-heightをheightに等しく設定して目的を達成することもできます.
.center {
height: 100px;
line-height: 100px;
white-space: nowrap;
}
1.2複数行
同じ上下paddingもこの場合に適用できます.有効にならない場合は、エレメントの親エレメントのdispalyをtableに設定し、エレメントのdispalyをtable-cellに設定してvertical-alignを設定します.
.parent {
display: table;
width: 200px;
height: 400px;
}
.child {
display: table-cell;
vertical-align: middle;
}
上記の方法が使用できない場合は、flexboxを使用してみてください.個別のflexboxサブエレメントは、親エレメントの中で簡単に中央に位置することができます.この方法では、親要素に一定の高さが必要であることを覚えておいてください.
.parent {
display: flex;
justify-content: center;
flex-direction: column;
height: 400px;
}
上記の2つの方法が使用できない場合は、「幽霊要素」技術を使用することができます.この方法は、beforeが高さを広げ、文字が垂直に中央に位置します.
.parent {
position: relative;
}
.parent::before {
content: " ";
display: inline-block;
height: 100%;
width: 1%;
vertical-align: middle;
}
.child {
display: inline-block;
vertical-align: middle;
}
2.垂直中央blockクラスの要素
.parent {
position: relative;
}
.child {
position: absolute;
top: 50%;
transform: translateY(-50%);
}
flexboxの使用
.parent {
display: flex;
align-items: center;
}
水平垂直方向中央
1.inline-block配合text-alignプラスtable-cell配合vertical-align
.parent{
display: table-cell;
vertical-align:middle;
text-align:center;
}
.child{
display: inline-block;
}
ただし、この方法では、厳密な垂直中央を実現するには、親要素に
font-size:0;
を設定する必要があることに注意してください.2.absolute配合transform
.parent{
position: relative;
}
.child{
position: absolute;
left: 50%;
top: 50%;
transform: translate(-50%,-50%);
}
3.flexboxの使用
.parent {
display: flex;
justify-content: center;
align-items: center;
}
参考資料segmentfault:CSSの各種中央segmentfault:CSS中央完全ガイド