【初心者でもわかる】CSSだけで要素の順番をPCとスマホで入れ変える方法(レスポンシブ対応)

CSSだけで要素の順番をPCとスマホで入れ変える方法(レスポンシブ対応)

どうも7noteです。レスポンシブサイトを作る時、PCとスマホで要素の順番を入れ替える方法。

レスポンシブサイトを作る時、PCとスマホで要素の順番を変えたい時のCSSの書き方について記述していきます。
flexbox(フレックスボックス)を使って、順番を変更する方法です。

PCデザイン


スマホデザイン


コーディング例

index.html
<h2>■レスポンシブデザインとは</h2>
<ul>
    <li class="reverse">
        <div class="text">
            <h3>point1</h3>
            <p>PCとスマホ両方に対応。<br>
            1つのHTMLファイルで済む。</p>
        </div>
        <img src="point1.jpg" alt="point1">
    </li>
    <li>
        <div class="text">
            <h3>point2</h3>
            <p>CSSファイルでメディアクエリを使い、
            cssを書き分けることができる。</p>
        </div>
        <img src="point2.jpg" alt="point2">
    </li>
</ul>
style.css
/* 共通CSS(主にスマホ用) */
body {
    background: #9afeff; /*背景色に青を指定*/
}

h2 {
    font-size: 20px; /*フォントサイズを指定*/
}
ul {
    margin: 0; /*ブラウザのCSSを無効化*/
    padding: 0; /*ブラウザのCSSを無効化*/
}
ul li .text h3 {
    font-size: 16px; /*文字サイズを16pxに指定*/
    font-weight: bold; /*太文字に指定*/
}
ul li .text p {
    font-size: 14px; /*フォントサイズを14pxに指定*/
}
ul li img {
    width: 100%; /*画像を幅いっぱいにする*/
}

    /* PC用CSS */
@media screen and (min-width:750px) {

    h2 {
    }
    ul {
        width: 500px; /*表示するエリアの幅を指定*/
    }
    ul li {
        display: flex; /*要素を横並びにする*/
    }
    ul .reverse {
        flex-flow: row-reverse; /*.reverseが付いている要素の順番を逆順に変える*/
    }
    ul li .text {
        width: 50%; /*テキストの幅を50%に指定*/
        padding-right: 10%; /*画像との距離を取るため10%を右側に指定*/
    }
    ul .reverse .text {
        padding-right: 0; /*右のpaddingを無効化*/
        padding-left: 10%; /*画像との距離を取るため10%を左側に指定*/

    }
    ul li img {
        width: 40%; /*画像の幅を40%に指定*/
    }
}

解説

フレックスボックスのflex-flow: row-reverse;を使うことで、並び順を逆順に変えることができます。

「1・2・3・4・5」と要素があれば、flex-flow: row-reverse;を指定することで
「5・4・3・2・1」という順番になります。

これでスマホとPCで要素の順番を変えることで、それぞれのデザインに合わせたCSSを書くことができます。

まとめ

flex-flowを使うには、必ずdisplay: flex;を指定してください。
レスポンシブサイトへの対応は必要な場面が多くあるので、覚えておきたい技術です。

おそまつ!