[CSS] レスポンシブな画像と吹き出しのレイアウト
やりたいこと
- インタビュー記事のページなどで、画像と吹き出しを組み合わせたレイアウトをしているサイトがあります
- コメントを吹き出しで囲って配置すると、単純にテキストを並べるよりもコミカルな印象を与えることができます
- 今回はモバイル表示も考慮して、モバイル以外では画像と吹き出しを横並びに、モバイルでは画像と吹き出しを縦並びにするレイアウトを作成してみました
サンプルコード
html
<div class="speech_balloon">
<div class="speech_balloon_image">
<img src="./images/">
</div>
<div class="speech_balloon_text">
<p>だが断る</p>
</div>
</div>
CSS
.speech_balloon_text {
position: relative;
padding: 30px;
margin: 30px 0px 0px;
border: 1px solid #3388dd;
background-color: #fff;
}
.speech_balloon_text::before {
position: absolute;
top: -16px;
left: 50%;
transform: translateX(-50%) rotate(45deg);
width: 30px;
height: 30px;
background-color: #fff;
border-top: 1px solid #3388dd;
border-left: 1px solid #3388dd;
content: "";
}
@media print, (min-width: 992px) {
.speech_balloon {
display: flex;
}
.speech_balloon_image {
width: 50%;
}
.speech_balloon_text {
width: calc(50% - 30px);
margin: 0px 0px 0px 30px;
}
.speech_balloon_text::before {
transform: translateY(-50%) rotate(-45deg);
top: 50%;
left: -16px;
}
}
仕組み、解説、補足など
- 吹き出しのいわゆる「しっぽ」の部分は、メディアクエリでモバイルとモバイル以外で位置を変えています
ご質問など受け付けています
記事の中でわかりにくかったところ、もっと知りたかったこと、間違っていることなど、何でもお気軽にご連絡ください。
ご連絡は下記フォームを利用いただくか、ツイッターアカウント@flat8migi宛てでもOKです。