CSS3:align-itemsのendとflex-endとbaselineの使い分け


こんばんは。
web制作会社就職を目指している、twitter上の「#駆け出しエンジニアとつながりたい」でおなじみの駆け出しエンジニアのひとりです。アウトプットが大事ということで、コード書く以外のアウトプット方法としてqiitaを始めてみます。間違ったこと書いていたらガッツリ怒ってください。

今回は、フレックスボックス内での子要素の下揃えで少し迷ったので、私と同じような初心者のために書いてみようと思います。
フレックスボックス内で使用するalign-itemsのflex-endとendとbaselineって似たようなイメージないですか?
調べたら全然違いました。

htmlとsassは以下の通りです。

    <!--html-->
    <div class="inner1">
        <div class="item1">1</div>
        <div class="item2">2</div>
        <div class="item3">3</div>
    </div>

    <div class="inner2">
        <div class="item1">1</div>
        <div class="item2">2</div>
        <div class="item3">3</div>
    </div>

    //以下sass
    .inner1{
        height: 500px;
        border: solid 1px;
        padding: 10px;
        display: flex;
        text-align: center;
        align-items:baseline;

        .item1{
            background-color:$orange ;

        }

        .item2{

            background-color: $green;
        }

        .item3{
            background-color: $yellow;

        }
    }

flex-end

子要素がdisplay:flex;を指定している親要素の最下部に張り付いた。
これは予想通りの動きでした。

end

動きませんでした。まさかでした。
endのくせに最上部に張り付いたままでした。
ちなみに親要素のdisplay:flex;を削除しても、同様でした。

baseline

横並びになっている子要素の中の文字のベースライン(要素の最下部ではなく文字の最下部)がそろいました。これを使うとフレックスボックスの最下部(ベースライン)に引っ付くイメージを持っていましたが、文字の最下部を揃えるときに使うようです。

結論

フレックスボックス内での下揃えはflex-endを使おう。