LoginSignup
58
60

More than 5 years have passed since last update.

flexboxで要素の高さを揃えつつ上下中央にする方法(IE10対応)

Last updated at Posted at 2016-08-24

flexboxを使うと簡単に要素を上下中央に揃えられますが、親要素に背景色や枠線がついていると一手間必要になるので順を追ってサンプルを作成してみました。

実装したいデザイン
03.png

まずHTMLから

HTML

<div class="wrap01">
    <div class="col01">
        <p>テキストテキストテキスト</p>
    <!-- /col01 --></div>
    <div class="col01">
        <p>テキストテキスト</p>
    <!-- /col01 --></div>
    <div class="col01">
        <p>テキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキスト</p>
    <!-- /col01 --></div>
<!-- /wrap01 --></div>

上のHTMLをflexboxを使って横並びにします。

CSS

.wrap01 {
    display: -webkit-box;
    display: -ms-flexbox;
    display: -webkit-flex;
    display: flex;
    -ms-flex-wrap: wrap;
    -webkit-flex-wrap: wrap;
    flex-wrap: wrap;
}

.col01 {
    padding: 20px;
    width: 320px;
    border: #ccc solid 1px;
    background-color: #ff9900;
}

この時点で下記のレイアウトになります。

01.png

これのテキストを上下中央にするためにflexboxのalign-items: center;を使うのですが、これを親要素にそのまま適用すると下記のようになってしまいます。

CSS

.wrap01 {
    display: -webkit-box;
    display: -ms-flexbox;
    display: -webkit-flex;
    display: flex;
    -ms-flex-wrap: wrap;
    -webkit-flex-wrap: wrap;
    flex-wrap: wrap;
    -webkit-box-align: center;
    -ms-flex-align: center;
    -webkit-align-items: center;
    align-items: center;
}

.col01 {
    padding: 20px;
    width: 320px;
    border: #ccc solid 1px;
    background-color: #ff9900;
}

02.png

実装したいデザインのようにするためには、親要素ではなく子要素にdisplay: flex;align-items: center;を適用させます。

CSS

.wrap01 {
    display: -webkit-box;
    display: -ms-flexbox;
    display: -webkit-flex;
    display: flex;
    -ms-flex-wrap: wrap;
    -webkit-flex-wrap: wrap;
    flex-wrap: wrap;
}

.col01 {
    display: -webkit-box;
    display: -ms-flexbox;
    display: -webkit-flex;
    display: flex;
    -webkit-box-align: center;
    -ms-flex-align: center;
    -webkit-align-items: center;
    align-items: center;
    padding: 20px;
    width: 320px;
    border: #ccc solid 1px;
    background-color: #ff9900;
}

そうすると実装したいデザインのようになります。

03.png

flexboxを使うとレスポンシブサイトなどで簡単にレイアウトの変更が出来ると思うので、積極的に使っていきたいですね。

58
60
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
58
60