display: contents
要素のボックスを「消去」し、子要素を直接の親のレイアウトに参加させる宣言です。セマンティックなHTML構造を保ちながら、不要なラッパー要素のレイアウトへの影響を排除できます。Flexboxやグリッドレイアウトで中間のラッパー要素を透過的にする場合に特に有用です。
概要
要素のボックスを「消去」し、子要素を直接の親のレイアウトに参加させる宣言です。セマンティックなHTML構造を保ちながら、不要なラッパー要素のレイアウトへの影響を排除できます。Flexboxやグリッドレイアウトで中間のラッパー要素を透過的にする場合に特に有用です。
対応ブラウザ
デスクトップ
Chrome 未対応
Edge 未対応
Safari 未対応
Firefox 未対応
基本構文
CSS
.wrapper {
display: contents;
}
/* 子要素が直接グリッドに参加 */
.grid { display: grid; }
.grid .wrapper > * { /* グリッドアイテムとして配置 */ } 実務での使いどころ
-
グリッドレイアウトのラッパー除去
コンポーネントのラッパー要素にdisplay: contentsを適用し、子要素を親グリッドの直接的なアイテムとして参加させます。
注意点
- 一部のブラウザでアクセシビリティツリーから要素が削除されるバグが報告されているため、button、a、tableなどの要素への使用は避けてください。
アクセシビリティ
- セマンティック要素に適用するとアクセシビリティ情報が失われる可能性があるため、div/span以外への使用は慎重に行ってください。