- CSS
CSS borderの書き方一覧|線の種類10種と角丸border-radius
CSSのborderとは、要素のまわりに枠線を引くプロパティで、「太さ(border-width)・種類(border-style)・色(border-color)」の3つを組み合わせて指定します。 border: 1px solid #333; の1行で四辺に線が引け、border-radius を足すと角を丸くできます。
この記事では、border-style 全10種の見え方の一覧、一括指定・辺ごとの指定・論理プロパティの書き方、border-radius の値の数と角の対応、円・カプセル・吹き出しなどのコピペ用コードをまとめました。さらに「線を足したら幅がずれた」「角丸から画像がはみ出す」「table の線が二重になる」といったつまずきを、Chromium 141(Playwright 1.56)で再現し、測った数値と一緒に直し方を示します。
borderの早見表
書き方の早見表
| やりたいこと | 書き方 |
|---|---|
| 四辺に線を引く | border: 1px solid #333; |
| 下だけに線を引く | border-bottom: 2px solid #06c; |
| 左だけ太い線(見出しの飾り) | border-left: 6px solid #06c; |
| 一辺だけ線を消す | border: 1px solid #333; border-bottom: none; |
| 点線・破線にする | border: 2px dotted #333; / border: 2px dashed #333; |
| 二重線にする | border: 3px double #333;(3px以上) |
| 角を丸くする | border-radius: 8px; |
| 円にする | 正方形に border-radius: 50%; |
| カプセル形(左右が半円)にする | border-radius: 9999px; |
| 上の2つの角だけ丸くする | border-radius: 12px 12px 0 0; |
| 大きさを変えずに線を足す | box-sizing: border-box; または outline |
| table の線を1本にまとめる | border-collapse: collapse; |
border-style 全10種の一覧
| 値 | 見え方 | 幅を取るか | メモ |
|---|---|---|---|
none(初期値) |
線なし | 取らない | table の線の競合では優先度が最も低い |
hidden |
線なし | 取らない | table の線の競合では優先度が最も高い(隣の線も消す) |
dotted |
丸い点線 | 取る | 点の直径は線の太さと同じ |
dashed |
破線(短い線の連続) | 取る | 線と空白の長さはブラウザが決める |
solid |
1本の実線 | 取る | 最もよく使う |
double |
二重線 | 取る | 2本の線+間の空白で、指定した太さになる |
groove |
溝が彫られたような立体線 | 取る | ridge の逆 |
ridge |
盛り上がったような立体線 | 取る | groove の逆 |
inset |
要素がへこんで見える立体線 | 取る | outset の逆 |
outset |
要素が浮き出て見える立体線 | 取る | inset の逆 |
本記事の内容は、ご自由にお使いください。
ご利用の際は、出典として本ページへのリンクを記載いただけますようお願いします。
(記載例)出典:株式会社RJC「CSS borderの書き方一覧|線の種類10種と角丸border-radius」
検証した環境
| 項目 | 内容 |
|---|---|
| ブラウザ | Chromium 141.0.7390.37(Playwright 1.56.0 から起動)、画面 800×600px |
| 測り方 | getComputedStyle() と offsetWidth などで数値を取得。色や形はスクリーンショットの画素を Pillow 12.2 で確認 |
| 仕様の確認 | MDN の border-style のページを開いて、10種の説明と table での優先度を確認 |
| 未実行のもの | Safari・Firefox での表示。点線や破線の間隔はブラウザごとに異なる |
borderの基本:太さ・種類・色の3つ
.box {
border: 1px solid #333;
/* 太さ 種類 色 (順番は自由) */
}
border は次の3つをまとめた一括指定です。
| 個別プロパティ | 役割 | 初期値(実測) | 省略したとき |
|---|---|---|---|
border-width |
太さ | medium(線があるとき3px) |
3pxになる |
border-style |
種類 | none |
線が表示されない |
border-color |
色 | currentColor(文字色と同じ) |
文字色になる |
省略の組み合わせを実際に書いて、適用された値を読み取りました(文字色は rgb(10, 20, 30))。
| 書いた指定 | 適用された値(上辺) | 結果 |
|---|---|---|
border: solid; |
3px solid rgb(10, 20, 30) | 太さ3px・文字色の実線 |
border: 3px red; |
0px none rgb(255, 0, 0) | 線は出ない(style が none のまま) |
border: thin dashed; |
1px dashed rgb(10, 20, 30) | thin は1px |
border: thick double blue; |
5px double rgb(0, 0, 255) | thick は5px |
3つのうち省略できないのは border-style だけです。 「太さと色を書いたのに線が出ない」ときは、種類(solid など)が抜けていないかを確認します。また、border-style が none や hidden のとき、太さの計算値は0pxになります。
色を省略すると文字色になる性質は、ボタンなどで便利に使えます。
.btn-outline {
color: #06c;
border: 1px solid; /* 色を書かない=文字色と同じ */
}
.btn-outline:hover { color: #c00; } /* 文字色を変えるだけで線の色も変わる */
線の種類10種を見比べる表示見本コード
次のHTMLを保存して開くと、10種類の線を「太さ・色違い」の3列で見比べられます。
<!doctype html>
<html lang="ja">
<head>
<meta charset="utf-8">
<style>
.grid { display: grid; grid-template-columns: repeat(3, 160px); gap: 16px; font: 14px/1.5 sans-serif; }
.grid > div { padding: 8px; text-align: center; }
.w2 { border-width: 2px; border-color: #333; }
.w6 { border-width: 6px; border-color: #2a6; }
.w10 { border-width: 10px; border-color: #06c; }
</style>
</head>
<body>
<div class="grid" id="samples"></div>
<script>
const styles = ['none','hidden','dotted','dashed','solid','double','groove','ridge','inset','outset'];
const box = document.getElementById('samples');
for (const s of styles) {
for (const w of ['w2', 'w6', 'w10']) {
const d = document.createElement('div');
d.className = w;
d.style.borderStyle = s;
d.textContent = s + ' / ' + w.slice(1) + 'px';
box.append(d);
}
}
</script>
</body>
</html>
幅100pxの箱に border: 6px ◯◯ #2a6 を指定して offsetWidth を測ると、none と hidden は100px(線の幅0px)、ほかの8種はすべて112px(左右6pxずつ)でした。
doubleは3px以上で二重に見える
double の上辺を縦に1画素ずつ読み取った結果です(# が線、. が空白)。
| border-width | 上から順の画素 | 見え方 |
|---|---|---|
| 1px | # |
1本の実線と同じ |
| 2px | ## |
2pxの実線と同じ |
| 3px | #.# |
1px線+1px空白+1px線の二重線 |
| 6px | ##..## |
2px線+2px空白+2px線 |
| 9px | ###...### |
3px線+3px空白+3px線 |
指定した太さを「線・空白・線」に3等分するので、二重線に見せるには3px以上が必要です。
groove・ridge・inset・outsetは色の濃淡で立体に見せる
#2a6(rgb(34, 170, 102))を指定した6pxの線の色を、画素で確認しました。
| 値 | 上辺の色 | 下辺の色 | 見え方 |
|---|---|---|---|
groove |
外側半分が暗い色、内側半分が指定色 | 内側半分が暗い色、外側半分が指定色 | 線の中央が溝のようにへこむ |
ridge |
外側半分が指定色、内側半分が暗い色 | 内側半分が指定色、外側半分が暗い色 | 線の中央が盛り上がる |
inset |
全体が暗い色(左辺も同じ) | 全体が指定色 | 箱全体がへこんで見える |
outset |
全体が指定色(左辺も同じ) | 全体が暗い色 | 箱全体が浮き出て見える |
暗い色は rgb(17, 86, 51)(指定色の半分の明るさ)でした。黒(#000)を指定した groove でも、Chromium 141 では黒と濃い灰色(rgb(84, 84, 84))に塗り分けられましたが、差が小さく立体感は弱くなります。立体系の4種は、中間の明るさの色を指定するとはっきり見えます。 濃淡の作り方はブラウザごとに少し異なります。
一括指定と上下左右の個別指定
border 系のプロパティは「辺 × 項目」の組み合わせで名前が決まります。
| 対象 | 太さ・種類・色をまとめて | 太さだけ | 種類だけ | 色だけ |
|---|---|---|---|---|
| 四辺 | border |
border-width |
border-style |
border-color |
| 上 | border-top |
border-top-width |
border-top-style |
border-top-color |
| 右 | border-right |
border-right-width |
border-right-style |
border-right-color |
| 下 | border-bottom |
border-bottom-width |
border-bottom-style |
border-bottom-color |
| 左 | border-left |
border-left-width |
border-left-style |
border-left-color |
値を1〜4個書いたときの対応
border-width・border-style・border-color は、margin や padding と同じく値を1〜4個書けます。
| 値の数 | 当たる辺 | 例 |
|---|---|---|
| 1個 | 四辺すべて | border-width: 1px; |
| 2個 | 上下 / 左右 | border-style: solid dashed; |
| 3個 | 上 / 左右 / 下 | border-color: red blue green; |
| 4個 | 上 / 右 / 下 / 左(時計回り) | border-width: 1px 2px 3px 4px; |
3つを同時に使った例で確認しました。
.mix {
border-width: 1px 2px 3px 4px;
border-style: solid dashed;
border-color: red blue green;
}
| 辺 | 適用された値 |
|---|---|
| 上 | 1px solid 赤 |
| 右 | 2px dashed 青 |
| 下 | 3px solid 緑 |
| 左 | 4px dashed 青 |
なお、border 自体には辺ごとの値を書けません(border: 1px 2px solid は無効)。辺ごとに変えたいときは、上の3プロパティか border-top などを使います。
書く順番で結果が変わる
/* 一辺だけ消す:border を先に、消す辺を後に */
.a { border: 2px solid red; border-bottom: none; }
/* 順番が逆だと、後から書いた border が四辺すべてを上書きする */
.b { border-top: 1px solid red; border: 4px dotted blue; }
| クラス | 上 | 右 | 下 | 左 |
|---|---|---|---|---|
.a |
2px solid 赤 | 2px solid 赤 | 0px none | 2px solid 赤 |
.b |
4px dotted 青 | 4px dotted 青 | 4px dotted 青 | 4px dotted 青 |
「全体を先に、例外を後に」書くのが基本です。
論理プロパティ:書字方向に合わせて辺を指定する
border-left は常に「物理的な左」ですが、論理プロパティは文章の向きに合わせて辺が決まります。 右から左へ書く言語や縦書きに対応するページで役立ちます。
| 論理プロパティ | 意味 | 横書き(左→右)での辺 |
|---|---|---|
border-inline-start |
行の始まり側 | 左 |
border-inline-end |
行の終わり側 | 右 |
border-block-start |
ブロックの始まり側 | 上 |
border-block-end |
ブロックの終わり側 | 下 |
border-inline |
行方向の両側 | 左右 |
border-block |
ブロック方向の両側 | 上下 |
同じ指定を3つの書字方向で試しました。
.note {
border-inline-start: 5px solid red;
border-block-end: 2px dashed blue;
}
| 書字方向 | 赤い5pxの線 | 青い2pxの破線 |
|---|---|---|
横書き・左から右(dir="ltr") |
左 | 下 |
横書き・右から左(dir="rtl") |
右 | 下 |
縦書き(writing-mode: vertical-rl) |
上 | 左 |
角丸にも論理プロパティがあります(border-start-start-radius など)。Chromium 141 では CSS.supports('border-start-start-radius', '4px') が true でした。日本語の横書きだけのページでは、従来の border-left などで十分です。
border-radiusで角を丸くする
値の数と角の対応
border-radius は値を1〜4個書けます。左上から時計回りに当たります。
左上 ────── 右上
│ │
│ │
左下 ────── 右下
4値の順番: 左上 → 右上 → 右下 → 左下
適用された各角の値を読み取った結果です。
| 書き方 | 左上 | 右上 | 右下 | 左下 | 覚え方 |
|---|---|---|---|---|---|
20px |
20 | 20 | 20 | 20 | 全部同じ |
20px 40px |
20 | 40 | 20 | 40 | 「左上と右下」/「右上と左下」(対角どうし) |
20px 40px 60px |
20 | 40 | 60 | 40 | 左上 / 右上と左下 / 右下 |
10px 20px 30px 40px |
10 | 20 | 30 | 40 | 時計回りに4つ |
角ごとに指定する個別プロパティもあります。
| 角 | プロパティ |
|---|---|
| 左上 | border-top-left-radius |
| 右上 | border-top-right-radius |
| 右下 | border-bottom-right-radius |
| 左下 | border-bottom-left-radius |
スラッシュ指定:横と縦の半径を分ける
スラッシュの前が横方向の半径、後ろが縦方向の半径です。別々にすると、角が楕円の弧になります。
.ellipse-corner { border-radius: 50px / 20px; }
/* 横50px / 縦20px を四隅すべてに */
.mixed { border-radius: 10px 20px 30px 40px / 5px 10px; }
/* 横:左上10 右上20 右下30 左下40 / 縦:左上と右下5、右上と左下10 */
| 書き方 | 左上(横 縦) | 右上 | 右下 | 左下 |
|---|---|---|---|---|
50px / 20px |
50px 20px | 50px 20px | 50px 20px | 50px 20px |
10px 20px 30px 40px / 5px 10px |
10px 5px | 20px 10px | 30px 5px | 40px 10px |
スラッシュの前後それぞれに、1〜4値の決まりが別々に当たります。
%とpxの違い:50%と9999px
200×100pxの長方形で、角丸の値だけを変えて形を確かめました。上辺のうち、まっすぐな部分がどこからどこまで残るかを画素で測っています。
| 指定 | 上辺のまっすぐな部分 | 形 |
|---|---|---|
border-radius: 50% |
中央の約20pxだけ | 楕円(横の半径100px・縦の半径50px) |
border-radius: 9999px |
左から45〜154pxあたり | カプセル形(左右が半径50pxの半円) |
border-radius: 300px |
左から45〜154pxあたり | 9999px と同じカプセル形 |
%は横の半径が幅に対して、縦の半径が高さに対して計算されます。 そのため長方形に 50% を指定すると楕円になります。一方、px で大きすぎる値を指定すると、隣り合う角の半径の合計が辺の長さに収まるよう、ブラウザが同じ比率で縮めます。結果として「短い辺の半分」が半径になり、カプセル形になります。300px と 9999px が同じ形になったのはこのためです。
| 作りたい形 | 書き方 |
|---|---|
| 正円 | 正方形にして border-radius: 50% |
| 楕円 | 長方形に border-radius: 50% |
| カプセル形 | border-radius: 9999px(十分に大きい px 値) |
コピペで使える角丸コード集
サイズは Chromium 141 で測った値です。
円(アイコン・アバター)
.circle {
width: 120px;
aspect-ratio: 1; /* 正方形にする */
border-radius: 50%;
background: #06c;
}
img.avatar {
width: 64px;
aspect-ratio: 1;
border-radius: 50%;
object-fit: cover; /* 縦横比の違う写真も中央で切り抜く */
}
.circle は120×120pxの正円になりました。
カプセル形(タグ・ボタン)
.pill {
display: inline-block;
padding: 8px 20px;
border-radius: 9999px;
background: #06c;
color: #fff;
}
「タグ」の2文字を入れると72×37pxで、文字数が増えても左右は半円のまま保たれます。
片側だけ角丸(タブ・カードの上部)
.tab { border-radius: 12px 12px 0 0; } /* 上の2つだけ */
.left-only { border-radius: 12px 0 0 12px; } /* 左の2つだけ */
.leaf { border-radius: 0 50% 0 50%; } /* 右上と左下だけ(葉の形) */
.tab の計算値は 12px 12px 0px 0px、.leaf は 0px 50%(2値の形に短縮)でした。
吹き出し
<p class="bubble">こんにちは</p>
.bubble {
position: relative;
display: inline-block;
padding: 12px 16px;
border-radius: 12px;
background: #e8f1ff;
color: #123;
}
.bubble::after {
content: "";
position: absolute;
top: 100%; /* 本体のすぐ下 */
left: 24px;
border: 10px solid transparent; /* 四辺とも透明な10pxの線 */
border-top-color: #e8f1ff; /* 上の辺だけ色を付ける=下向きの三角形 */
}
吹き出し本体は112×45pxで、その真下に高さ10pxの三角形が同じ色で描かれることを画素で確認しました。幅も高さも0の要素に太い border を付けると、4つの辺は三角形になります。 1辺だけ色を付け、残りを透明にすると、その方向を指す三角形になります。
| 三角形の向き | 色を付ける辺 | 位置の指定 |
|---|---|---|
| 下向き(吹き出しの下に付ける) | border-top-color |
top: 100% |
| 上向き | border-bottom-color |
bottom: 100% |
| 右向き | border-left-color |
left: 100% |
| 左向き | border-right-color |
right: 100% |
見出しの飾り線
.h-left { padding-left: 12px; border-left: 6px solid #06c; }
.h-under { padding-bottom: 6px; border-bottom: 2px solid #06c; }
.h-double { padding-block: 8px; border-block: 3px double #333; } /* 上下に二重線 */
リストの区切り線(最後の線を出さない)
<ul class="list">
<li>備品A</li>
<li>備品B</li>
<li>備品C</li>
</ul>
.list { list-style: none; margin: 0; padding: 0; }
.list > li { padding: 8px 0; }
.list > li + li { border-top: 1px solid #ddd; } /* 2つ目以降の上にだけ線 */
各 li の上辺の太さを読み取ると 0px, 1px, 1px でした。「隣り合う要素の間だけ」に線が入るので、先頭や末尾に余分な線が残りません。 border-bottom を全部に引いてから最後だけ消す書き方より短くなります。
グラデーションの枠線を角丸にする
枠線をグラデーションにする方法は2つあり、角丸と両立できるかどうかが違います。200×100pxの箱に4pxの線と border-radius: 16px を指定し、左上の角の画素を調べました。
/* 方法A:border-image(角丸にはならない) */
.a {
border: 4px solid;
border-image: linear-gradient(90deg, #f00, #00f) 1;
border-radius: 16px;
}
/* 方法B:背景を2枚重ねる(角丸になる) */
.b {
border: 4px solid transparent;
border-radius: 16px;
background:
linear-gradient(#fff, #fff) padding-box, /* 内側を白で塗る */
linear-gradient(90deg, #f00, #00f) border-box; /* 枠線の下までグラデーション */
}
| 方法 | 左上の角(1px, 1px)の色 | 左辺の色 / 右辺の色 | 結果 |
|---|---|---|---|
A:border-image |
赤(線が角まで描かれている) | 赤 / 青 | 四角いまま。border-radius は線に反映されない |
| B:背景の2枚重ね | 白(角が丸く抜けている) | 赤 / 青 | 角丸のグラデーション枠線になる |
方法Bは、透明な枠線の下に広がる背景(border-box)を線として見せ、内側(padding-box)を単色で塗りつぶす仕組みです。内側を透過させたい場合には使えない点だけ気を付けます。
つまずきやすい点を再現して直す
線を足すと幅がずれる(box-sizing)
<div style="width: 200px; padding: 10px; border: 5px solid">content-box</div>
<div style="width: 200px; padding: 10px; border: 5px solid; box-sizing: border-box">border-box</div>
| box-sizing | 実際の幅(offsetWidth) | 計算 |
|---|---|---|
content-box(初期値) |
230px | 200 + padding 10×2 + border 5×2 |
border-box |
200px | width の中に padding と border を含める |
初期値の content-box では、width は中身の幅だけを指します。線や padding を足すとその分だけ外側に大きくなり、横並びが崩れたり、親からはみ出したりします。全要素を border-box にしておくと、width に書いた値がそのまま見た目の幅になります。
*, *::before, *::after { box-sizing: border-box; }
ホバーで線を太くすると周りが動く
/* 直す前:1px → 3px で高さが変わる */
.item { border: 1px solid #ccc; }
.item:hover { border: 3px solid #06c; }
| 方法 | 要素の高さ | 下の要素の移動 |
|---|---|---|
| border を 1px → 3px に変える | 32px → 36px | 4px下へ動く |
border は 1px のまま、outline: 2px solid を足す |
32px のまま | 0px(動かない) |
直し方は3つあります。
/* 方法1:最初から同じ太さの透明な線を引いておく */
.item { border: 3px solid transparent; }
.item:hover { border-color: #06c; }
/* 方法2:outline を使う(大きさに影響しない) */
.item:hover { outline: 2px solid #06c; outline-offset: -1px; }
/* 方法3:内側の影で線を描く */
.item:hover { box-shadow: inset 0 0 0 2px #06c; }
borderとoutlineの違い
| 比べる点 | border | outline |
|---|---|---|
| 要素の大きさに含まれるか | 含まれる | 含まれない(周りを動かさない) |
| 辺ごとの指定 | できる | できない(四辺まとめて) |
| 要素からの距離 | 調整できない | outline-offset で調整できる(マイナスも可) |
| 角丸 | border-radius で丸まる |
新しめの各ブラウザでは border-radius に沿う |
| 主な用途 | 枠線、区切り線 | フォーカスの表示、確認用の一時的な線 |
幅200px・高さ30pxの要素に outline: 5px solid red; outline-offset: 3px; を指定しても、offsetWidth は200、offsetHeight は30のままで、次の要素との間隔も0pxのままでした。
outline はキーボード操作でフォーカスの位置を示す役割を持っています。outline: none で消す場合は、:focus-visible で代わりの見た目を用意します。
button:focus-visible { outline: 2px solid #06c; outline-offset: 2px; }
角丸から画像がはみ出す
親に border-radius を付けただけでは、中の画像は四角いまま角からはみ出します。200×200pxの親(border-radius: 40px)に同じ大きさの赤い画像を入れ、左上の角の画素を調べました。
| 指定 | 左上の角(3px, 3px)の色 | 結果 |
|---|---|---|
親に border-radius のみ |
赤(画像の色) | 画像の角がはみ出している |
親に overflow: hidden を追加 |
白(ページの背景) | 角丸で切り抜かれる |
親に overflow: clip を追加 |
白 | 角丸で切り抜かれる |
画像に border-radius: inherit を追加 |
白 | 画像自体が丸くなる |
border-radius は「その要素の背景と枠線」を丸めるもので、子要素は切り抜きません。親に overflow: hidden(または clip)を足すのが基本の直し方です。
.card { border-radius: 12px; overflow: hidden; }
.card img { display: block; width: 100%; }
カードの上側にだけ画像がある場合は、画像に border-radius: 12px 12px 0 0; と書く方法もあります。親に枠線があるときは、内側の角は「角丸の値 − 線の太さ」になる点も覚えておくと、すき間のない仕上がりになります。
tableの線が二重になる
table と td の両方に border: 1px solid を指定し、幅50pxのセルを2つ並べて測りました。
| 指定 | 表の大きさ(offsetWidth×offsetHeight) | 見え方 |
|---|---|---|
指定なし(border-collapse: separate) |
112×32 | セルの間に2pxのすき間があり、線が二重に見える |
border-spacing: 0 |
106×28 | すき間はなくなるが、隣り合う線が並んで2pxの太さになる |
border-collapse: collapse |
103×26 | 隣り合う線が1本にまとまる |
table { border-collapse: collapse; }
th, td { border: 1px solid #333; padding: 8px; }
collapse にすると、隣り合うセルの線が1本にまとめられます。このとき線どうしが競合するので、冒頭の表で触れた優先度が働きます。hidden は最優先で線を消し、none は最も優先度が低く、隣のセルの線があればそちらが表示されます。
/* 表の外枠だけ消したいとき */
table { border-collapse: collapse; border-style: hidden; }
また、collapse にした table では、td の border-radius は働きません。表の角を丸めたいときは、border-collapse: separate; border-spacing: 0; にしたうえで四隅のセルに角丸を付けるか、表を包む div に border-radius と overflow: hidden を指定します。
そのほかのチェックリスト
| 症状 | 原因 | 直し方 |
|---|---|---|
| 線が出ない | border-style が抜けている |
solid などを足す |
| 線の色が思った色にならない | 色を省略していて文字色になっている | border-color を指定 |
| 一辺だけ消したのに戻る | 後ろに border を書いている |
全体 → 例外の順に書く |
double が1本に見える |
太さが3px未満 | 3px以上にする |
| 角丸が効かない | table が collapse、または値の単位抜け |
separate にする、8px のように単位を付ける |
| 円にならず楕円になる | 幅と高さが違う | aspect-ratio: 1 で正方形にする |
| 0.5px の線が出ない・太さがそろわない | 画面の画素密度によって丸められる | 1px を使う |
角の形を変える corner-shape(参考)
角の形そのものを変える corner-shape プロパティ(squircle、bevel、scoop など)は、Chromium 141 で CSS.supports('corner-shape', 'squircle') が true を返しました。ほかのブラウザでの対応は未実行のため、現時点では対応していない環境で通常の角丸に戻る「追加の飾り」として使うのがよさそうです。
.squircle {
border-radius: 24px;
corner-shape: squircle; /* 対応していないブラウザでは 24px の通常の角丸になる */
}
よくある質問
Q. border と outline はどちらを使えばよいですか?
A. デザインとして常に表示する枠線や区切り線は border、フォーカスの表示やホバー時の強調のように「周りを動かさずに一時的に線を出したい」ときは outline が向いています。outline は要素の大きさに含まれないので、表示・非表示を切り替えてもレイアウトが変わりません。
Q. border-radius: 50% と 9999px の違いは何ですか?
A. 50% は幅と高さそれぞれの半分を半径にするので、正方形なら正円、長方形なら楕円になります。9999px は大きすぎる値が自動で縮められて「短い辺の半分」が半径になるため、長方形ではカプセル形になります。
Q. 線の内側だけ・下線だけに色を変えられますか?
A. 辺ごとの色は border-bottom-color などで変えられます。1辺の中で色を変えたい場合は、border-image にグラデーションを指定するか、背景や疑似要素で線を描く方法を使います。なお border-image を使うと border-radius は線に反映されません。
Q. 点線の間隔は変えられますか?
A. dotted や dashed の間隔は CSS では指定できず、ブラウザが決めます。間隔まで決めたいときは、repeating-linear-gradient を背景として細く敷く方法が使えます。
まとめ
- border は「太さ・種類・色」の3つ。省略できないのは種類(
border-style)で、抜けると線が出ない - 線の種類は10種。
noneとhiddenは幅を取らず、doubleは3px以上で二重に見える - 値を1〜4個書いたときは「上・右・下・左」の時計回り。全体を先に、例外の辺を後に書く
border-radiusは左上から時計回り。スラッシュの前が横、後ろが縦の半径- 正方形に
50%で円、9999pxでカプセル形。吹き出しの三角形は透明な border で作る - 線で幅がずれるなら
box-sizing: border-box、ホバーで動くならoutlineか透明な線 - 角丸から画像がはみ出すなら親に
overflow: hidden、table の二重線はborder-collapse: collapse
本記事の内容は、ご自由にお使いください。
ご利用の際は、出典として本ページへのリンクを記載いただけますようお願いします。
(記載例)出典:株式会社RJC「CSS borderの書き方一覧|線の種類10種と角丸border-radius」
株式会社RJCでは、CSSの枠線や角丸の指定方法を仲間と学び合っています。こうした知識を共有しながら、日々技術を磨いています。
株式会社RJC ― SI事業・SES事業・AI駆動開発。RJCは一緒に成長を楽しめる会社です。
WE ARE HIRING
RJCで一緒に開発しながら、
成長を楽しみませんか?
RJCは、Web・モバイル・AIを活用した開発プロジェクトで、テックリードやPM・PMOも活躍するシステム開発会社です。会社を知る、待遇を確かめる、話を聞いてみる。気になるところ見てみてください!
- 127日年間休日
- 12時間平均残業時間
- 毎日ガチャ遊びココロも大切にする福利厚生。アマギフなどの賞品ラインナップ!
ほかにも、チケットレストラン、書籍読み放題、2年ごとの慰労報奨(休暇 or 金一封)、11期連続の黒字決算。