ホームページ >ウェブフロントエンド >CSSチュートリアル >CSS表示:コンテンツの使い方は?
display:contents は比較的馴染みのないプロパティです。display は基本的に最も一般的な CSS プロパティですが、contents の値が使用されることはほとんどありません。ただし、Firefox では 2016 年からサポートされています。
この記事では、この興味深い属性値について詳しく説明します。
基本的な使用法
W3C の表示の定義によると、コンテンツです。
要素自体はボックスを生成しませんが、その子と疑似要素は引き続きボックスを生成し、テキストは通常どおり実行されます。ボックスの生成とレイアウトの目的では、要素は次のように扱われる必要があります。要素ツリー内でその内容 (ソースドキュメントの子と、通常のように要素の子の前後に生成される ::before および ::after 擬似要素などの擬似要素の両方を含む) によって置き換えられていました。 .
単純に解釈すると、この属性値が設定された要素自体はボックスを生成しませんが、その子孫要素の通常の表示は維持されることを意味します。
簡単な例を見てみましょう。次のような単純な 3 層構造があります。
<div class="container"> <div class="wrap"> <div class="inner"></div> </div> </div>
単純な CSS は次のとおりです。
.container { width: 200px; height: 200px; background: #bbb; } .wrap { border: 2px solid red; padding: 20px; box-sizing: border-box; } .inner { border: 2px solid green; padding: 20px; box-sizing: border-box; }
パフォーマンスは次のとおりです。
##非常にわかりやすいのですが、中間層のコンテナにdisplay:contentsを追加してその効果を見ると、<div class="container"> <div class="wrap" style="display: contents"> <div class="inner"></div> </div> </div>ということがわかります。中間層の境界線はありません: 2px 赤一色 赤い境界線があるため、.wrap div 全体が存在しないように見えますが、その子要素は正常にレンダリングされます。 重要な点は、display:contents が設定された要素自体は描画されませんが、その子要素は通常どおり描画できるということです。 私は、この属性の非常に適切な使用点は何かについて考えてきました。 要約すると、この属性はラッパーとして機能する一部のレイアウト シナリオに適しています。これらの要素自体は効果がなく、無視できます。
セマンティックのないラッピング ボックスとして機能します
私が最近 React と Vue を書いていたとき、JSX を書くときにこの属性が非常に良い役割を果たすことができることに気付きました。この属性自体の位置付けと一致しており、非常に便利です。 React や RN を書くときは、テンプレートを出力する必要があることがよくあります。return ( <div class="wrap"> <h2>Title</h2> <div>...</div> </div> ).wrap div 内のコンテンツを出力したいだけですが、フレームワークの要件により、出力された JSX テンプレートは親要素の下に含める必要があるため、最後の手段として .wrap div を追加する必要があります。ラッピングには「wrap」を使用しますが、この「wrap」自体にはスタイルがありません。 出力要素を他のdisplay:flex、display:gridコンテナの下に配置する場合、意味のない.wrapのレイヤーを追加した後、全体のレイアウトを再調整する必要があり面倒です。 1 つの方法は、フレームワークによって提供されるコンテナ
return ( <div class="wrap" style="display: contents"> <h2>Title</h2> <div>...</div> </div> )この方法では、ラッピングの役割を果たすだけでなく、実際のレンダリングでは、この div は実際にはボックスを生成せず、強制終了します。一石二鳥。また、一部のフレックス レイアウトとグリッド レイアウトは影響を受けません。 Codepen デモ -- 表示: コンテンツ | 表示: フレックス浸透効果
コードをよりセマンティックにする
この非常に実用的なシナリオを考えてみましょう。ページには、対応する機能をトリガーする多数のクリック可能なボタン、またはテキストやその他の要素が埋め込まれています。ただし、意味的に言えば、これらは 1 つずつ以上がCSS表示:コンテンツの使い方は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。