画像を丸く切り抜く方法|CSS

画像を丸く切り抜く方法|CSS
この記事は約5分で読めます。
広告

TwitterやInstagramのプロフィール画像でよく見る丸く切り抜かれた画像を実装するCSSのご紹介です。
やりかたは2種類あり、自分は2つ目が好みでよく使用しています。
1つめは、下記のみたいにHTMLでimgタグで画像を表示し周りを切る方法。

HTMLのimg要素で画像を配置する場合

HTMLで画像を配置する場合は、親要素となるdivの高さと幅を決めておき、border-radiusを50%で設定すると丸くなります。
最後にoverflow:hiddenではみ出た箇所を非表示にします。
高さと幅が同じサイズでないと楕円になってしまいます。
例えば幅を%で指定してあると、高さを幅と一緒にするには、javascriptが必要になってきます。

【HTML】
<div id="circle-img">
  <img src="img.jpg" alt="円形画像" />
</div>
【CSS】
#circle-img {
  position: relative;
  width: 200px;
  height: 200px;
  border-radius: 50%;
  overflow:hidden;
}
#circle-img img {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  -webkit-transform: translate(-50%, -50%);
  width: auto;
  height: 100%;
}
Demo

See the Pen
円形画像
by endebataro (@endebataro)
on CodePen.

CSSのバックグラウンドに画像を指定する場合

こちらの記述のほうが断然シンプルでキレイに書けます。
こちらも高さと幅のサイズが一緒でないと楕円になってしまします。

【HTML】
<div id="circle-img"></div>
【CSS】
#circle-img {
  width: 200px;
  height: 200px;
  border-radius: 50%;
  overflow:hidden;
  background:url(https://hajimete.org/wp-content/uploads/2019/07/imggg.jpg);
  background-position: center;
  background-size: auto 100%;
}
Demo

See the Pen
CSSのbackgroundで円形画像
by endebataro (@endebataro)
on CodePen.

幅を%指定した時に、画像を丸く切り抜く方法

どうしてもピクセル指定ができない時、jQueryで幅を取得して高さに代入する方法です。
HTMLは「2」と変わらずですが、CSSは幅を70%に指定し、高さをautoにしています。
そこにjQueryを利用して高さを代入しています。

【HTML】
<div id="circle-img"></div>
【CSS】
#circle-img {
  width: 70%;
  height: auto;
  border-radius: 50%;
  overflow:hidden;
  background:url(https://hajimete.org/wp-content/uploads/2019/07/imggg.jpg);
  background-position: center;
  background-size: auto 100%;
}
【jQuery】
$(function() {
  var div = $("#circle-img");
  var width = div.width();
  div.css({height: width});
});
Demo

See the Pen
幅を%指定した時に、画像を丸く切り抜く方法
by endebataro (@endebataro)
on CodePen.

幅を%指定した時に、画像を丸く切り抜く方法(ウィンドウサイズの可変対応)

上のソースだと、読み込み時のウィンドウサイズをもとに高さを代入しているので、ウィンドウサイズが変更された時に対処できません。
なので、読み込み時とウィンドウサイズ変更後に幅を取得し高さに代入したいと思います。

【HTML】
<div id="circle-img"></div>
【CSS】
#circle-img {
  width: 70%;
  height: auto;
  border-radius: 50%;
  overflow:hidden;
  background:url(https://hajimete.org/wp-content/uploads/2019/07/imggg.jpg);
  background-position: center;
  background-size: auto 100%;
}
【jQuery】
$(function() {
  imgheight();
});
$(window).on("resize", imgheight());

function imgheight() {
  var div = $("#circle-img");
  var width = div.width();
  div.css({height: width});
}
Demo

See the Pen
幅を%指定した時に、画像を丸く切り抜く方法(ウィンドウサイズの可変対応)
by endebataro (@endebataro)
on CodePen.

エンデ・バタローをフォローする
CSS

埼玉県北本市に越してきて2年と少しになります。以前は東京都の京王線沿線に、その前は神戸の三宮、さらにその前は名古屋の八事霊園近くに住んでいました。

怖い話が大好きで、ネット怪談、ホラー小説、心霊Youtuber(オウマガドキch、ゾゾゾ)を寝る前のお供にしてます。

フロントエンドエンジニアとして9年目のキャリアを積んでおり、figma、Illustrator、Photoshop、WordPress、HTML、CSS(scss)、JavaScript(jQuery)、PHPなど使って日々仕事をしています。

仕事で検索する手間を省くためフロントエンド技術に関するブログを書いています。

エンデ・バタローをフォローする
広告
初めてのブログ

コメント

タイトルとURLをコピーしました