Emmetの基本とチートシート:HTML/CSSの展開結果を確認する

短い記述が階層のある構造に展開される様子を示したイラスト。 Web制作の基本

同じタグを何個も打つのが面倒なら、Emmetの出番です。たとえばli*3からli要素を3個作れます。この記事では、省略記法と展開結果を並べ、最後に「Tabを押しても展開されない」ときの調べ方を説明します。

VS CodeにはEmmetが組み込まれています。まだエディタを用意していない場合は、VS Codeのインストールから進めてください。

Emmetとは何か?

Emmetは、省略記法をHTMLやCSSへ展開する入力補助です。VS Codeには組み込まれているため、基本機能のために別の拡張を入れる必要はありません。短いCSSのような構文(通称「エメット記法」)で記述し、VS Codeではコマンドパレットの「Emmet: Expand Abbreviation」で展開できます。TabやEnterで確定できるかは、候補表示やキーバインドの設定によって異なります。

例:

  • 短縮記法: div.container
  • 展開後のHTML: <div class="container"></div>

繰り返すタグの入力を短くできますが、展開後の階層と属性は自分でも確認します。

Emmetの基本的な使い方

Emmetの記法は、CSSセレクタの書き方と非常によく似ています。

要素の生成

HTMLファイルにタグ名を入力し、コマンドパレットで「Emmet: Expand Abbreviation」を実行します。

  • header → <header></header>
  • footer → <footer></footer>

クラスとIDの付与

.(ドット)でクラスを、#(ハッシュ)でIDを簡単に追加できます。

  • div.main → <div class="main"></div>
  • p#intro → <p id="intro"></p>
  • div#header.container → <div id="header" class="container"></div>

子要素と兄弟要素

  • > (子):子要素を作成します。
  • + (兄弟):同じ階層に兄弟要素を作成します。
  • ul>li →
<ul>
  <li></li>
</ul>
  • h1+p →
<h1></h1>
<p></p>
  • div>h2+p →
<div>
  <h2></h2>
  <p></p>
</div>

複数要素の生成

* (乗算)を使うことで、同じ要素を複数生成できます。

li*3

<li></li>
<li></li>
<li></li>

属性の付与

[] (角括弧)を使って属性を追加します。

  • a[href="#"] → <a href="#"></a>
  • img[src="logo.png" alt="ロゴ"] → <img src="logo.png" alt="ロゴ">

連番の付与

$ (ドルマーク)を使うと、要素に連番を振ることができます。

li.item$*3

<li class="item1"></li>
<li class="item2"></li>
<li class="item3"></li>

Emmetでできること(応用編)

基本の展開を確かめたら、これらの記法を組み合わせて、さらに複数の要素をまとめて展開できます。

複合的なHTML構造の展開

div.wrapper>header.main-header+main.content>ul>li.item$*4

<div class="wrapper">
  <header class="main-header"></header>
  <main class="content">
    <ul>
      <li class="item1"></li>
      <li class="item2"></li>
      <li class="item3"></li>
      <li class="item4"></li>
    </ul>
  </main>
</div>

CSSの展開

EmmetはCSSでも使えます。プロパティの短縮名を入力するだけで、完全なルールに展開されます。

  • m10 → margin: 10px;
  • p20 → padding: 20px;
  • bgc#fff → background-color: #fff;
  • d:f → display: flex;

EmmetのCSS記法は、略語(m for margin)や、値(10 for 10px)の組み合わせで成り立っています。詳細な記法は、Emmetの公式ドキュメントで確認できます。

最初は、よく使う記法を一つだけ

Emmetは、HTMLとCSSの定型の入力を補助する、必要に応じて使える入力補助です。

  • 短縮記法を覚える: >、+、*、$、[]など、基本的な記号を覚えるだけで、ほとんどの構造を生成できます。
  • 反復練習する: 最初のうちは慣れないかもしれませんが、何度も使って体に覚えさせましょう。
  • 公式ドキュメントを活用する: 困ったときはEmmetの公式ドキュメントを調べれば、ほとんどの疑問は解決します。

まずは自分のページで繰り返し入力しているタグを一つ選び、展開前後の階層を比べてみてください。

展開されないときの確認

コマンドでは展開できるのに、Tabではできない場合

まずindex.htmlでul>li*3を入力し、コマンドパレットのEmmet: Expand Abbreviationを実行します。これで展開できるなら、入力した記法よりもTabの設定を調べる段階です。

VS Codeの設定を開き、emmet.triggerExpansionOnTabを検索して有効にします。JSONで管理している場合の設定は次のとおりです。既存のsettings.jsonを丸ごと置き換えず、同じキーがないか確認して追加してください。

{
  "emmet.triggerExpansionOnTab": true
}

コマンドでも展開しない場合は、右下の言語モードがHTMLか、入力位置がHTMLを書ける場所かを先に見ます。設定を増やす前に、別の空のHTMLファイルでも同じ結果か比べると、問題を絞れます。

展開する前のタグの意味はHTMLの基本構造、繰り返す項目を実際に配置する例はギャラリーへ。

補完や整形の道具を整理したい場合は、VS Codeの標準機能と拡張機能の選び方へ進めます。

参考にした公式資料

次に読む記事

HTML/CSSで画像ギャラリーを作る|スマホ対応では、画像を並べ、画面幅に合わせて列数を変える練習ができます。

タイトルとURLをコピーしました