【CSS】border-radiusを使った表現方法とは?指定が効かない原因と対処法も解説

公開日: 2021.12.13
更新日: 2024.01.03
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つの角は別々に指定できることも説明しましたね。

この方法で、画像を使わなくとも、複雑な形状を作成することができるようになります。

サンプルコードなどを参考にして、様々なデザインを作成してみてくださいね。

今回の記事が参考になれば幸いです。

関連記事

資料請求

  • 短期集中で最速エンジニア転職を実現-転職成功者インタビュー一覧

    DMM WEBCAMPでは転職成功率98%を実現しています。本資料では、元警察官や元ラーメン屋など様々なバックグラウンドを持つ卒業生の声をお届けします。

    資料をダウンロードする
  • IT技術がもたらす3つの変化と身につけるべきスキル

    IT技術の発展により、今後10~20年程度で47%の仕事がなくなると言われています。どのような変化が訪れ、私達はどのようなスキルを身につけるべきかを解説します。

    資料をダウンロードする
  • 未経験がフリーランスエンジニアになる方法-年収アップで自由な働き方を手に入れる

    働き方改革やリモートワークの影響でフリーランスという働き方の人気は高まりつつあります。フリーランスエンジニアとして活躍するために必要な情報をお届けします。

    資料をダウンロードする

© 2024 WEBCAMP MEDIA Powered by AFFINGER5