やりたいこと

例えばブログカードなどで以下のようなデザインを作りたいとします。
flex で横ならびにするために「見出し(h2)」と「抜粋文(p)」を .txt-wrap で囲っていますが、スマホでは h2 を画像の上に配置したい。

PCでのレイアウト
SPでのレイアウト

実装方法

横並びにするために設置した .txt-wrap を無効化させるために display:contents; を設定します。
この特性を活かせば色々と使えそうです。

<article>
  <img src="img/sample.jpg">
  <div class="txt-wrap"> <!-- ←これが邪魔なので存在を消したい -->
    <h2>見出し</h2>
    <p>ここに抜粋文が入ります。ここに抜粋文が入ります。ここに抜粋文が入ります。ここに抜粋文が入ります。</p>
  <div>
</article>
article {
    display:flex;
}

@media not all and (min-width: 768px) {
  article {
      flex-direction: column;//縦並びにするために指定。
  }
  h2 {
      order:1;//順序を変更するために指定。
  }
  .txt-wrap {
      display:contents;//div要素を無効化させる。
  }
}

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です