これは実務でも非常によくありますが、まずはこちらのレイアウトを見て下さい。
See the Pen
テキストと横並びの画像だけ親要素を超えて画面端いっぱいに広げる(元) by junpei (@junpei-sugiyama)
on CodePen.
これは画像とテキストが横並びになっているレイアウトで、以下のように画像とテキストが交差していくつか並ぶことが多いです。
See the Pen
テキストと横並びの画像だけ親要素を超えて画面端いっぱいに広げる(元) by junpei (@junpei-sugiyama)
on CodePen.
そして今回は、この画像だけ画面の端に広げる方法を解説します。
(有料になっていたらすいません🙇♂️)
テキストと横並びの画像だけ親要素を超えて画面端いっぱいに広げる方法
画像だけ横幅いっぱいにする方法ですが、テキストの幅を固定する方法と、固定しない方法をご紹介します。
まず基本となるHTMLはこちらです。
<section>
<div class="inner">
<div class="box box01">
<div class="image">
<img src="画像パス" alt="" />
</div>
<div class="text">テキストが入ります。</div>
</div>
<div class="box box02">
<div class="image">
<img src="画像パス" alt="" />
</div>
<div class="text">テキストが入ります。</div>
</div>
</div>
</section>
今回はboxが2つしかないので、.box01
や.box02
というclass名を付けていますが、 たくさんある場合は奇数や偶数の要素を指定した方がCSSは書きやすいかと思います。
【CSS】何番目系の要素を指定する方法まとめ【サンプル付きで解説】
続きを見る
そして基本となるCSSはこちら。
.inner {
margin-inline: auto;
max-width: 500px;
width: 100%;
}
.box {
display: flex;
margin-top: 20px;
}
.box02 {
flex-direction: row-reverse;
}
.box01 .text {
margin-left: 20px;
}
.box02 .text {
margin-right: 20px;
}
.image {
flex-shrink: 0;
width: 50%;
}
.text {
line-height: 1.5;
width: 50%;
}
img {
display: block;
width: 100%;
}
これはレイアウトのためのCSSなので特筆するものはありませんが、1つだけ補足すると、flex-shrink: 0;
は画像が潰れないようにするために書いています。
これに関しては、以下の記事で解説しています。
【CSS】Flexboxで画像や要素が小さく潰れる(縮む)時の対処方法
続きを見る
テキストの幅を固定する場合
まずは、テキストの幅を固定する場合です。
追記・削除するCSSはこちらです。
.box01 {
margin-left: calc(50% - 50vw);
}
.box02 {
margin-right: calc(50% - 50vw);
}
.image {
/* width: 50%; */
width: 50vw;
}
デモはこちら。
See the Pen
Untitled by junpei (@junpei-sugiyama)
on CodePen.
ここで見る分にはいいサイズ感ですが、右上の『EDIT ON CODEPEN』をクリックしてパソコン全体で見ると、画像がかなり大きくなってしまいます。
インナー幅が最大500pxしかないので、これは仕方ありません。
テキストの幅を固定しない場合
今度は、テキストの幅を固定しない方法です。
というのも、先ほどはテキストの幅を固定したので、画面幅を広げると画像だけが非常に大きくなってしまいました。
もし、テキストの幅も大きくなっていいのなら、.image
のflex-shrink
を削除しましょう。
.image {
flex-shrink: 0; /* 削除 */
}
デモはこちら。
See the Pen
Untitled by junpei (@junpei-sugiyama)
on CodePen.
先ほどより、テキストの幅が少し広くなりました。
それでも全画面で見ると画像はかなり大きくなってしまいますが・・・
まとめ
今回は、テキストと横並びの画像だけ親要素を超えて画面端いっぱいに広げる方法を、2パターン解説しました。
背景色であれば問題ありませんが、画像となると上下が削れたり非常に大きくなったりするので、こういうデザインはあまりやりたくないですね・・・
1つの要素の片側だけ親要素を超えて画面端いっぱいにする方法については、以下の記事を参照下さい。
【CSS】片側だけ親要素を超えて画面幅いっぱいに広げる方法
続きを見る
以上になります。