Emmet: 「( )」と暗黙のタグのグループ化:ワンクリックのフルページ生成とコンテキストルール
最後のレッスンの[YIJIAN 0 PH]では、[YIJIAN 1 PH]と[YIJIAN 2 PH]は[YIJIAN 3 PH]内でのみ動作するように制限され、外部の兄弟はグループレベルに戻ります。このレッスンでは、[YIJIAN 4 PH]を体系的に取り上げ、レッスン3の「暗黙のタグ名」と組み合わせて、「単一の略語行からHTMLページ全体を生成する」ことを実現します。
1.学習内容
- Grouping [YIJIAN 0 PH] semantics: isolating the scope of [YIJIAN 1 PH] [YIJIAN 2 PH] [YIJIAN 3 PH] -入れ子構造における[YIJIAN 0 PH]の役割:サブツリーを独立したユニットにする -暗黙的なタグ名:親要素のコンテキストに基づいて自動切り替え -テーブル/リスト/セレクト/フォームの暗黙のルール:[ YIJIAN 0 PH ][ YIJIAN → 1 PH ]、[YIJIAN 2 PH ][ YIJIAN → 3 PH ]、[YIJIAN 4 PH ][ YIJIAN → 5 PH] -実用的な組み合わせ:括弧+ 1つの略語行に完全→な5 x 3テーブルを暗示
2.フロントエンド開発者の実話
###( 1)悩みの種:複雑な構造が「ネストカオス」につながる
Aliceさんは、[YIJIAN 0 PH]ヘッダーと以下の5つのデータ行を含む5行3列のテーブルを必要とする管理ダッシュボードリストページを構築しています。彼女はレッスン5の[YIJIAN 1 PH]を使って[YIJIAN 2 PH]を書いていますが、すぐに2つの新しい問題に直面します。
まず、[YIJIAN 0 PH]は5行x 3列を生成しますが、ページネーションバーは外側 [YIJIAN 1 PH]に配置する必要があります。彼女は[YIJIAN 2 PH]を兄弟としてブロック全体として使用したいと考えています。彼女は最後に[YIJIAN 3 PH]を追加しようとします。
table>(tr>td*3)*5+nav.pagination
展開後、[YIJIAN 1 PH]はtrを5回繰り返し、コンテキスト全体がテーブル内にあるため、[YIJIAN 0 PH ]テーブル内に終わることがわかりました。[YIJIAN 2 PH]は実際には5番目のtrの後にnavを追加しており、構造を台無しにしています。
第二に、5つのデータ行のそれぞれは、クラス[ YIJIAN 0 PH ]を有する。彼女は[YIJIAN 1 PH]と書いていますが、それは冗長です。すべての細胞に[YIJIAN 2 PH]がある場合、[YIJIAN 3 PH]が必要になります。彼女は「[ YIJIAN 4 PH]は書けるのか?」と不思議に思っています。trコンテキスト内の[YIJIAN 5 PH]は自動的に[YIJIAN 6 PH]になりますか?テーブルコンテキスト内の[YIJIAN 7 PH]は自動的に[YIJIAN 8 PH]になりますか?
(2) [YIJIAN 0 PH]グループ化と暗黙のタグがそれを解決する方法
エメットは、アリスの問題を解決するための2つの補完的なメカニズムを提供します。
括弧[YIJIAN 0 PH ]:外部の[YIJIAN 1 PH]がグループに漏れないように、「グループ化されたサブツリー」を独立した兄弟単位にします。アリスのページネーションの問題は、[YIJIAN 2 PH]を単一の「仮想グループ」として扱い、[YIJIAN 3 PH]を外側に追加するか、レッスン5の[YIJIAN 4 PH]を使用して抜け出す必要があります。
暗黙のタグ名: Emmetは、「親要素コンテキスト」に基づいて暗黙のタグを自動的に切り替えます— [YIJIAN 1 PH]内の[YIJIAN 0 PH]は[YIJIAN 2 PH]に、[YIJIAN 3 PH]は[YIJIAN 4 PH]内の[YIJIAN 5 PH]に、[YIJIAN 6 PH]は[YIJIAN 7 PH]内の[YIJIAN 8 PH]に、[YIJIAN 9 PH]は[YIJIAN 10 PH]内の[YIJIAN 11 PH]に自動になります。アリスの5 x 3テーブルは次のようになります。
table>(.row>.cell*3)*5
[YIJIAN 0 PH]は暗黙のうちに[YIJIAN 1 PH]になり、[YIJIAN 2 PH]は暗黙のうちに[YIJIAN 3 PH]になります。
###( 3)メリット
[YIJIAN 0 PH]と暗黙のタグは、エメットの高度なコンボです。括弧は、正確な「スコープ」コントロールを提供します。暗黙のタグを使用すると、最も一般的なタグ名を省略できます。このレッスンの後、アリスは[YIJIAN 1 PH]グループ化を使用して明確に構造化されたフルページの略語を書き、暗黙のタグを使用してタグ名の入力の30 %をスキップします。管理者リストページ全体のHTML構造は、手書きでコード化された80行から2つの略語行になり、5分間の作業が8秒に短縮されます。
3.グループ化[YIJIAN 0 PH ]:スコープの分離
[YIJIAN 0 PH]は、内部の略語を独立したサブツリーとして扱います。内部で使用される[YIJIAN 1 PH ]、[YIJIAN 2 PH ]、[YIJIAN 3 PH]は外部に漏れません。[YIJIAN 4 PH]要素をグループ外に追加すると、追加位置は最も深いレベルではなく、グループ内の最初の要素を参照します。
###( 1)視覚的比較:グループ化とグループ化されていない
graph TB
subgraph "Without Grouping: div>header>p"
A1[div] --> B1[header]
B1 --> C1[p]
end
subgraph "With Grouping: div>(header>p)+footer"
A2[div] --> B2[header]
A2 --> D2[footer]
B2 --> C2[p]
end
| 略語 | pの位置 | フッターの位置 |
|---|---|---|
| [YIJIAN 0 PH] | ヘッダーの子 | ヘッダーの子( pの兄弟) |
| [YIJIAN 0 PH] | ヘッダーの子 | divの子 (ヘッダーの兄弟) |
キーポイント:[ YIJIAN 0 PH]の重要な機能は、下降チェーンを断ち切ることです。[YIJIAN 1 PH]は、括弧内の降順をカプセル化します。[YIJIAN 2 PH]の外側は、pレベルからではなく、括弧(ここでは、divの内側)の前のコンテキストレベルから再開します。これが、グループ化でヘッダーとフッターが兄弟になる理由です。
4.暗黙のタグ名:コンテキスト認識自動切り替え
暗黙のタグ名は、もう1つの主要なEmmet生産性メカニズムです。親要素のコンテキストでは、タグ名を省略すると、デフォルトは[YIJIAN 0 PH]になりません。代わりに、親に基づいて「合理的な子要素」が推測されます。
| 親要素 | 略語 | 暗黙のタグ | 展開 |
|---|---|---|---|
| [ YIJIAN 0 PH ] | [ YIJIAN 1 PH ] | [ YIJIAN 2 PH ] | [ YIJIAN 3 PH ] |
| [ YIJIAN 0 PH ] | [ YIJIAN 1 PH ] | [ YIJIAN 2 PH ] | [ YIJIAN 3 PH ] |
| [ YIJIAN 0 PH ] | [ YIJIAN 1 PH ] | [ YIJIAN 2 PH ] | [ YIJIAN 3 PH ] |
| [ YIJIAN 0 PH ] | [ YIJIAN 1 PH ] | [ YIJIAN 2 PH ] | [ YIJIAN 3 PH ] |
| [ YIJIAN 0 PH ] | [ YIJIAN 1 PH ] | [ YIJIAN 2 PH ] | [ YIJIAN 3 PH ] |
| [ YIJIAN 0 PH ] | [ YIJIAN 1 PH ] | [ YIJIAN 2 PH ] | [ YIJIAN 3 PH ] |
| [ YIJIAN 0 PH ] | [ YIJIAN 1 PH ] | [ YIJIAN 2 PH ] | [ YIJIAN 3 PH ] |
| [ YIJIAN 0 PH ] | [ YIJIAN 1 PH ] | [ YIJIAN 2 PH ] | [ YIJIAN 3 PH ] |
| [ YIJIAN 0 PH ] | [ YIJIAN 1 PH ] | [ YIJIAN 2 PH ] | [ YIJIAN 3 PH ] |
| その他 | [YIJIAN 0 PH] | [YIJIAN 1 PH] | [YIJIAN 2 PH ](レッスン3ルール) |
ヒント:暗黙的なタグ名は、タグ名が指定されていない場合にのみ適用されます。タグ名([ YIJIAN 0 PH]など)を明示的に記述すると、暗黙のルールはバイパスされ、[YIJIAN 1 PH]のままになります。
(1)一般的な暗黙の比較と明示的な比較
| 構文 | 展開 |
|---|---|
| [YIJIAN 0 PH ](親なし) | [YIJIAN 1 PH ] |
| [YIJIAN 0 PH] | [YIJIAN 1 PH] |
| [YIJIAN 0 PH] | [YIJIAN 1 PH] |
| [YIJIAN 0 PH] | [YIJIAN 1 PH] |
5.実践的な例
次の4つの例は、[YIJIAN 0 PH]と暗黙のタグのコアな組み合わせの使用をカバーしています。公式文書のショーケースの例から、実際の高頻度リスト/テーブルパターンまで。
###▶ 例:基本的なグループ化[YIJIAN 0 PH ](難易度: ★★)
これはEmmetのドキュメントの主な例であり、[YIJIAN 0 PH]がフッターをヘッダーの兄弟にする方法を示しています。
Abbreviation
div>(header>ul>li*2>a)+footer>p
展開先:
<div>
<header>
<ul>
<li><a href=""></a></li>
<li><a href=""></a></li>
</ul>
</header>
<footer>
<p></p>
</footer>
</div>
出力
テキスト
括弧を解析:外部(ヘッダー> ul > li * 2 > a )は、ヘッダーサブツリーを独立したユニットとしてカプセル化します。括弧外の+フッターは、もはや* 2の影響を受けず、ヘッダーの兄弟になります。両方ともdiv. li * 2の子であり、それぞれが暗黙的に1 aを含むヘッダー内に2 liを生成します。括弧なしでは、div > header > ul > li * 2 > a + footer > pは、フッターをヘッダーの兄弟ではなく( ulの内側)の兄弟にします。
###▶ 例:明示的なタグの付いたテーブル[YIJIAN 0 PH ](難易度: ★★)
繰り返し構造におけるグループ化の役割を示す、明示的なtr/td 2 x 3テーブル。
Abbreviation
table>(tr>td*3)*2
展開先:
<table>
<tr>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
</tr>
</table>
出力
テキスト
tr > td * 3は「3つのセルの1行」テンプレートであり、( tr > td * 3 )* 2はこのテンプレートを2回繰り返します。括弧* 2はtd関係から分離されており、それらがなければtr > td * 3 * 2は「td繰り返し3回」と「tr繰り返し2回」として解析され、偶然にも2 x 3を生成するが、意味は不明である。括弧は、構造的な意図を明らかにします。注:この例の短縮版では、暗黙的なタグを使用できます—表> (.row > .cell * 3 )* 2は、入力を少なくして同じ構造に展開されます。
###▶ 例:暗黙のタグ付きリスト[YIJIAN 0 PH ](難易度: ★)
ulコンテキスト内の[YIJIAN 0 PH]は暗黙的に[YIJIAN 1 PH]になり、それぞれ1 aを含む。
Abbreviation
ul>.item*3>a
展開先:
<ul>
<li class="item"><a href=""></a></li>
<li class="item"><a href=""></a></li>
<li class="item"><a href=""></a></li>
</ul>
出力
テキスト
ULコンテキスト内では、[YIJIAN 0 PH]はEmmetによって自動的にliとして推測されます。【YIJIAN 1 PH】3 liを繰り返し、それぞれが1 aビア>を含有する。これは、Emmetの「3項目ナビゲーションメニュー」の最も一般的な略語の1つです。「a要素を繰り返すには、ul >.item * 3 > a * 3 ( liあたり3 a )またはul >(.item > a )* 3 (ユニット全体を3回繰り返す)のいずれかを記述します。かっこなしでは、a * 3は右端のaのみに作用します( liあたり1 aのみ、aは繰り返されません)。
###▶ 例:コンバインドグループ[YIJIAN 0 PH ](難易度: ★★)
ナビゲーション、メインエリア、フッターの1つの省略形のページ全体のスケルトン。すべて同じレベルにあります。
Abbreviation
(nav>ul>li*3)+main+footer
展開先:
<nav>
<ul>
<li></li>
<li></li>
<li></li>
</ul>
</nav>
<main></main>
<footer></footer>
出力
テキスト
構文解析:最外側( nav > ul > li * 3 )は、navサブツリーを独立したユニットにします。かっこの外側の+ mainと+ footerは、nav (グループの最初の要素)にアンカーし、navの兄弟になります。しかし、navには明示的な親がないため、mainとfooterはルートレベルで終了します。これは、ブラウザが[YIJIAN 0 PH]で自動ラップする場合とまったく同じです。ナビゲーションをボディ内に強制するには、略語を[YIJIAN 1 PH]にする必要があります。
6.完全な例:暗黙のバージョンを持つ5 x 3データテーブル
暗黙的なタグ+グループ化+乗算を組み合わせて、5行3列の表を1つの省略形で構築し、「明示的な」構文と「暗黙的な」構文を比較します。
###▶ 例: 5 x 3データテーブル(難易度: ★★)
略語(暗黙のバージョン) :
table>(.row>.cell*3)*5
展開先:
<table>
<tr class="row">
<td class="cell"></td>
<td class="cell"></td>
<td class="cell"></td>
</tr>
<tr class="row">
<td class="cell"></td>
<td class="cell"></td>
<td class="cell"></td>
</tr>
<tr class="row">
<td class="cell"></td>
<td class="cell"></td>
<td class="cell"></td>
</tr>
<tr class="row">
<td class="cell"></td>
<td class="cell"></td>
<td class="cell"></td>
</tr>
<tr class="row">
<td class="cell"></td>
<td class="cell"></td>
<td class="cell"></td>
</tr>
</table>
出力
テキスト QUERY LENGTH LIMIT EXCEEDED. MAX ALLOWED QUERY : 500 CHARS
FAQ
Q :括弧[YIJIAN 0 PH]と括弧[YIJIAN 1 PH]はどのように異なりますか?ブラケットはどこで使用されていますか? A: [YIJIAN 2 PH]はグループ化されています。[YIJIAN 3 PH]は属性です。[YIJIAN 4 PH]は、常に略語構造を区切ります。[YIJIAN 5 PH]は、タグ名(例えば、[YIJIAN 6 PH ])に続き、カスタム属性を追加します。二人は構文的に対立することはありません。一般的な組み合わせは[YIJIAN 7 PH]で、それぞれcolspan属性を持つ5つのtd要素を意味します。
QUERY LENGTH LIMIT EXCEEDED. MAX ALLOWED QUERY : 500 CHARS
Q : ul/table/selectの他に、暗黙のルールを持つ要素はどれですか? A : HTML 5では、暗黙のルールはリスト、テーブル、フォームの3つのカテゴリを中心としています。リスト関連: ul/ol内のli、dl内のdt/dd、内部nav。テーブル関連: thead/tbody/tfoot inside table, tr inside thead/tbody/tfoot, td/th inside tr, omission inside caption.フォーム関連: select内のオプション、datalist内のオプション、fieldset内の凡例。他のすべての親要素コンテキストはデフォルトでdiv.
QUERY LENGTH LIMIT EXCEEDED. MAX ALLOWED QUERY : 500 CHARS
概要
- [YIJIAN 0 PH]はスコープを分離します—内部[YIJIAN 1 PH] [YIJIAN 2 PH] [YIJIAN 3 PH]は外に漏れません
- [YIJIAN 0 PH]かっこの外側の要素は、最も深いレベルではなく、グループの最初の要素を参照します -親コンテキストに基づいた暗黙のタグ名の自動切り替え:[ YIJIAN 0 PH → ][ YIJIAN 1 PH ]、[YIJIAN 2 PH ][ YIJIAN → 3 PH]など。 -「省略タグ名+親コンテキスト」コンボは、入力の30 %を節約します -入れ子の繰り返し(例えば、[YIJIAN 0 PH ])には括弧が必要です。それ以外の場合、[YIJIAN 1 PH]は最も近い要素にのみ作用します -親がul/table/selectのような「セマンティックな親要素」でない場合、暗黙のルールは失敗します。その場合、デフォルトはdivのままです。
エクササイズ
- Basic (難易度: ): ( a ★) 3項目のナビゲーション[YIJIAN 0 PH ];( b )暗黙のタグ[YIJIAN 1 PH]を使用した同じナビゲーション;( c )明示的な[YIJIAN 2 PH]と暗黙の[YIJIAN 3 PH]の両方の形式の2 x 3テーブル—結果を比較する。
- Intermediate (Difficulty :): Design ★★a "tab" structure: HTML containing a ul (3 tab li) and a main containing 3 sections (each section is one content panel). (括弧と暗黙のルールを使用して)単一のEmmet略語を書き、括弧が必要な理由を説明します。
- 課題(難易度: ):括弧グループ★★★化+暗黙のタグ+乗算を組み合わせて、1行を記述して、各製品行に「画像[YIJIAN 0 PH ]、タイトル[YIJIAN 1 PH ]、価格[YIJIAN 2 PH ]、およびカートに追加ボタン[YIJIAN 3 PH]が含まれる「5行x 4列」の製品テーブルを作成します。"2つの等価な略語( 1つは明示的、1つは暗黙的)を書き、どちらが読みやすく、エラーが発生しにくいかを比較します。