LoginSignup
1
0

More than 3 years have passed since last update.

outline(輪郭線)という記憶の外に置かれがちなCSSプロパティのメモ

Posted at

outline って、なんか影が薄い気がする。(※個人の感想です)

概要

outline は、要素の輪郭線を指定する。
輪郭線は border(境界線)の外側に描画され、多くは四角の枠線となる。
使い方は border とおおむね同じだが、以下の違いがある。

  • 上下左右を個別に設定できない
  • 角丸(border-radius)に相当するものがない
  • outline-offset なるプロパティで表示位置を調整できる(ただしIEでは全てのバージョンでサポートされない)

(※厳密には、outlineoutline-styleoutline-widthoutline-color の3つのプロパティを同時に指定するショートハンド)

outline-offset 以外は CSS2.1 で勧告されたプロパティであり、よほど古いブラウザでなければ利用できる。

特徴と応用例

outlineborder と同程度以下の表現しかできないが、ボックスモデルから独立して設定でき、レイアウトに影響しないという特徴がある。border と同時使用すれば1つのボックス要素に2種類の枠線を描ける。

用途としては、ブラウザのフォーカス枠(キーボードで操作する場合などに現れる)の表示、入力フォームにおける必要項目や重要な段落のハイライトなど、一時的に使われるケースが多いように思われる。

しかし、もっぱら視覚デザインのためにのみ使われる要素ならば、恒常的に outline を表示させてもよいだろう。

border と outline で枠線を2つ引く

下の例は、赤いドットの border の外側に、黄色いドットの outline を表示している。
s20.png

/* 枠線を2つ引く */
div{
  border:  0.6em #f00000 dotted;
  outline: 0.8em #ffdd00 dotted;
}

outline-offset で表示位置を変える

下の例は、赤色の border の少し内側に、黄色の outline を重ねて表示している。黄色は半透明なので、重なった部分がオレンジ色になっている。
s20.png
outline-offset は、outlineの表示位置を border外側からの相対距離で指定する。IEでは全てのバージョンでサポートされない。
マイナス値にすれば borderの線上や内側に outlineを表示できる。

div{
  padding: 1em;
  border:  1em #ff0000 solid;
  outline: 1em #ffff0080 solid;
  outline-offset: -1.5em;
}

border の場合、太さ(border-width)を変えるとコンテンツ領域のサイズに影響するが、outline は干渉しない。また外側にある他の要素に重なってもレイアウトには影響しない。
ガチガチに組まれた職人的デザインでも安心か。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0