こんにちは、widenのUNOです。
CSSで上下や左右から中央揃えすることに手間取ったことはありませんか。
今回は、CSSで上下や左右から中央揃えする方法をご紹介いたします。
左右の中央揃え
インライン要素を左右中央揃えする
1. text-align: center;
text-align: center;は、基本的な中央揃えの方法です。
親となるブロック要素にtext-align: center;を指定することにより、
インライン要素(テキスト・画像)の中央揃えが可能となります。
下記は実際に実装したイメージとなります。
text-align: center;
CSSの例はこんな感じです。
- .sample{
- text-align: center;
- }
アウトライン要素を左右中央揃えする
2. margin: 0 auto;
margin: 0 auto;は、ブロックや画像を中央揃えする際に使用します。
注意点は、width(幅)の指定が必須であることです。
widthの単位を%で指定するとレスポンシブ対応も可能です。
また、max-width、min-widthを指定することで最大・最小の幅を指定することもできます。
下記は実際に実装したイメージとなります。
CSSの例はこんな感じです。
- .sample{
- width: 90%;
- margin: 0 auto;
- max-width: 1500px;
- }
3. display: block;
margin: 0 auto;の応用として、display: block;を使用する方法があります。
要素自体をブロックにし、マージンプロパティを適用する方法となります。
CSSの例はこんな感じです。
- .sample{
- display: block;
- margin-left: auto;
- margin-right: auto
- }
上下左右中央揃え
インライン要素を上下中央揃えする
4. vertical-align: middle;
インライン要素を上下中央寄せにしたいときはvertical-alignを使用します。
注意点は、インライン要素・テーブルセルのどちらかでしかvertical-alignが使えないことです。
注意点は、インライン要素・テーブルセルのどちらかでしかvertical-alignが使えないことです。
テーブルセルでの使用した場合はこのようなイメージです。
テーブルセル要素に
vertical-align: middle;を適応
CSSの例はこんな感じです。
- .sample-outer{
- display: table;
- width: 100%;
- }
- .sample-inner{
- display: table-cell;
- vertical-align: middle;
- }
インライン要素を上下左右中央揃えする
5. vertical-align: middle; と text-align: center;
インライン要素を上下左右中央揃えする場合は、vertical-align: middle; text-align: center;を併用します。
下記は実際に実装したイメージとなります。
テーブルセル要素に
vertical-align: middle; text-align: center;を適応
CSSの例はこんな感じです。
- .sample-outer{
- display: table;
- width: 100%;
- }
- .sample-inner{
- display: table-cell;
- text-align: center;
- vertical-align: middle;
- }
アウトライン要素を上下左右中央揃えする
6. position: absolute;とmargin: auto;
position: absolute;とmargin: auto;はブロック自体の上下左右中央揃えする際に使用します。
注意点は、width・heightの指定が必須なことです。
下記は実際に実装したイメージとなります。
CSSの例はこんな感じです。
- .sample-outer{
- position: relative;
- }
- .sample-inner{
- position: absolute;
- top: 0;
- right: 0;
- bottom: 0;
- left: 0;
- margin: auto;
- width: 90%;
- height: 100px;
- }
7. position: absolute;とtransform: translateY(-50%) translateX(-50%);
position: absolute;はブロック自体の位置を好きな位置へ配置する際によく使用します。
まず、アウトライン要素の左上を起点として上からどの程度移動させるか(top)、左からどの程度ずらすか(left)を決めます。
次に、インライン要素の左上を起点として縦(translateY)、横(translateX)の位置を修正します。
まず、アウトライン要素の左上を起点として上からどの程度移動させるか(top)、左からどの程度ずらすか(left)を決めます。
次に、インライン要素の左上を起点として縦(translateY)、横(translateX)の位置を修正します。
具体的な上下左右中央揃えの方法は下記のコードを参考にしてください。
- .sample-outer{
- position: relative;
- }
- .sample-inner{
- position: absolute;
- top: 50%;
- left: 50%;
- transform: translateY(-50%) translateX(-50%);
- -webkit- transform: translateY(-50%) translateX(-50%);
- }
8. display: flex;
上の2つよりシンプルな方法ですが、注意点があります。
- 中央寄せした要素の横幅が勝手に決まること
- IE9以下に未対応な点
CSSの例はこんな感じです。
- .sample-outer{
- display: flex;
- justify-content: center;
- align-items: center;
- }
簡単な説明になりましたが、少しでも参考になればと思います。
実装するwebやAppに合わせて、いろんなものを使い分けてみてください。