Menu

CSS border (枠線) の使い方: 太さ、種類、色、角丸

border プロパティは要素の padding の周りに線を描きます。border のショートハンド、すべての線の種類、色と片側だけの指定、border-radius での角丸、border と outline の違いを解説します。

このページのコードはエディタで実行できます - 編集してすぐに結果を確認できます。

border のショートハンド

border は要素の周り、padding と margin の間に線を描きます。ショートハンドには 太さ、種類、色 の 3 つを順不同で書きます。

部分個別プロパティ値初期値
太さborder-width1px, 0.2em, thin, medium, thickmedium
種類border-stylesolid, dashed, dotted, double などnone
色border-color任意の色currentColor (文字色)

省略できないのは種類です。初期値が none なので、border: 2px #2563eb; では何も描かれません。色を省略すると、枠線は要素の文字色になります。

線の種類

double で 2 本の線を見せるには 3px 以上必要です。groove、ridge、inset、outset は色に陰影を付けて立体的に見せるもので、ブラウザによって少し見た目が違います。hidden は none と同じに見えます。違いが出るのは border を結合したテーブルの中だけで、これは HTML テーブルの枠線のページ で解説しています。

1 辺ずつ指定する

各辺には専用のショートハンド (border-top、border-right、border-bottom、border-left) があり、各部分にも border-top-color のような辺ごとの個別プロパティがあります。論理プロパティの border-inline-start と border-block-end は書字方向に従います:

border-color、border-width、border-style には、padding と同じ時計回りの順番 (上、右、下、左) で 1 から 4 つの値を書けます。

border-radius で角を丸くする

border-radius は枠線 と 背景の角を丸くします。そのため border がまったくない要素でも使えます。

値結果
border-radius: 8pxすべての角を 8px 丸める
border-radius: 50%正方形なら円、長方形なら楕円
border-radius: 999pxピル型: 短い辺が完全な半円になる
border-radius: 8px 0左上と右下が 8px、ほかの 2 つは直角
border-top-left-radius: 12px1 つの角だけ
border-radius: 50% / 25%楕円の角: 横の半径 / 縦の半径

背景を持つ子要素が、角丸の親の角からはみ出すことがあります。親に overflow: hidden を指定すると、曲線に沿って切り取られます。

border と outline

outline は border に似て見えますが、border の外側に描かれ、空間を取りません。そのため outline を付けても何も動きません。ブラウザがフォーカスリングに outline を使うのはこのためです。

borderoutline
空間を占めるはい、ボックスのサイズの一部いいえ
辺ごとの指定できる (border-top など)できない (全周のみ)
border-radius に沿うはいはい (現在のブラウザ)
ボックスからのずらしできないできる (outline-offset)
主な用途デザインフォーカス表示、デバッグ

よくある間違い

  • 線の種類がない。 border: 1px #111827; や border-color: red; では何も描かれません。solid (または別の種類) を含めましょう。
  • hover で枠線を付けてレイアウトがずれる。 透明な枠線で場所を確保しておくか、outline か box-shadow を使いましょう。
  • 幅の計算で枠線を忘れる。 content-box では、枠線のある width: 100% の要素はコンテナからはみ出します。box-sizing: border-box を使いましょう。
  • border-radius の角から子要素がはみ出す。 角丸の親に overflow: hidden を追加しましょう。
  • outline: none でフォーカスのアウトラインを消す。 キーボード利用者には必要です。消すのではなく、outline のスタイルを変えましょう。

よくある質問

CSS で枠線を付けるには?

太さ、種類、色をショートハンドで指定します: border: 2px solid #2563eb;。いちばん大事なのは種類です。種類がないと border の種類は none になり、枠線は描かれません。

CSS の枠線が表示されないのはなぜですか?

ほとんどの場合、線の種類が指定されていないからです。border-style の初期値は none なので、border: 2px #2563eb; や border-color: red; だけでは何も描かれません。solid、dashed などの種類を追加しましょう。

CSS で角を丸くするには?

border-radius を使います: border-radius: 8px; で 4 つの角すべてが丸くなります。正方形の要素に border-radius: 50%; を指定すると円になり、999px のような大きな値ではピル型になります。border がなくても背景の角が丸くなります。

片側だけに枠線を付けるには?

辺ごとのプロパティを使います: border-bottom: 2px solid #e5e7eb;。テキストが始まる側に付けるなら border-inline-start を使います。これは右から左の言語でも正しく動きます。

border と outline の違いは何ですか?

border はボックスの一部で、空間を占め、要素のサイズを変えます。outline は border の外側に空間を取らずに描かれ、辺ごとの指定ができず、ブラウザがフォーカスリングに使うものです。現在のブラウザではどちらも border-radius に沿います。

Coddy programming languages illustration

Coddyでコードを学ぼう

始める