Для удобства работы frontend-разработчиков был разработан плагин Emmet. Он прекрасно встраивается во множество инструментов для разработки и синтаксически не отличается нигде.
Хочу сразу обратить внимание тех, кто только знакомиться с Emmet.
Каждая сокращённая форма записи заканчивается нажатием клавиши "табуляции" (Tab).
И ещё одно предостережение! Следите за положением каретки курсора. Она всегда должна стоять в конце сокращённой формы записи. Только в этом случае Emmet сгенерирует разметку корректно.
Тема получается довольно обширная, поэтому его часть, посвящённую css, для удобства вынесена в сокращённый CSS-синтаксис плагина Emmet
Ну всё, поехали!
Объявление дочернего элемента после родительского через знак ">"
nav>ul>li
- <nav>
- <ul>
- <li></li>
- </ul>
- </nav>
Соединение с использованием знака "+"
div+p+bq
- <div></div>
- <p></p>
- <blockquote></blockquote>
Поместить выше (в дереве HTML) - ^
div+div>p>span+em^bq
В примере ниже мы поднимаем цитату из p и div, в коотором он (p) лежит, на два уровня. Таким образом blockquote разместится каскадно вслед за div, содержащий p.
- <div></div>
- <div>
- <p><span></span><em></em></p>
- <blockquote></blockquote>
- </div>
- <!-- div+div>p>span+em^^bq -->
- <div></div>
- <div>
- <p><span></span><em></em></p>
- </div>
- <blockquote></blockquote>
Группировка с помощью круглых скобок ()
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*3
- <ul>
- <li></li>
- <li></li>
- <li></li>
- </ul>
Работаем с нумерацией, используя $
ul>li.item$*3
- <ul>
- <li class="item1"></li>
- <li class="item2"></li>
- <li class="item3"></li>
- </ul>
- <!-- h$[title=item$]{Header $}*3 -->
- <h1 title="item1">Header 1</h1>
- <h2 title="item2">Header 2</h2>
- <h3 title="item3">Header 3</h3>
- <!-- ul>li.item$$$*3 -->
- <ul>
- <li class="item001"></li>
- <li class="item002"></li>
- <li class="item003"></li>
- </ul>
- <!-- ul>li.item$@-*3 -->
- <ul>
- <li class="item3"></li>
- <li class="item2"></li>
- <li class="item1"></li>
- </ul>
- <!-- ul>li.item$@3*5 -->
- <ul>
- <li class="item3"></li>
- <li class="item4"></li>
- <li class="item5"></li>
- <li class="item6"></li>
- <li class="item7"></li>
- </ul>
Классы и идентификаторы: id и class
#idNmae
для определения идентификатора и .className
для определения класса. Допускается использование вида #idNmae.className
, чтобы определить элементу оба атрибута
Аналогичная ситуация и с присвоением одному элементу сразу нескольких классов .className1.className2
- <div id="header"></div>
- <!-- .title -->
- <div class="title"></div>
- <!-- form#search.wide -->
- <form id="search" class="wide"></form>
- <!-- p.class1.class2.class3 -->
- <p class="class1 class2 class3"></p>
Добавляем HTML-элементу вложенный атрибут, используя квадратные скобки []
p[title="Hello world"]
- <p title="Hello world"></p>
- <!-- td[rowspan=2 colspan=3 title] -->
- <td rowspan="2" colspan="3" title=""></td>
- <!-- [a='value1' b="value2"] -->
- <div a="value1" b="value2"></div>
Добавляем HTML-элементу вложенный текст, используя фигурные скобки {}
a{Click me}
- <a href="">Click me</a>
- <!-- p>{Click }+a{here}+{ to continue} -->
- <p>Click <a href="">here</a> to continue</p>
Сокращаем вызов div с классом "class"
.class
без явного указания тега вернёт div с указанным классом.
- <div class="class"></div>
- <!-- em>.class -->
- <em><span class="class"></span></em>
- <!-- ul>.class -->
- <ul>
- <li class="class"></li>
- </ul>
- <!-- table>.row>.col -->
- <table>
- <tr class="row">
- <td class="col"></td>
- </tr>
- </table>
Генерируем текст-рыбу lorem ipsum ...
.wrapper>h1{My Text}+p*3>lorem5
- <div class="wrapper">
- <h1>My Text</h1>
- <p>Lorem ipsum dolor sit amet.</p>
- <p>Debitis dolorum illo nisi suscipit!</p>
- <p>Animi explicabo libero quis voluptates?</p>
- </div>
Теперь пробежимся по стандартным сокращениям для работы с HTML-тегами
!
, html:5
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8" />
- <title>Document</title>
- </head>
- <body>
- </body>
- </html>
!!!
<!DOCTYPE html>
a
<a href=""></a>
a:link
<a href="http://"></a>
a:mail
<a href="mailto:"></a>
br
<br />
frame
<frame />
link
<link rel="stylesheet" href="" />
link:css
<link rel="stylesheet" href="style.css" />
link:favicon
<link rel="shortcut icon" type="image/x-icon" href="favicon.ico" />
link:rss
<link rel="alternate" type="application/rss+xml" title="RSS" href="rss.xml" />
meta
<meta />
meta:utf
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
meta:win
<meta http-equiv="Content-Type" content="text/html;charset=windows-1251" />
meta:vp
<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0" />
meta:compat
<meta http-equiv="X-UA-Compatible" content="IE=7" />
style
<style></style>
script
<script></script>
script:src
<script src=""></script>
img
<img src="" alt="" />
img:srcset
, img:s
<img srcset="" src="" alt="" />
img:sizes
, img:z
<img sizes="" srcset="" src="" alt="" />
map
<map name=""></map>
form
<form action=""></form>
label
<label for=""></label>
input
<input type="text" />
inp
<input type="text" name="" id="" />
input:text
, input:t
<input type="text" name="" id="" />
input:search
<input type="search" name="" id="" />
input:email
<input type="email" name="" id="" />
input:url
<input type="url" name="" id="" />
input:password
, input:p
<input type="password" name="" id="" />
input:datetime
<input type="datetime" name="" id="" />
input:date
<input type="date" name="" id="" />
input:time
<input type="time" name="" id="" />
input:tel
<input type="tel" name="" id="" />
input:number
<input type="number" name="" id="" />
input:color
<input type="color" name="" id="" />
input:checkbox
, input:c
<input type="checkbox" name="" id="" />
input:radio
, input:r
<input type="radio" name="" id="" />
input:range
<input type="range" name="" id="" />
input:file
, input:f
<input type="file" name="" id="" />
input:submit
, input:s
<input type="submit" value="" />
input:image
, input:i
<input type="image" src="" alt="" />
input:button
, input:b
<input type="button" value="" />
input:reset
<input type="reset" value="" />
select
<select name="" id=""></select>
select:disabled
select:d
<select name="" id="" disabled="disabled"></select>
option
opt
<option value=""></option>
textarea
<textarea name="" id="" cols="30" rows="10"></textarea>
marquee
<marquee behavior="" direction=""></marquee>
menu:context
menu:c
<menu type="context"></menu>
menu:toolbar
menu:t
<menu type="toolbar"></menu>
video
<video src=""></video>
audio
<audio src=""></audio>
html:xml
<html xmlns="http://www.w3.org/1999/xhtml"></html>
keygen
<keygen />
command
<command />
button:submit
, button:s
, btn:s
<button type="submit"></button>
button:reset
, button:r
, btn:r
<button type="reset"></button>
button:disabled
, button:d
, btn:d
<button disabled="disabled"></button>
bq
<blockquote></blockquote>
fig
<figure></figure>
figc
<figcaption></figcaption>
pic
<picture></picture>
ifr
<iframe src="" frameborder="0"></iframe>
emb
<embed src="" type="" />
obj
<object data="" type=""></object>
cap
<caption></caption>
colg
<colgroup></colgroup>
fst
, fset
<fieldset></fieldset>
btn
<button></button>
optg
<optgroup></optgroup>
tarea
<textarea name="" id="" cols="30" rows="10"></textarea>
leg
<legend></legend>
sect
<section></section>
art
<article></article>
hdr
<header></header>
ftr
<footer></footer>
adr
<address></address>
dlg
<dialog></dialog>
str
<strong></strong>
prog
<progress></progress>
mn
<main></main>
tem
<template></template>
datag
<datagrid></datagrid>
datal
<datalist></datalist>
kg
<keygen />
out
<output></output>
det
<details></details>
cmd
<command />
ol+
<ol><li></li></ol>
ul+
<ul><li></li></ul>
dl+
- <dl>
- <dt></dt>
- <dd></dd>
- </dl>
map+
- <map name="">
- <area shape="" coords="" href="" alt="" />
- </map>
table+
- <table>
- <tr>
- <td>
- </td>
- </tr>
- </table>
colgroup+
, colg+
<colgroup><col /></colgroup>
tr+
- <tr>
- <td></td>
- </tr>
select+
- <select name="" id="">
- <option value=""></option>
- </select>
optgroup+
optg+
- <optgroup>
- <option value=""></option>
- </optgroup>
pic+
- <picture>
- <source srcset="" />
- <img src="" alt="" />
- </picture>