新しい CSS 仕様の解釈draft_html/css_WEB-ITnose

WBOY
リリース: 2016-06-24 11:20:02
オリジナル
1146 人が閲覧しました

結論:

CSS はドキュメントのスタイルを記述するための言語であり、HTML に依存せず、他の多くのマークアップ言語で使用できます。それは視覚メディアだけでなく、聴覚メディアにも当てはまります。

CSS の世界にはワイヤーフレームしかありません。CSS で考えるということは、ドキュメント内で表示または読み取り可能なものすべてをワイヤーフレームで描画することを意味します。これらのワイヤーフレームの入れ子関係は、ドキュメント構造内の要素の入れ子関係とは異なります。特定のレイアウト方法により、その入れ子関係が変わります。まずワイヤーフレームの入れ子関係を確認し、次にこのワイヤーフレーム内のすべてのワイヤーフレームのサイズ、配置、マテリアル、スキンに関する計算ルールを覚えてください。

ボックスをボックスに翻訳するのは不適切だと思います。ワイヤーフレームよりも悪いです。中国語では、ボックスは 3 次元の概念です。CSS ボックスを理解するためにボックスを使用すると、従来の印刷および植字用語で理解する方が適切です。たとえば、子ボックスが親ボックスからはみ出した場合、それを理解するためにボックスを使用するのは奇妙ですが、出版用語のブリードと同様に、ワイヤーフレームを使用するとはるかに理解しやすくなります。印刷や写植の分野で広く使用されているボックスという用語は、CSS ボックスによく似ています。ボックスを作成する代わりに、それを直接使用してみてはいかがでしょうか。実際、ボックスに限らず、多くの場所でタイポグラフィの用語を翻訳に適用できます。

最新の草案の説明は、古い仕様の用語定義とは大きく異なります。さらに、CSS 仕様は現在、独立したサブモジュールに分割されてリリースされており、一部の基本モジュールの用語定義が決定されていないため、これらのモジュールに依存する他のモジュールの用語定義が混乱を引き起こしています。さまざまなモジュール仕様を読むと、同じ用語が互いに使用されていますが、定義が異なることがわかります。彼らはこれらのルールを説明するために別の言葉を使用しており、より良い用語体系を確立したいと考えていました。仕様とは、メーカーの具体的な実装計画や開発者の具体的な開発計画を現実に標準化したものです。実際、これは、さまざまな計画のリーダーが互いに妥協し、交渉を通じて合意に達することを可能にするものであり、これはさまざまな製造業者や開発者を規制し、統一計画の実施を要求するために使用されます。

今日から明日の CSS 構文を使用してください。

http://cssnext.io/

これは JS 風のバベルです。ブラウザの対応を待たずに、新しいCSS仕様の内容を先行して利用してみましょう。しかし、CSS の特殊性により、cssnext は babel に比べて低すぎます。 CSS の分野では、古くても安全なソリューションのみが長期間使用できると推定されています。

CSS 仕様を理解する: コンピューター サイエンスの学生でなくても、18 歳以上である必要も学士号を持っている必要もありません。W3C の CSS ドキュメントを理解できることが前提となります。勉強する意欲があり、忍耐強く、細部に注意を払います。

http://www.chinaw3c.org/archives/369/

最新の CSS 仕様ドラフト

https://drafts.c​​sswg.org/

関連コンテンツの概要:

CSS Device Adaptation Module

ビューポート 古い仕様では、ビューポートという用語は連続メディアにのみ適用され、@viewport は連続メディアに、@page はページ付きメディアにのみ適用されます。ビューポートがすべてのメディアで動作するようになりました。

この仕様では、ユーザー エージェント (UA) を通じてビューポート サイズをオーバーライドする方法が導入されています。 したがって、初期ビューポートと実際のビューポートを区別する必要があります。

初期ビューポート

初期ビューポートは、UA または作成者のスタイルが UA の画面ウィンドウまたは可視領域ウィンドウを覆う前のウィンドウを指します。初期ビューポートのサイズは、UA のウィンドウまたはビューポートのサイズに応じて変化することに注意してください。

実際のビューポート

実際のビューポートは、すべてのスタイル シートのビューポート記述子を連結し、CSS ルールに従って適用することによって作成されるウィンドウを指します。

