CSS Position(位置指定)
positionプロパティは要素の位置指定方法を指定するために使用されます。
一般的な5つの値は次のとおりです:
| 值 | 説明 | アンカー |
|---|---|---|
| static | デフォルト値。要素は通常のドキュメントフローに従って配置され、top/right/bottom/left の影響を受けません。 | 例を見る |
| relative | 自身の元の位置を基準にオフセットし、ドキュメントフローから離れません。 | 例を見る |
| absolute | 最も近い位置指定済みの祖先要素に対して配置されます(そうでない場合は body に対して)。ドキュメントフローから離れます。 | 例を見る |
| fixed | ブラウザウィンドウに対して配置され、ページをスクロールしても位置は変わりません。 | 例を見る |
| sticky | 指定位置にスクロールするまでは relative のように動作し、その後は fixed のように動作します。 | 例を見る |
要素はtop、right、bottomとleftプロパティで位置を調整できますが、これらのプロパティは設定されている場合にのみposition(かつ値がstatic)場合にのみ有効になります。
異なる位置指定方法は、これらのプロパティの参照対象と表現形式に影響します。
static 位置指定
HTML要素のデフォルト値であり、位置指定がない、つまり通常のドキュメントフローオブジェクトに従います。
静的配置された要素は top, bottom, left, right の影響を受けません。
fixed 位置指定
要素の位置はブラウザウィンドウに対して固定位置です。
ウィンドウをスクロールしても移動しません:
注意:Fixed 配置は IE7 および IE8 では !DOCTYPE の記述が必要です。
Fixed 配置は要素の位置をドキュメントフローから切り離すため、スペースを占有しません。
Fixed 配置された要素は他の要素と重なります。
relative 位置指定
相対配置された要素の位置は、その通常の位置を基準にします。
例
試してみる »
相対配置された要素を移動しても、元のスペースは変わりません。
相対配置された要素は、絶対配置された要素のコンテナブロックとしてよく使用されます。
absolute 位置指定
絶対配置された要素の位置は、最も近い位置指定済みの親要素を基準にします。要素に位置指定済みの親要素がない場合、その位置は <html> を基準にします:
absolute 配置は要素の位置をドキュメントフローから切り離すため、スペースを占有しません。
absolute 配置された要素は他の要素と重なります。
sticky 位置指定
sticky は英語で「粘る、貼り付く」という意味なので、粘着配置と呼ぶことができます。
position: sticky;ユーザーのスクロール位置に基づいて配置されます。
粘着配置された要素はユーザーのスクロールに依存し、position:relativeとposition:fixed位置指定の間を切り替えます。
その動作は次のようになります:position:relative;そしてページがターゲット領域を超えてスクロールすると、その動作は次のようになります:position:fixed;、ターゲット位置に固定されます。
要素の位置指定は、特定のしきい値を超えるまでは相対配置のように動作し、その後は固定配置のように動作します。
この特定のしきい値とは、top, right, bottom または left のいずれかを指します。言い換えると、top, right, bottom, left の4つのしきい値のいずれかを指定して初めて粘着配置が有効になります。それ以外の場合、その動作は相対配置と同じです。
注意:Internet Explorer、Edge 15 およびそれ以前の IE バージョンは sticky 配置をサポートしていません。Safari では -webkit- prefix を使用する必要があります(以下の例を参照)。
例
試してみる »
重なり合う要素
要素の位置指定はドキュメントフローと無関係なため、ページ上の他の要素を覆うことができます。
z-index プロパティは要素の重なり順(どの要素を前面に置くか、または後面に置くか)を指定します。
要素は正または負の重なり順を持つことができます:
より高い重なり順を持つ要素は、常により低い重なり順の要素の前面に表示されます。
注意:2つの位置指定された要素が重なり、z-index が指定されていない場合、HTMLコード内で最後に配置された要素が最前面に表示されます。
その他の例
この例では、要素の形状を設定する方法を示します。要素はこの形状に切り抜かれて表示されます。
スクロールバーを使用して要素内のあふれたコンテンツを表示する方法
この例では、overflow プロパティでスクロールバーを作成し、要素のコンテンツが指定領域を超える場合にどのように設定して適合させるかを示します。
この例では、ブラウザにオーバーフローを自動処理させる方法を示します。
この例では、カーソルを変更する方法を示します。
すべてのCSS位置指定プロパティ
"CSS" 列の数字は、そのプロパティを定義したCSSバージョン(CSS1またはCSS2)を示します。
| プロパティ | 説明 | 值 | CSS |
|---|---|---|---|
| bottom | 位置指定された要素の下マージン境界と、その包含ブロックの下境界との間のオフセットを定義します。 | auto length % inherit |
2 |
| clip | 絶対配置された要素をクリッピングする | shape auto inherit |
2 |
| cursor | 表示するカーソルの種類を指定します | url auto crosshair default pointer move e-resize ne-resize nw-resize n-resize se-resize sw-resize s-resize w-resize text wait help |
2 |
| left | 位置指定された要素の左マージン境界と、その包含ブロックの左境界との間のオフセットを定義します。 | auto length % inherit |
2 |
| overflow |
要素のコンテンツがその領域をあふれたときに発生することを設定します。 | auto hidden scroll visible inherit |
2 |
| overflow-y |
コンテンツが要素のコンテンツ領域を上下の端であふれた場合の処理方法を指定します。 | auto hidden scroll visible no-display no-content |
2 |
| overflow-x |
コンテンツが要素のコンテンツ領域を左右の端であふれた場合の処理方法を指定します。 | auto hidden scroll visible no-display no-content |
2 |
| position | 要素の位置指定タイプを指定します。 | absolute fixed relative static inherit |
2 |
| right | 位置指定された要素の右マージン境界と、その包含ブロックの右境界との間のオフセットを定義します。 | auto length % inherit |
2 |
| top | 位置指定された要素の上マージン境界と、その包含ブロックの上境界との間のオフセットを定義します。 | auto length % inherit |
2 |
| z-index | 要素の重なり順を設定します。 |
number auto inherit |
2 |