ちょっとイメージしにくいかと思うので、早速今回の完成形を見てみましょう。
See the Pen
Untitled by junpei (@junpei-sugiyama)
on CodePen.
テキストが、円形の画像の周りに沿って表示されています。
今回は、これについて解説していきます。
(有料になっていたらすいません🙇♂️)
円形画像に沿ってテキストを回り込ませて表示する方法
まずは、テキストを回り込ませる前の状態から見てみます。
HTMLはこちら。
<div class="container">
<div class="circle-img">
<img src="画像パス" alt="" />
</div>
<p class="text">テキストが入ります。</p>
</div>
CSSはこちら(一部省略)
.container {
border: 1px solid #333;
max-width: 400px;
padding: 20px;
width: 100%;
}
.circle-img {
width: 200px;
}
img {
display: block;
width: 100%;
}
特に解説するところはありません。
デモはこちら。
See the Pen
円形画像に沿ってテキストを回り込ませて表示② by junpei (@junpei-sugiyama)
on CodePen.
HTMLの並び通り、画像→テキストの順に縦並びになっています。
display: flex;はNG
完成形は画像とテキストが横並びのように見えるので、Flexboxを使いたくなるかも知れませんが、そうするとこのようになります。
See the Pen
円形画像に沿ってテキストを回り込ませて表示③ by junpei (@junpei-sugiyama)
on CodePen.
画像が小さく潰れた上に、テキストも回り込めていません。
ちょっと分かりにくいので、画像が小さくなっているのは直してみます。
See the Pen
円形画像に沿ってテキストを回り込ませて表示④ by junpei (@junpei-sugiyama)
on CodePen.
それでも、テキストが回り込めていません。
この、画像が潰れているのを直す方法は、以下の記事を参考にして下さい。
【CSS】Flexboxで画像や要素が小さく潰れる(縮む)時の対処方法
続きを見る
floatを使って画像にテキストを回り込ませる
画像にテキストを回り込ませるには、float
を使います。
最初のコードに以下を追記するだけです。
.circle-img {
float: left;
}
デモはこちら。
See the Pen
円形画像に沿ってテキストを回り込ませて表示⑤ by junpei (@junpei-sugiyama)
on CodePen.
テキストは回り込みましたが、円形の画像には沿っていません。
このテキストの回り込みについては、以下の記事を参照下さい。
【CSS】floatを使って画像に対してテキストを回り込ませる方法
続きを見る
shape-outsideを使って円形画像に沿ってテキストを回り込み
先ほどはfloat: left;
でテキストの回り込みはできたので、あとは円形画像に沿うにはどうしたらいいかですが、以下のコードを追記します。
.circle-img {
shape-outside: circle(50%);
}
見慣れないプロパティかと思いますが、主要なブラウザでは問題なく使用できます。
https://caniuse.com/?search=shape-outside
デモは冒頭でも載せましたが、こちらになります。
See the Pen
Untitled by junpei (@junpei-sugiyama)
on CodePen.
画像を右する方法
画像を右にする場合は、float: left;
をfloat: right;
にすればOKです。
See the Pen
円形画像に沿ってテキストを回り込ませて表示⑥ by junpei (@junpei-sugiyama)
on CodePen.
画像とテキストに余白を作る方法
画像とテキストの間に余白を作りたい場合は、テキストではなく画像にmargin
を書きます。
.circle-img {
margin-bottom: 30px;
margin-right: 30px;
}
デモはこちらになります。
See the Pen
円形画像に沿ってテキストを回り込ませて表示⑦ by junpei (@junpei-sugiyama)
on CodePen.
まとめ:円形画像に沿ってテキストを回り込ませて表示するにはshape-outsideを使おう
今回は、円形画像に沿ってテキストを回り込ませて表示する方法について解説しました。
コード自体は簡単ですが、ちょっとクセがあるので書き方には注意しましょう。
以上になります。