CSSの基礎プロパティとして日常的に使われていますが、線の太さ・線種・色を1行で指定するショートハンド構文の仕様や、上下左右の個別指定、テーブルの線崩れを防ぐ設定(border-collapse)など、正しく理解しておくべき重要ポイントが多数あります。
さらに近年のモダンCSSでは、書字方向や多言語レイアウトに柔軟に対応できる「論理プロパティ(border-inline / border-block)」の採用が標準化されています。
この記事では、borderプロパティの基本からモダンCSSの書き方、outlineやbox-shadowとの使い分け、実務でそのまま使えるUIコンポーネントのCSSサンプルまで分かりやすく解説します。
borderプロパティの基本構文とショートハンド
borderプロパティは、要素の境界線(ボーダー)を指定するためのプロパティです。通常は「太さ(width)」「線の種類(style)」「線の色(color)」の3つの値を半角スペースで区切って1行でまとめて指定する「ショートハンド(一括指定)」を使用します。
/* 基本構文: 太さ 線の種類 色 */
.box {
border: 1px solid #e2e8f0;
}
ショートハンドで記述する場合、3つの値の順番は自由ですが、一般的には「太さ → 線の種類 → 色」の順で記述するのが慣例です。
- 「線の種類(border-style)」は省略不可(初期値が「none」のため、省略すると枠線が表示されません)
- 「太さ(border-width)」を省略した場合は初期値の「medium(約3px)」が適用されます
- 「色(border-color)」を省略した場合は要素の文字色(currentColor)が自動的に適用されます
ボーダーを構成する3つのサブプロパティ
ショートハンドを個別に分解して制御するための3つのサブプロパティについて詳しく見ていきましょう。
線の太さ(border-width)
ボーダーの線の太さを指定します。数値と単位(px、remなど)で指定するほか、キーワード(thin、medium、thick)での指定も可能です。
.box-thin {
border-width: 1px; /* 実務で最も標準的な細線 */
}
.box-thick {
border-width: 4px; /* 太めの強調枠 */
}
線の種類(border-style)
ボーダーの線種を指定します。代表的な値として「solid(実線)」「dashed(破線)」「dotted(点線)」「double(二重線)」があります。
- 「solid」:実線(最も一般的で洗練された印象)
- 「dashed」:破線(注意喚起やドラッグ&ドロップ領域などに最適)
- 「dotted」:点線(区切り線や優しい印象のUIに最適)
- 「double」:2重線(3px以上の太さが必要)
- 「none」:枠線なし(枠線をリセットする際に使用)