現在の UA ウィンドウまたはビューポートに実際のウィンドウを完全に表示できない場合、実際のウィンドウが初期ウィンドウよりも大きいためではなく、スケーリングにより実際のウィンドウの一部しか表示できないことが原因です。 UA はスクロール バーまたはドラッグ メカニズムを提供する必要があります。

つまり、初期ウィンドウは最終的な表示媒体の表示領域のサイズであり、実際のウィンドウはスタイルシートで指定されたサイズ、または初期のものと同じに設定できます。それより大きい場合は、一部のコンテンツが表示されないため、表示するにはスクロールまたはドラッグする必要があります。たとえば、window.innerWidth/Height は初期ビューポートのサイズです。 document.documentElement.clientWidth/Height は、実際のビューポートのサイズです。

ドキュメントルート要素の方向属性値が ltr の場合、同様に、実際のウィンドウの左上隅を UA ウィンドウまたはビューポートの左上隅に揃えることをお勧めします。 rtl を実行すると、右上隅が揃えられます。

メディア クエリ

ドキュメントをレンダリングするためのメディアが多数あるため、最初の囲み領域のサイズとデバイスの向きがメディア クエリの計算結果に影響します。つまり、@viewport の影響に特別な注意を払う必要があります。メディアクエリに関するルール。メディア クエリ レベル

メディア クエリを使用すると、作成者は UA または表示デバイスの値や特性を検出してクエリし、それに応じてドキュメントを独自のスタイルにレンダリングできます。 CSS @media ルールを使用して、条件に応じてさまざまなスタイルをドキュメントに適用します。

メディア クエリ レベル 4 では、メディア クエリ、メディア タイプ、メディア機能の構文とメカニズムについて説明します。

メディアクエリは、値が true または false である論理式です。これは、メディア タイプとメディア条件の 2 つの部分で構成されます。両方が true の場合、この式の値は true、そうでない場合は false になります。

複数のメディア クエリをカンマ区切りのメディア クエリのリストに結合できます。

メディア タイプは、UA の広いカテゴリを指します。メディア タイプ セットの元の定義は、link 要素の media 属性の HTML4 仕様にありました。

過去の状況から判断すると、メディアタイプは、ますます複雑化するUAの状況をうまく区別できません。そこで、問題を解決するためにメディア タイプの拡張を諦め、代わりにより洗練されたメディア機能を採用しました。構文的には、メディア機能は CSS プロパティのように見えます。各メディアの特性は、レンジタイプと個別ディスクリートタイプの 2 つのカテゴリに分類されます。範囲属性名には通常、min- または max- という接頭辞が付けられます。個々のクラス属性値は通常、仕様で指定されたキーワード、または 0 や 1 などのブール数値です。

複数のメディア特性では、論理演算子 (not と or) を使用してメディアの条件判断ステートメントを形成できます。 CSS 表示モジュール

このモジュールでは、ドキュメント要素ツリーから CSS 書式設定ボックス ツリーを生成する方法を説明し、ワイヤーフレーム boxex を制御するための表示プロパティとボックス抑制プロパティを定義します。

ビューポートとキャンバス ビューポートとキャンバス ビューポートは、ドキュメントを閲覧するためのメディアの表示領域です。すべてのメディアにおいて、キャンバスという用語は、フォーマットされた構造がレンダリングされる表示スペースを表すために使用されます。このキャンバスのサイズは無制限です。

CSS は、構造化ドキュメント (HTML や XML など) がディスプレイ、印刷、音声ストリーム、その他のメディア上でどのようにレンダリングされるかを記述する言語です。

CSS は、キャンバス上の要素ツリーに編成されたソース ドキュメント (表示画面、紙、音声ストリームなど) をレンダリングします。これを行うために、レンダリングされたドキュメントのレイアウト構造を表す中間構造であるボックス ツリーが生成されます。

各ワイヤーフレームは、対応する要素または疑似要素がキャンバス上に表示される空間または時間を表します。

ボックスツリーを作成するプロセス。

CSS はまず、カスケード ルールと継承ルールを使用して、ソース ノード ツリー内の各要素の各 CSS プロパティに値を割り当てます。

