【CSS】border-radiusを使った表現方法とは?指定が効かない原因と対処法も解説
CSSのborder-radiusプロパティを使うことで、要素の角を丸くすることができます。
Webサイトで、角丸のアイコンや画像などを見たことがありますよね。
実はborder-radiusプロパティは、単純な角丸以外にも、様々な形を作ることができます。
今回は、CSSのborder-radiusプロパティの多様な使い方を知りたいという方のために、
- border-radiusとは
- border-radiusの応用について
- border-radiusが効かない原因とは
以上の項目に沿って、解説していきますね。
この記事を読めば、CSSのborder-radiusプロパティを使って、様々な角丸を作成することができるようになりますよ。
ぜひ最後まで読んでくださいね!
border-radiusとは?
border-radiusは、要素の角を丸めることができるプロパティです。
「border」とついていますが、枠線の指定がなくても、問題なく使用可能です。
要素に背景色がついていたり、img要素のように画像であったりした場合にも、指定通りに角が丸くなるのでとても使いやすいですね。
基本的な指定方法を解説していきましょう。
すべての角を丸くする
まずは、すべての角を等しく丸くする方法を紹介します。
4つの角を同じように丸める場合は、「border-radius:15px」というように指定します。
具体的にコードを書いてみますね。
<div class="sample01">すべての角を丸く</div>
CSSは以下のように記述します。
.sample01 {
width: 400px;
height: 150px;
background-color: blue;
border-radius: 15px;
line-height: 150px;
color: #fff;
text-align: center;
}
わかりやすいように要素の背景色を青くして、文字を白くしています。
要素の角が丸くなっているのが確認できたでしょうか?
border-radiusの値を大きくすると、角の丸みも大きくなります。
単位は、px以外に、em、rem、%、vw、vhなども指定ができます。
「border-radius: 50%」と指定することで円を作成できますね。縦横の長さを等しくすれば、正円になります。
各頂点で指定を変える
border-radiusに1つだけ値を指定するとすべての角が丸くなりますが、この角丸は個別に指定することが可能です。
div {
border-top-left-radius: 10px; /* 左上 */
border-top-right-radius: 5px; /* 右上 */
border-bottom-right-radius: 30px; /* 右下 */
border-bottom-left-radius: 20px; /* 左下 */
}
上記のように別々のプロパティを使って指定することができるほか、border-radiusのみを使い、値を複数用意することでも、異なる角丸の指定ができます。
値の数によって、指定する箇所が異なるので注意が必要です。
div {
border-radius: 10px 15px; /* 『左上と右下』『右上と左下』 */
border-radius: 5px 10px 8px; /* 『左上』 『右上と左下』『右下』 */
border-radius: 5px 3px 0 4px; /* 『左上』 『右上』『右下』『左下』 */
}
border-radiusの値は、例えば10pxを指定した場合には、半径が10pxの円弧を使って角丸の形を作成していることになります。
値の間に「/(スラッシュ)」を入れて指定すると、楕円の円弧を使って作成することができます。
div {
border-radius: 10px / 20px; /* 『楕円の横の半径』/ 『楕円の縦の半径』 */
}
この場合も同じように、4つの角丸をそれぞれ別の値にすることが可能です。
間にスラッシュを入れて、どちらも「左上、右上、右下、左下」の順で指定します。
div {
border-radius: 10px 30px 20px 40px / 5px 10px 15px 20px;
}
上記の指定は、個別のプロパティで記述すると以下のようになります。
div {
border-top-left-radius: 10px 5px;
border-top-right-radius: 30px 10px;
border-bottom-right-radius: 20px 15px;
border-bottom-left-radius: 40px 20px;
}
border-radiusが効かない原因と対処法
要素にCSSのborder-radiusを指定しているはずなのに、期待通りに表示されない、なんてことがあるかと思います。
そもそも、CSSの文法を間違えている場合がありますが、そうでないときには、何が原因なのでしょうか?
多くの場合、親要素と子要素の関係でborder-radiusが適用されなくなっています。
下記のように、子要素が画像であるときに、親要素にのみborder-radiusを指定しても、子要素の画像の角は丸くなりません。
<div class="parent">
<img src="photo.png" class="child">
</div>
ここでは、画像の角も同様に丸くなる方法を2つ紹介します。
画像にもborder-radiusを指定する
子要素の画像にも同じ指定を行えば、画像の角が丸くなります。
.parent {
width: 200px;
height: 200px;
border-radius: 15px;
}
.child {
width: 100%;
height: 100%;
border-radius: 15px;
}
簡単ですが、同じ指定を2回書くことになります。
修正が必要になった際にも、2か所修正が必要となり、ミスを誘発するため、あまり好ましくないでしょう。
「overflow: hidden」を指定する
2つ目は、overflow: hiddenを使う方法です。
.parent {
width: 200px;
height: 200px;
border-radius: 15px;
overflow: hidden;
}
.child {
width: 100%;
height: 100%;
}
画像の角を丸くするのではなく、親要素からはみ出た部分を隠すことで角丸に見せています。
この方法であれば、角丸の修正も1か所で済みますね。
様々な形を表現!サンプルコードを紹介
ここまで、CSSのborder-radiusを指定する方法を一通り紹介してきました。
これらを使ったデザイン例を2つ紹介しましょう。
四つ葉のクローバー
4つの要素に角丸を実装して、四つ葉のクローバーのような形を作成します。
<div class="clover">
<a class="leaf01" href="#">お知らせ</a>
<a class="leaf02" href="#">サービス概要</a>
<a class="leaf03" href="#">最新記事</a>
<a class="leaf04" href="#">お問い合わせ</a>
</div>
CSSは以下のように記述します。
.clover {
display: flex;
flex-wrap: wrap;
width: 300px;
margin: 20px auto;
}
.clover a {
width: 120px;
height: 120px;
margin: 5px;
color: #fff;
text-decoration: none;
text-align: center;
line-height: 120px;
}
.leaf01 {
border-radius: 50% 50% 0 50%;
background: #ff7f7f;
}
.leaf02 {
border-radius: 50% 50% 50% 0;
background: #7fbfff;
}
.leaf03 {
border-radius: 50% 0 50% 50%;
background: #66cc66;
}
.leaf04 {
border-radius: 0 50% 50% 50%;
background: #bf7fff;
}
4つの要素の角丸の指定を変えて、それぞれ四つ葉の葉に見立てています。
可愛らしいデザインを付け足したいときなどに利用できますね。
形の違う要素を重ねる
続いて、形の異なる要素を重ね、ポップなデザインを作成します。
<div class="popcircle">
<p>メニュー</p>
<div class="circle01"></div>
<div class="circle02"></div>
<div class="circle03"></div>
</div>
CSSは以下のように記述します。
.popcircle {
position: relative;
}
.popcircle p{
position: absolute;
top: 0;
width: 120px;
margin: 0;
color: #fff;
font-weight: bold;
text-align: center;
line-height: 120px;
z-index: 1;
}
.circle01, .circle02 {
width: 120px;
height: 120px;
}
.circle01 {
position: absolute;
top: 10px;
left: 10px;
opacity: 0.6;
background: #ffd700;
border-radius: 30% 40% 50% 40%/30% 50% 40% 50%;
}
.circle02 {
position: absolute;
top: 0;
opacity: 0.8;
background: #ff7f50;
border-radius: 50% 60% 50% 70%/50% 50% 70% 60%;
}
何かアクセントをつけたいけれど、画像を使うほどではない、といった場所などにCSSのみで使用できるので便利です。
形や色などをアレンジしてみてくださいね。
まとめ:画像を使わずに様々な表現ができる
今回は、CSSのborder-radiusプロパティを用いて、角丸を指定する方法を解説してきました。
4つの角は別々に指定できることも説明しましたね。
この方法で、画像を使わなくとも、複雑な形状を作成することができるようになります。
サンプルコードなどを参考にして、様々なデザインを作成してみてくださいね。
今回の記事が参考になれば幸いです。