1.完成イメージとデモ
完成イメージ
左がPC、右がスマホです。
デモ
2.HTML実装
<div class="column">
<div class="column-img">
<img src="./img1.jpg" alt="">
</div>
<div class="column-texts">
<h2 class="column-texts-title">タイトルが入ります。</h2>
<p class="column-texts-p">説明文が入ります。説明文が入ります。説明文が入ります。説明文が入ります。説明文が入ります。説明文が入ります。説明文が入ります。説明文が入ります。説明文が入ります。説明文が入ります。説明文が入ります。説明文が入ります。説明文が入ります。説明文が入ります。説明文が入ります。</p>
<div class="column-texts-link">
<a href="#">もっと見る</a>
</div>
</div>
</div>
<div class="column column--reserve">
<div class="column-texts">
<h2 class="column-texts-title">タイトルが入ります。</h2>
<p class="column-texts-p">説明文が入ります。説明文が入ります。説明文が入ります。説明文が入ります。説明文が入ります。説明文が入ります。説明文が入ります。説明文が入ります。説明文が入ります。説明文が入ります。説明文が入ります。説明文が入ります。説明文が入ります。説明文が入ります。説明文が入ります。説明文が入ります。説明文が入ります。説明文が入ります。説明文が入ります。説明文が入ります。説明文が入ります。説明文が入ります。説明文が入ります。説明文が入ります。</p>
<div class="column-texts-link">
<a href="#">もっと見る</a>
</div>
</div>
<div class="column-img">
<img src="./img2.jpg" alt="">
</div>
</div>
1つ目と2つ目で画像とテキストの順序を逆にしたいので、textsとimgの順序を変えましょう。スマホ時に2つ目のカラムだけ表示順を変えるため class="column--reserve" を追加しています。
3.CSS実装(PC編)
.column {
display: flex;
justify-content: space-between;
margin-top: 40px;
margin-right: 40px;
margin-bottom: 40px;
margin-left: 40px;
background: #D1E1E8;
}
.column-img {
width: 40%;
}
.column-img img {
width: 100%;
}
.column-texts {
box-sizing: border-box;
padding-top: 40px;
padding-right: 30px;
padding-bottom: 40px;
padding-left: 30px;
width: 60%;
}
.column-texts-title {
margin: 0;
font-size: 32px;
}
.column-texts-p {
margin: 0;
padding-top: 20px;
font-size: 22px;
line-height: 1.4;
}
.column-texts-link {
padding-top: 30px;
}
.column-texts-link a {
border: 1px solid #000;
padding-top: 12px;
padding-right: 40px;
padding-bottom: 12px;
padding-left: 40px;
font-size: 20px;
text-decoration: none;
color: #000;
}
display: flex; で画像とテキストを左右配置にします。
画像要素(.column-img)とテキスト要素(.column-texts)のwidthを%指定にすることでブラウザサイズに合わせた比率でエリアが確保されるようになります。pxにしてしまうと隙間が出たり要素が飛び出してしまうので気をつけてください。
画像(.column-img img)にwidth: 100%を指定しているのも同じ理由です。
レスポンシブ実装は%を扱うことが多いので慣れましょう。
4.CSS実装(スマホ編)
@media screen and (max-width: 767px) {
.column {
flex-direction: column;
}
.column--reserve {
flex-direction: column-reverse;
}
.column-img {
width: 100%;
}
.column-texts {
width: 100%;
}
.column-texts-title {
font-size: 26px;
}
.column-texts-p {
font-size: 16px;
}
.column-texts-link a {
font-size: 16px;
}
}
.column に flex-direction: column を指定して縦並びにします。
画像要素(.column-img)とテキスト要素(.column-texts)がPCで指定した時の比率になってしまうため100%に変更します。
2つ目の要素は画像とテキストを逆にしたいので flex-direction: column-reverse; を指定します。
以上で実装は終わりです。