3
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Emmet で HTML を手早く書こう

Last updated at Posted at 2021-01-31

はじめに

HTML を素直に書こうとすると、小なり(<)大なり(>)を打ったり閉じタグを付けたりと面倒ですよね。
そこで覚えておくと便利なのがEmmetです。
Emmet のドキュメントには以下のように書かれています。

Basically, most text editors out there allow you to store and re-use commonly used code chunks, called “snippets”. While snippets are a good way to boost your productivity, all implementations have common pitfalls: you have to define the snippet first and you can’t extend them in runtime.

Emmet takes the snippets idea to a whole new level: you can type CSS-like expressions that can be dynamically parsed, and produce output depending on what you type in the abbreviation. Emmet is developed and optimised for web-developers whose workflow depends on HTML/XML and CSS, but can be used with programming languages too.

※以下、Google 先生による日本語訳

基本的に、そこにあるほとんどのテキストエディタでは、「スニペット」と呼ばれる一般的に使用されるコードチャンクを保存して再利用できます。スニペットは生産性を高めるための良い方法ですが、すべての実装には共通の落とし穴があります。最初にスニペットを定義する必要があり、実行時にそれらを拡張することはできません。

Emmetはスニペットのアイデアをまったく新しいレベルに引き上げます。動的に解析できるCSSのような式を入力し、省略形に入力した内容に応じて出力を生成できます。Emmetは、ワークフローがHTML / XMLおよびCSSに依存するWeb開発者向けに開発および最適化されていますが、プログラミング言語でも使用できます。

なにやら難しいことが書かれていますが、大雑把な理解としてEmmetはHTML、CSS、XMLに利用できるスニペットと覚えておけばいいでしょう。

私はエディタに VSCode を使っていますが、VSCode だとデフォルトで Emmet を利用できるようです。
実際便利なのですが、いざ利用しようと思うとぱっと出てこなくて困ります。

というわけで、Emmet を簡単にまとめたいと思います。
HTML(XML)と CSS ではだいぶ記法が異なるようなので、今回は HTML に関するものをまとめていきます。

本記事に含まれるもの

  • HTML(XML)を記述するときに利用できる Emmet

本記事に含まれないもの

  • CSS を記述するときに利用できる Emmet

今回参考にした資料

Emmet Documentation

各操作の説明

要素の作成

要素名を記述すればそのまま開始タグ・閉じタグにしてくれます。

Emmet
html
div
p
HTML
<html></html>
<div></div>
<p></p>

要素の入れ子

>を使うことで要素の入れ子を表すことができます。

Emmet
div>div>p
HTML
<div>
  <div>
    <p></p>
  </div>
</div>

要素の並列

+を使うと要素を並べることができます。

Emmet
p+p+p
HTML
<p></p>
<p></p>
<p></p>

もちろん>と合わせて利用できます。

Emmet
div>ul>li+li+li>p
HTML
<div>
  <ul>
    <li></li>
    <li></li>
    <li>
      <p></p>
    </li>
  </ul>
</div>

入れ子を抜ける

^で入れ子から抜けることができます。

Emmet
div>p^div
HTML
<div>
  <p></p>
</div>
<div></div>

^は重ねて使うこともできます。

Emmet
div>ul>li+li^^div>p
HTML
<div>
  <ul>
    <li></li>
    <li></li>
  </ul>
</div>
<div>
  <p></p>
</div>

要素の複製

*で直前の要素を複製することができます。

Emmet
ul>li*5
HTML
<ul>
  <li></li>
  <li></li>
  <li></li>
  <li></li>
  <li></li>
</ul>

要素のグループ化

()で要素をグループ化することができます。
個人的には^を使うよりもわかりやすいと思います。

Emmet
(div>ul>li+li)+div>p
HTML
<div>
  <ul>
    <li></li>
    <li></li>
  </ul>
</div>
<div>
  <p></p>
</div>

*と併せて使うと、複雑な構造も複製できます。

Emmet
ul>(li>p)*3
HTML
<ul>
  <li>
    <p></p>
  </li>
  <li>
    <p></p>
  </li>
  <li>
    <p></p>
  </li>
</ul>

ID とクラスの設定

CSS や JavaScript のセレクタとして、ID には#を、クラスには.をつけることがありますね。
Emmet でも同じ方法で ID とクラスを設定することができます。

Emmet
div#container>div.box
HTML
<div id="container">
  <div class="box"></div>
</div>

属性の設定

[]の中身は属性として認識されます。
複数の属性を記述したい場合はスペースをあけましょう。

Emmet
button[name=hoge value=fuga]
HTML
<button name="hoge" value="fuga"></button>

要素のナンバリング

$を使うと番号を振ることができます。
*と組み合わせれば連番にすることができるようです。

Emmet
div>p.sentence$*3
HTML
<div>
  <p class="sentence1"></p>
  <p class="sentence2"></p>
  <p class="sentence3"></p>
</div>

また、@Nで任意の数値から開始することができるようです。

Emmet
div>a.link$@4*4
HTML
<div>
  <a href="" class="link4"></a>
  <a href="" class="link5"></a>
  <a href="" class="link6"></a>
  <a href="" class="link7"></a>
</div>

他にも@-で降順に並べることもできるようなのですが、比較的新しい機能なのか、手元の VSCode では動作しませんでした。

テキストの記述

テキストは{}で記述することができます。

Emmet
P{これはサンプルテキストです。}
HTML
<P>これはサンプルテキストです。</P>

公式ドキュメントでは、{}divpのような個別の要素として判別される、みたいなことが書かれています。
どういうことかというと、以下のような記述ができるということです。

Emmet
p>{サンプル。リンクは}+a{こちら}

HTML
<p>サンプル。リンクは<a href="">こちら</a></p>

上記では+で並列させたテキスト要素と a タグについて、>を使って p タグに埋め込んでいます。
このように要素として扱えるので、以下のようなこともできます。

Emmet
{1月$日の予定}*5
HTML
1月1日の予定
1月2日の予定
1月3日の予定
1月4日の予定
1月5日の予定

コピペするよりずっと速いですし、HTML 以外にもいろいろと応用が聞きそうですね。

おわりに

そんなわけで、Emmet でした。
クライアントサイドに関わるのであれば HTML とはずっと付き合っていく必要があるでしょう。
Emmet も使えるようになっておくと心強い味方になってくれそうですね。

3
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?