CSS アウトライン(outline)属性完全ガイド:入門から応用まで
CSS アウトライン(outline)とは?
CSSの outline プロパティは、要素の周りにアウトライン(輪郭線)を描画するために使用されます。アウトラインは、要素に視覚的な焦点を当てたり、ユーザーインターフェースのアクセシビリティを向上させるために役立ちます。
定義と役割
outline プロパティは、要素の周囲に線を描画し、要素を視覚的に強調表示するために使用されます。
ボーダー(border)との違い
アウトライン(outline)とボーダー(border)はどちらも要素の周囲に線を描画しますが、いくつかの重要な違いがあります。
プロパティ | アウトライン(outline) | ボーダー(border) |
レイアウトへの影響 | 影響しない | 影響する |
各辺個別設定 | 不可 | 可能 |
背景色/画像との重なり | 要素の上に描画 | 背景色/画像と同じレイヤーに描画 |
適用例
-
アウトライン: リンク要素にフォーカスがあることを示す場合など、要素の周りに視覚的な境界線を追加するが、レイアウトに影響を与えたくない場合に適しています。
-
ボーダー: 要素の周りに恒久的な視覚的な境界線を追加する場合、例えばボックスのスタイルを設定する場合に適しています。
CSSアウトライン属性详解
outline shorthand property
outline shorthand property は、 outline-color, outline-style, outline-width をまとめて指定することができます。
Syntax:
outline: [outline-color] [outline-style] [outline-width];
Example:
.example {
outline: 2px dashed red; /* redの破線で2pxのアウトライン */
}
outline-color
アウトラインの色を指定します。
値:
-
色の名前 (例: red, blue, green)
-
16進数カラーコード (例: #ff0000, #0000ff)
-
RGB値 (例: rgb(255, 0, 0), rgb(0, 0, 255))
-
invert キーワード: ブラウザが背景色に応じて反転色を自動的に選択します。
Example:
.example1 {
outline-color: blue; /* 青色のアウトライン */
}
.example2 {
outline-color: #00ff00; /* 緑色のアウトライン */
}
outline-style
アウトラインのスタイルを指定します。
値:
-
none: アウトラインを表示しません。
-
dotted: 点線で表示します。
-
dashed: 破線で表示します。
-
solid: 実線で表示します。
-
double: 二重線で表示します。
-
groove: 溝のように表示します。
-
ridge: ridgesのように表示します。
-
inset: 要素が埋め込まれているように表示します。
-
outset: 要素が浮き出ているように表示します。
Example:
.example1 {
outline-style: dotted; /* 点線のアウトライン */
}
.example2 {
outline-style: dashed; /* 破線のアウトライン */
}
outline-width
アウトラインの幅を指定します。
値:
-
thin: 細いアウトラインを表示します。
-
medium: 中くらいの太さのアウトラインを表示します。
-
thick: 太いアウトラインを表示します。
-
長さの値: px, em, rem などで指定します。
Example:
.example1 {
outline-width: thin; /* 細いアウトライン */
}
.example2 {
outline-width: 5px; /* 5pxのアウトライン */
}
outline-offset
アウトラインとボーダーの間のオフセットを指定します。
値:
-
長さの値: px, em, rem などで指定します。正の値はボーダーから離れる方向、負の値はボーダーに近づく方向にオフセットします。
Example:
.example {
outline-offset: 5px; /* ボーダーから5px離れた位置にアウトラインを表示 */
}
CSSアウトライン属性適用事例
事例1:リンクにアウトライン効果を追加
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>リンクのアウトライン効果</title>
<style>
a:focus {
outline: 2px dashed blue;
}
</style>
</head>
<body>
<a href="#">アウトライン効果が適用されるリンク</a>
</body>
</html>
効果: フォーカスされたリンクに青い破線のアウトラインが表示されます。
事例2:ボタンのフォーカススタイルを作成
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>ボタンのフォーカススタイル</title>
<style>
button:focus {
outline: none;
box-shadow: 0 0 5px rgba(0, 0, 0, 0.3);
}
</style>
</head>
<body>
<button>フォーカスで影が表示されるボタン</button>
</body>
</html>
効果: フォーカスされたボタンに影が表示され、アウトラインは表示されません。
事例3: outline-offset 属性を使用してシャドウ効果を作成
.box {
width: 100px;
height: 100px;
background-color: lightblue;
outline: 5px solid transparent;
outline-offset: -10px;
}
効果: lightblueのボックスに、10pxのオフセットを持つ透明なアウトラインを適用することで、擬似的なシャドウ効果が生まれます。
まとめ
CSSのアウトライン属性は、要素の周りにアウトラインを描画するために使用されます。アウトラインは、要素に視覚的な焦点を当てたり、ユーザーインターフェースのアクセシビリティを向上させるために役立ちます。
アウトライン属性を使用する際は、以下の点に注意してください。
-
アウトラインはボーダーとは異なり、レイアウトに影響を与えません。
-
アウトラインは要素の上に描画されるため、背景色や背景画像と重なる可能性があります。
アウトライン属性は、ユーザーインターフェースをより使いやすく、アクセスしやすいものにするために活用できる強力なツールです。
関連リソース:
よくある質問
Q1: outline と border の違いは何ですか?
A1: outline はレイアウトに影響を与えず、要素の上に描画されます。一方、border はレイアウトに影響を与え、背景と同じレイヤーに描画されます。
Q2: outline-offset はどのように使用しますか?
A2: outline-offset は、アウトラインとボーダーの間のオフセットを指定します。正の値はボーダーから離れる方向、負の値はボーダーに近づく方向にオフセットします。
Q3: アクセシビリティの観点から、outline を使用する場合の注意点はありますか?
A3: outline は、キーボードのみで操作するユーザーにとって重要な視覚的な指標となります。outline: none でアウトラインを非表示にする場合は、フォーカス状態を明確に示す代替手段を提供することが重要です。