border-radius - 要素の枠線を丸める
投稿日: / 更新日:
スタイルシートのborder-radius
は、要素の形状を、まとめて調整するためのプロパティです。俗に言う「角丸」を実現することができます。
サンプルコード
border-radius
を指定するサンプルコードです。
div {
border-radius: 50% ;
}
デモ
border-radius
を指定した例です。要素の、上下左右、4つの角が丸まっているのを確認して下さい。CSSタブで値を編集するとどうなるのか、試してみて下さいね。
値の指定
基本的に値に、要素の「左上」「右上」「右下」「左下」の順に、スペースで区切って4つの値を指定します。これらの値は、各角からのオフセット値(距離)です。例えば、50% 20% 30% 40%
と指定すれば、左上に50%
、右上に20%
、右下に30%
、左下に40%
の値が適用されます。上(12時)から右回りになる時計と同じです。真上というわけにはいきませんが、左上から時計回りになることをイメージして下さい。左上がスタートです。
応用として、2つの値を指定すると1つ目の値が「左上」と「右下」、2つ目の値が「右上」と「左下」と、クロスの形になるように適用されます。英語の「X」を描くように、左上から斬って、右上から斬るイメージです。また、1つの値を指定すると、全ての角に適用されます。
/* 基本は4つの値を指定する */
/* [1]左上 → [2]右上 → [3]右下 → [4]左下 */
#element {
border-radius: 50% 20% 30% 40% ;
}
/* 2つの値を指定すると「左上」と「右下」、「右上」と「左下」に適用される */
/* [1]左上と右下 → [2]右上と左下 */
#element {
border-radius: 50% 20% ;
}
/* 1つの値を指定すると全ての角に適用される */
/* [1]全ての角 */
#element {
border-radius: 50% ;
}
さて、基本的にこれまでの説明は、水平方向と垂直方向の値を、同じ値としてまとめて指定するものでした。水平方向と垂直方向の値を分けたい場合は、「水平方向」と「垂直方向」をスラッシュ(/
)で区切って、合計で8つの値を指定します。例えば、50% 20% 30% 40% / 80% 70% 60% 50%
と指定した場合、次のように各値が適用されます。
角の位置 | 垂直方向 | 垂直方向 |
---|---|---|
左上 | 50% | 80% |
右上 | 20% | 70% |
右下 | 30% | 60% |
左下 | 40% | 50% |
水平方向と垂直方向の指定はそれぞれ、先ほど説明した応用方法に従って「4つの値」「2つの値」「1つの値」のいずれかで指定することができます。
/* 基本は4つの値を指定する */
/* [1]左上 → [2]右上 → [3]右下 → [4]左下 */
#element {
border-radius: 50% 20% 30% 40% / 80% 70% 60% 50% ;
}
/* 2つの値を指定すると「左上」と「右下」、「右上」と「左下」に適用される */
/* [1]左上と右下 → [2]右上と左下 */
#element {
border-radius: 50% 20% / 80% 70% ;
}
/* 1つの値を指定すると全ての角に適用される */
/* [1]全ての角 */
#element {
border-radius: 50% / 80% ;
}
各値に指定方法は、下記の通りです。
項目 | 説明 |
---|---|
inherit | 親要素の値を引き継ぐ。例の場合、div 要素のborder-radius には、body に指定された値(50% 20% 30% 40% / 80% 70% 60% 50% )が引き継がれる。 |
initial | プロパティの初期値が適用される。この場合、角は丸まらない。 |
percentage | パーセンテージで指定すると、水平方向の場合は要素の横幅、垂直方向の場合は要素の高さに対した割合が適用される。 |
length | CSSで許可された方法で、サイズの指定ができます。(単位の一覧) |
仕組み
さて、指定した各値(オフセット値)や、水平方向、垂直方向といった言葉は一体、何を表しているのでしょうか?border-radius
を指定することによって、角丸がどのようにできるのか、その仕組みを解説します。理解しておくと、自在に角丸を作れるようになるでしょう。ここでは、右上の角を例にとります。右上の角に、水平方向が60px
、垂直方向が80px
という指定があった場合です。
順序 | 説明 |
---|---|
円の中心が決まる | 指定した値によって、角丸を構成するための円の中心点の位置が決まります。例では水平方向に60px 、垂直方向に80px を指定したので、要素の右から60px、上から80px離れた位置(オフセット位置)に、円の中心点が設定されます。 |
円が作成される | 水平方向、垂直方向に指定した長さが、そのまま、円の水平方向の半径、円の垂直方向の半径になります。つまり、水平方向に60px 、垂直方向に80px を指定した場合、水平方向に半径60px、垂直方向に半径80pxのサイズの円が、先ほどの中心点を基準として作成されます。 |
円に沿って丸まる | そして、円の形に沿って要素の右上が丸まります。このようにして、指定した値が角丸を形作っているんです。 |
ブラウザのサポート
2016年7月現在の、ブラウザのサポート状況は次の通りです。
Chrome
●
4+
2010年3月
Firefox
●
3+
2008年6月
Safari
●
3.1+
2008年3月
Ie
●
9+
2011年3月
Edge
●
12+
2015年3月
Opera
●
10.5+
2010年3月
Safari(iOS)
●
3.2+
2009年6月
Ie Mobile
●
10+
2012年6月
Chrome
●
47+
2015年12月
Android
●
2.1+
2010年1月
FF Mobile
●
44+
2016年1月
Opera Mobile
●
11+
2011年3月