《 11:22 公開/更新》
四角い画像をウェブ上で丸く表示したいとき、画像を切り抜く境界部分をグラデーションでぼかして表示させたいこともあるでしょう。CSS3には円形グラデーションを指定する「radial-gradient」という書き方があるので、これを使えば画像を丸く切り抜いた上で、グラデーションを使って少しずつ透明(または白色)にしていくような描画も、わざわざ画像を加工しなくてもHTMLとスタイルシートで実現できます。
四角い画像をウェブ上で丸く表示したいとき、画像を切り抜く境界部分をグラデーションでぼかして表示させたいこともあるでしょう。
画像を丸く切り抜いた上で、グラデーションを使って少しずつ透明(または白色)にしていくような描画も、わざわざ画像を加工しなくてもHTMLとスタイルシートで実現できます。
CSS3には円形グラデーションを指定する「radial-gradient」という書き方があるので、これを使います。「radial-gradient」は、IEではIE10以降でサポートされました。それ以外の代表的なブラウザではそこそこ昔から対応しています。(Firefox16、Chrome26、Safari6.1、Opera12.1以降でベンダープレフィックスなしで使えます。)
下記は、元の画像と、画像の周囲をグラデーションでぼかしつつ丸く表示させた例です。
どの位置からどの位置までをグラデーションにするかは、CSSで自由に設定できます。
上記のように表示するHTML+CSSの記述方法を下記に紹介します。
まず、HTMLソースは以下のように記述しておきます。
div要素を二重に重ねています。
HTMLソース
<div class="sample gradate-image-round"> <div class="mask">画像の周囲をぼかしながら丸くくり抜く</div> </div>
上記のHTMLに対して、以下のCSSを適用します。
CSSソース
.gradate-image-round { background-image: url("summerriver.jpg"); width: 250px; height: 113px; background-size: cover; background-repeat: no-repeat; } .gradate-image-round .mask { background-image: radial-gradient(ellipse , transparent 60%, white 72% ); width: 250px; height: 113px; }
まず、外側のdiv要素に対しては以下の5つのプロパティを使って、対象の画像を「背景画像」として表示しています。
次に、内側のdiv要素に対しては、円形グラデーションを使って「ボックスの背景色」を透明色から白色へと変化するよう記述しています。
radial-gradient(……);
」を指定することで、円形グラデーションが描かれます。ここでの記述内容は以下の通りです。
ellipse
」は、楕円形に表示する指定です。transparent 60%, white 72%
」は、60%の位置までは透明(transparent)で、そこからグラデーションを開始して、72%の位置で白色(white)にする、という指定です。(つまり、グラデーションを使ってぼかす範囲は12%)上記のようにすることで、対象画像の中心から外側へ楕円形に向かっていく過程で、55%の位置から72%の位置までの領域で、透明色から白色へとグラデーションで表示されるようになります。
先の例では、「完全な透明色」から「不透明な白色」へのグラデーション位置として、中心から外側へ向かって60%の位置からグラデーションを開始し、72%の位置でグラデーションを終えるように記述しました。
この数値(パーセント)を様々に変化させることで、画像を丸くくり抜く分量と、少しずつ薄くしていく効果の分量を調整できます。
例えば以下のA~Cように。
Aは、冒頭で紹介した例です。グラデーションの指定部分を再掲すると、以下の通りです。
background-image: radial-gradient(ellipse , transparent 60%, white 72% );
Bは、グラデーションの開始位置を少し早めて55%にした例です。
background-image: radial-gradient(ellipse , transparent 55%, white 72% );
Cは、グラデーションの開始位置を少し早めて45%にした例です。
background-image: radial-gradient(ellipse , transparent 45%, white 72% );
このように、自由にぼかす範囲を指定して画像を切り抜くことができます。
というわけで、画像の周囲をグラデーションでぼかしながら丸くくり抜く方法でした。
■関連記事:
()
▼当サイト内外で関連しそうな記事などが自動表示されています。(たぶん)