▲ 各border-styleの実際の描画比較(実線・破線・点線・二重線)
/* 各スタイルの指定例 */
.border-solid { border: 2px solid #3b82f6; }
.border-dashed { border: 2px dashed #3b82f6; }
.border-dotted { border: 2px dotted #3b82f6; }
.border-double { border: 4px double #3b82f6; }
線の色(border-color)
ボーダーの色を指定します。カラーネーム、16進数カラーコード(HEX)、rgb/rgba、hslのほか、CSS変数や「transparent(透明)」も指定できます。
.box-color {
border-color: #cbd5e1; /* 淡いグレー */
}
上下左右の個別指定とモダンCSSの論理プロパティ
枠線は全周だけでなく、特定の方向だけに引くことも頻繁にあります。ここでは従来の物理的な指定方法と、モダンCSSの標準である論理プロパティの両方を確認します。

▲ 物理プロパティ(top/right/bottom/left)と論理プロパティ(block/inline)の対応関係と書字方向
従来の物理プロパティ(上下左右)
画面の上下左右に固定して線を指定する方法です。
/* 下線だけ引く(見出しやタブメニューなど) */
.tab-active {
border-bottom: 2px solid #2563eb;
}
/* 左線だけ引く */
.accent-box {
border-left: 4px solid #3b82f6;
}
モダンCSSの論理プロパティ(CSS Logical Properties)
現在のWeb標準では、「top / right / bottom / left」のような画面の物理的位置ではなく、コンテンツの流れる方向(インライン方向・ブロック方向)を基準にする「論理プロパティ」が広く使われています。
- 「border-inline」:左右のボーダーを一括指定
- 「border-inline-start」:開始側(横書きでは左ボーダー)
- 「border-inline-end」:終了側(横書きでは右ボーダー)
- 「border-block」:上下のボーダーを一括指定
- 「border-block-start」:開始側(上ボーダー)
- 「border-block-end」:終了側(下ボーダー)
論理プロパティを採用する最大のメリットは、日本語の縦書きレイアウト(writing-mode: vertical-rl)や、アラビア語などの右から左へ読む言語(RTL)に対応する際、コードを書き換えることなく自動的に意図した位置へ線が配置される点にあります。
/* 横書きでは上下に枠線、縦書きでは左右に枠線が自動適用される */
.article-quote {
border-block: 1px solid #e2e8f0;
padding-block: 16px;
}
/* 開始側(横書きなら左側)にアクセント線を配置 */
.callout-title {
border-inline-start: 4px solid #2563eb;
padding-inline-start: 12px;
}
実務で役立つデザインテクニックと注意点
ボーダーを活用する際に知っておくとトラブルを未然に防げる重要なポイントを解説します。
角丸ボーダーを作る(border-radiusとの併用)
ボーダーに丸みをつけるには「border-radius」を併用します。カードUIやボタンなどで最も多用される組み合わせです。
.card {
border: 1px solid #e2e8f0;
border-radius: 12px; /* 柔らかな丸みを付与 */
overflow: hidden; /* 内部の画像も角丸に切り抜く */
}
テーブルの線が2重になるのを防ぐ(border-collapse)
HTMLのtable要素にボーダーを引くと、デフォルトでは各セルのボーダーが離れて2重線になってしまいます。これを1本のきれいな線に結合するのが「border-collapse: collapse;」です。
table {
border-collapse: collapse; /* セルのボーダーを重ねて1本にする */
width: 100%;
}
th, td {
border: 1px solid #cbd5e1;
padding: 10px 14px;
}
border・outline・box-shadowの使い分け
「要素の外側に線を引きたい」場合、CSSにはborderのほかにoutlineとbox-shadowという選択肢があります。それぞれの特性を理解して使い分けましょう。
- 「border」:要素の幅・高さの計算に含まれる(box-sizing: border-box時)。実務のカードや区切り線の基本。
- 「outline」:要素のサイズ計算に含まれず、外側に浮いて描画される。ホバー時やフォーカスリング(アクセシビリティ対応)に最適で、表示時に周囲のレイアウトがガタつかない。
- 「box-shadow」:影として線を描画可能(0 0 0 1px #color)。borderでは難しい「多重の線」や、要素の内側に線を引く表現(inset)が可能。
コピペで使える実用CSSスタイル集
実務のWeb制作ですぐに活用できる、洗練されたボーダースタイルのサンプルコードです。

▲ border・border-radius・box-shadowを組み合わせた実践的なUIデザイン例
洗練されたモダンカード枠
.ui-card {
background-color: #ffffff;
border: 1px solid #e2e8f0;
border-radius: 8px;
padding: 24px;
transition: border-color 0.2s ease, box-shadow 0.2s ease;
}
.ui-card:hover {
border-color: #94a3b8;
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.05);
}
ゴーストボタン(枠線ボタン)
.ghost-button {
background-color: transparent;
color: #2563eb;
border: 2px solid #2563eb;
border-radius: 6px;
padding: 10px 20px;
font-weight: 600;
cursor: pointer;
transition: all 0.2s ease;
}
.ghost-button:hover {
background-color: #2563eb;
color: #ffffff;
}
ステータスタグ・バッジ
.badge-primary {
display: inline-block;
background-color: #eff6ff;
color: #1d4ed8;
border: 1px solid #bfdbfe;
border-radius: 9999px;
padding: 4px 12px;
font-size: 0.85em;
font-weight: 500;
}
まとめ
- 基本は「border: 太さ 線種 色;」のショートハンドでスマートに記述する
- 線の種類(solid, dashed, dottedなど)を省略すると枠線が表示されないため注意
- モダンCSSでは「border-inline」「border-block」などの論理プロパティを活用することで、多言語や縦書きにも強い柔軟な設計が可能になる
- テーブルのボーダーには「border-collapse: collapse;」を指定して線の二重化を防ぐ
- レイアウト崩れを防ぐフォーカス枠には「outline」、カードやUI枠には「border」と適切に使い分ける
borderプロパティはCSSの中でも最も基本でありながら、モダンな論理プロパティや他のスタイルと組み合わせることで多彩な表現を可能にします。ぜひ日々のコーディングで活用してみてください。
Web制作・プログラミング・業務自動化の役立つTipsを発信中