次に、表示およびボックス抑制属性設定に従って各要素に対して 0 個以上のワイヤーフレーム ボックスを生成します。通常は 1 つの要素が別個のワイヤーフレーム ボックスを生成します。ただし、一部の表示属性値 (display: list-item など) は複数のワイヤーフレーム (プリンシパル ブロック ボックスとマーカー ボックスなど) を生成し、一部の属性値 (display:none、display:contents、display:contents など) box-suppress: destroy) を指定すると、この要素またはその子孫によってワイヤーフレーム boex がまったく生成されなくなります。

特に明記されていない限り、ワイヤーフレーム ボックスは生成元の要素と同じスタイルになります。これらは通常、表示タイプと呼ばれます。たとえば、表示属性がブロックである要素によって生成されるワイヤーフレーム ボックスは、ブロック ワイヤーフレーム「ブロック ボックス」またはブロック「ブロック」と呼ばれます。

匿名ボックスは、どの要素にも関連付けられていないワイヤーフレーム ボックスです。

匿名ボックスは、ボックス ツリーの特別な編成が必要な場合に生成されます。この状況では、特別な入れ子構造が必要になります。この構造内のワイヤーフレーム ボックスは要素ツリーから生成されません。

たとえば、テーブル セル ボックスに特殊なタイプの親ボックス (テーブル行ボックス) が必要な場合、その親ボックスがテーブル行ボックスでない場合は、それをネストするために匿名のテーブル行ボックスが生成されます ([ CSS2] § 17.2.1.) 要素生成ボックスとは異なり、要素生成ボックス スタイルは、ボックス ツリー内にのみ存在する匿名ボックス スタイルは、そのボックス ツリーから厳密に継承されます。

植字プロセス中に、ボックスのワイヤーフレームが複数のフラグメントに分割されることがあります。これは、たとえば、インライン ボックスが複数の行に分割される場合、またはブロック ボックスがページまたは列時間にわたって分割される場合に発生します。フラグメンテーションの詳細については、[CSS3-BREAK] を参照してください。CSS の基本ボックス モデル

CSS は、ドキュメントのプレゼンテーションが要素ツリーに基づいてモデル化されていることを前提としています。各要素は、0 個以上のサブ要素と、サブ要素の前後および間にオプションのテキスト文字列を含む順序付きリストです。すべての子要素には親がありますが、親を持たない唯一の要素はルート要素と呼ばれます。

CSS は、各要素と各テキスト文字列がドキュメント ツリー モデルからレイアウト用の一連の長方形ボックスにどのように変換されるかを記述します。そのサイズ、位置、およびスタック レベルはすべて、ボックスのプロパティによって異なります。

要素は 1 つ以上のワイヤーフレーム ボックスを生成すると言います。これらはさまざまなタイプのワイヤーフレーム ボックスです。

ノーマル フローとも呼ばれるフローは、CSS の 2 つの基本的なタイポグラフィ タイプのうちの 1 つで、もう 1 つはライン レイアウト [CSS3LINE] です。テーブル [CSS3TBL]、位置決め [CSS3POS]、フレックス ボックス [CSS3-FLEXBOX]、グリッド テンプレート [CSS3LAYOUT] などの他の CSS モジュールはすべて、ドキュメントを複数のフローに分割することによって、フロー モデルに基づいて実装されます。は、これらのさまざまなフローを通じて位置決めおよび校正されます。

ボックスが次のルールを満たす場合、フロー ルートと呼ばれます:

'float' の値は 'none' ではありません。

'overflow' の使用値は ' ではありません。

'display' の値は 'table-cell'、'table-caption' ([CSS3TBL] を参照)、'inline-block' または 'inline-table' です。

'position' の値'static' でも 'relative' でもありません ([CSS3POS] を参照)。

'block-progression' の値は 'lr' または 'rl' であり、その親ボックスの 'block-progression' の値は 'tb '

'block-progression' の値は 'tb' であり、その親ボックスの 'block-progression' の値は 'lr' または 'rl' です。

flow ルート用語は CSS レベル 2 で定義されています古い仕様では、フロー ルートは「新しいフォーマット コンテキストを確立する要素」として定義されていました。

フローはフロー ルートから派生したと言います。フロー ルート自体は、それが導くフローの一部ではないことに注意してください。各フロー ルートは最大 1 つのフローにつながります。

フロールートのフローはボックスのセットです。要素のボックスがフロー ルートであり、その子要素のボックスが次のルールを満たす場合、その要素はこのフローに属します:

その 'display' の使用値は 'block'、'list-item'、' です。 table' または