0 added
0 removed
Original
2026-01-01
Modified
2026-02-26
1
<p>Если вы работаете с редактором<em>Visual Studio Code</em>, то плагин<em>Emmet</em>уже установлен в редакторе. В прошлом уроке вы также могли увидеть его работу при создании базовой структуры HTML-документа. Если вы пользуетесь другим редактором, то можете установить<em>Emmet</em>с помощью любой доступной инструкции. Этот плагин настолько популярен, что при желании, наверное, можно найти инструкцию по его установке на кофемолку.</p>
1
<p>Если вы работаете с редактором<em>Visual Studio Code</em>, то плагин<em>Emmet</em>уже установлен в редакторе. В прошлом уроке вы также могли увидеть его работу при создании базовой структуры HTML-документа. Если вы пользуетесь другим редактором, то можете установить<em>Emmet</em>с помощью любой доступной инструкции. Этот плагин настолько популярен, что при желании, наверное, можно найти инструкцию по его установке на кофемолку.</p>
2
<p>Что же такое<em>Emmet</em>и зачем он нужен? Попробуем разметить воображаемую карточку товара интернет-магазина. Что нам может понадобиться? Обрамляющий блок, название товара, его картинка, блок с ценой, кнопка "Заказать". Вроде не так много. Добавим карточку и расположим ее внутри секции с классом cards. Попробуем это преобразовать в HTML. Мы получим примерно следующую структуру:</p>
2
<p>Что же такое<em>Emmet</em>и зачем он нужен? Попробуем разметить воображаемую карточку товара интернет-магазина. Что нам может понадобиться? Обрамляющий блок, название товара, его картинка, блок с ценой, кнопка "Заказать". Вроде не так много. Добавим карточку и расположим ее внутри секции с классом cards. Попробуем это преобразовать в HTML. Мы получим примерно следующую структуру:</p>
3
<p>Не самая сложная разметка, при этом в ней достаточно много разных элементов. Попробуйте повторить эту разметку сами, и вы увидите, что это отнимает достаточно много времени, хотя мы заранее знали, какие элементы будут нужны, и представляли это в голове. В итоге получается, что вместо верстки других элементов мы просто вводили корректные символы и старались следить за тем, что все блочные элементы будут закрыты.</p>
3
<p>Не самая сложная разметка, при этом в ней достаточно много разных элементов. Попробуйте повторить эту разметку сами, и вы увидите, что это отнимает достаточно много времени, хотя мы заранее знали, какие элементы будут нужны, и представляли это в голове. В итоге получается, что вместо верстки других элементов мы просто вводили корректные символы и старались следить за тем, что все блочные элементы будут закрыты.</p>
4
<p>На самом деле этот пример был сверcтан всего одной строкой. Изначально она вас может напугать, но к концу урока вы поймете каждый символ, который в ней есть. Строка выглядит следующим образом:</p>
4
<p>На самом деле этот пример был сверcтан всего одной строкой. Изначально она вас может напугать, но к концу урока вы поймете каждый символ, который в ней есть. Строка выглядит следующим образом:</p>
5
<blockquote><p>section.cards>article.card>div.card-title{Название товара}+img[src="/images/card-item-1.png"][alt="Товар-1"]+(.card-price>span.price-sum{24 000}+span.price-cur{руб.})+button{Заказать}</p>
5
<blockquote><p>section.cards>article.card>div.card-title{Название товара}+img[src="/images/card-item-1.png"][alt="Товар-1"]+(.card-price>span.price-sum{24 000}+span.price-cur{руб.})+button{Заказать}</p>
6
</blockquote><p>Вот здесь и вступает в игру плагин<em>Emmet</em>. Он берет эту строку и преобразует ее в HTML, который вы видели выше. Чтобы плагин преобразовал строку в HTML, можно пойти одним из двух путей:</p>
6
</blockquote><p>Вот здесь и вступает в игру плагин<em>Emmet</em>. Он берет эту строку и преобразует ее в HTML, который вы видели выше. Чтобы плагин преобразовал строку в HTML, можно пойти одним из двух путей:</p>
7
<ol><li>В самом конце набора строки<em>Visual Studio Code</em>сам вам предложит ее преобразовать. Вам нужно только нажать<em>Enter</em>, когда на экране есть всплывающая подсказка.</li>
7
<ol><li>В самом конце набора строки<em>Visual Studio Code</em>сам вам предложит ее преобразовать. Вам нужно только нажать<em>Enter</em>, когда на экране есть всплывающая подсказка.</li>
8
<li>Выделить всю строку и нажать комбинацию клавиш Ctrl + Shift + P. Во всплывающем окне начать набирать<em>>Emmet: Expand Abbreviation</em>и выбрать этот пункт.</li>
8
<li>Выделить всю строку и нажать комбинацию клавиш Ctrl + Shift + P. Во всплывающем окне начать набирать<em>>Emmet: Expand Abbreviation</em>и выбрать этот пункт.</li>
9
</ol><p>189 символов против 877. Серьезный результат. И это различие будет только расти по мере того, насколько большую верстку вы хотите сделать. Вполне нормально, если полтысячи символов, с помощью<em>Emmet</em>, создадут вам структуру целой страницы.<em>Emmet</em>- мощный инструмент, который позволяет ускорить разметку HTML-кода. Плагин позволяет снять бóльшую часть рутинных действий, от которых хочется спать. Пройдемся с самого начала строки и разберем все, что здесь происходит:</p>
9
</ol><p>189 символов против 877. Серьезный результат. И это различие будет только расти по мере того, насколько большую верстку вы хотите сделать. Вполне нормально, если полтысячи символов, с помощью<em>Emmet</em>, создадут вам структуру целой страницы.<em>Emmet</em>- мощный инструмент, который позволяет ускорить разметку HTML-кода. Плагин позволяет снять бóльшую часть рутинных действий, от которых хочется спать. Пройдемся с самого начала строки и разберем все, что здесь происходит:</p>
10
<ul><li>section.cards - очень похоже на CSS-селектор, и именно так и стоит на него смотреть. Мы хотим создать элемент <section> с классом cards.</li>
10
<ul><li>section.cards - очень похоже на CSS-селектор, и именно так и стоит на него смотреть. Мы хотим создать элемент <section> с классом cards.</li>
11
<li>> - символ, как и в CSS, указывает на вложенность. В текущем значении запись section.cards> означает, что все, что указано далее, будет располагаться внутри секции с классом cards.</li>
11
<li>> - символ, как и в CSS, указывает на вложенность. В текущем значении запись section.cards> означает, что все, что указано далее, будет располагаться внутри секции с классом cards.</li>
12
<li>article.card - создаем элемент <article> с классом card.</li>
12
<li>article.card - создаем элемент <article> с классом card.</li>
13
<li>div.card-title - создаем блочный элемент с классом card-title. Здесь есть хитрость: чтобы создать элемент <div>, не обязательно его указывать напрямую. Если не указан тег перед классом, то<em>Emmet</em>по умолчанию создаст элемент <div>. То есть вместо div.card-title можно было указать .card-title.</li>
13
<li>div.card-title - создаем блочный элемент с классом card-title. Здесь есть хитрость: чтобы создать элемент <div>, не обязательно его указывать напрямую. Если не указан тег перед классом, то<em>Emmet</em>по умолчанию создаст элемент <div>. То есть вместо div.card-title можно было указать .card-title.</li>
14
<li>{Название товара} - в фигурных скобках указывается простой текст, который будет помещен внутрь блока.</li>
14
<li>{Название товара} - в фигурных скобках указывается простой текст, который будет помещен внутрь блока.</li>
15
<li>+ - символ сложения означает, что правую часть необходимо расположить<em>рядом</em>с левой, а не внутри нее, как в случае с символом >. Мы хотим расположить картинку рядом с блоком card-title, а не внутри.</li>
15
<li>+ - символ сложения означает, что правую часть необходимо расположить<em>рядом</em>с левой, а не внутри нее, как в случае с символом >. Мы хотим расположить картинку рядом с блоком card-title, а не внутри.</li>
16
<li>img[src="/images/card-item-1.png"][alt="Товар-1"] - создаем элемент <img>. В квадратных скобках указываются атрибуты, которые мы хотим добавить. В данном случае это атрибут src, значением которого является путь до изображения, а второй атрибут alt отвечает за мета-информацию о нашей картинке. Атрибуты можно записывать как по отдельности, так и вместе. Если мы укажем вот такую запись img[src="/images/card-item-1.png" alt="Товар-1"], то результат останется тем же.</li>
16
<li>img[src="/images/card-item-1.png"][alt="Товар-1"] - создаем элемент <img>. В квадратных скобках указываются атрибуты, которые мы хотим добавить. В данном случае это атрибут src, значением которого является путь до изображения, а второй атрибут alt отвечает за мета-информацию о нашей картинке. Атрибуты можно записывать как по отдельности, так и вместе. Если мы укажем вот такую запись img[src="/images/card-item-1.png" alt="Товар-1"], то результат останется тем же.</li>
17
<li>() - скобки позволяют группировать информацию. В данном случае мы хотим, чтобы все, что внутри скобок, располагалось рядом с картинкой, созданной в прошлом пункте.</li>
17
<li>() - скобки позволяют группировать информацию. В данном случае мы хотим, чтобы все, что внутри скобок, располагалось рядом с картинкой, созданной в прошлом пункте.</li>
18
</ul><p>Все, что происходит дальше, вы уже знаете благодаря предыдущим пунктам. Как видите,<em>Emmet</em>достаточно интересный инструмент. И не настолько сложный, как может показаться с самого начала. Вот еще несколько примеров разных строк и результатов преобразования с помощью<em>Emmet</em>:</p>
18
</ul><p>Все, что происходит дальше, вы уже знаете благодаря предыдущим пунктам. Как видите,<em>Emmet</em>достаточно интересный инструмент. И не настолько сложный, как может показаться с самого начала. Вот еще несколько примеров разных строк и результатов преобразования с помощью<em>Emmet</em>:</p>
19
<p>header>.logo+nav>ul>li*3</p>
19
<p>header>.logo+nav>ul>li*3</p>
20
<p>Обратите внимание на конструкцию *3 - это в прямом смысле умножение. Мы хотим взять элемент и разметить его три раза.</p>
20
<p>Обратите внимание на конструкцию *3 - это в прямом смысле умножение. Мы хотим взять элемент и разметить его три раза.</p>
21
<p>table>tr*3>td*3</p>
21
<p>table>tr*3>td*3</p>
22
<p>Никогда еще создание таблиц не было таким простым делом :)</p>
22
<p>Никогда еще создание таблиц не было таким простым делом :)</p>
23
<p>header+main+footer</p>
23
<p>header+main+footer</p>
24
<p>А вот и простой способ добавить основные теги в вашу страницу.</p>
24
<p>А вот и простой способ добавить основные теги в вашу страницу.</p>
25
<p>div.item-$*3</p>
25
<p>div.item-$*3</p>
26
<p>Символ $ в<em>Emmet</em>является счетчиком. При разворачивании такой строчки все символы $ заменяются на числа от 1 с шагом единица. Есть несколько дополнительных конструкций, которые позволяют расширить данный счетчик:</p>
26
<p>Символ $ в<em>Emmet</em>является счетчиком. При разворачивании такой строчки все символы $ заменяются на числа от 1 с шагом единица. Есть несколько дополнительных конструкций, которые позволяют расширить данный счетчик:</p>
27
<ul><li>Если использовать несколько идущих подряд символов $, то столько разрядов в счетчике и будет. Например, div.item-$$$*3 начнет счетчик не просто с нуля, а с двух нулей. Первым элементом в таком случае станет <div class="item-001"></div>.</li>
27
<ul><li>Если использовать несколько идущих подряд символов $, то столько разрядов в счетчике и будет. Например, div.item-$$$*3 начнет счетчик не просто с нуля, а с двух нулей. Первым элементом в таком случае станет <div class="item-001"></div>.</li>
28
<li>Счетчик можно начать с любого произвольного числа. Для этого используется символ @, после которого идет начальное число. Например, div.item-$@5*3 начнет счетчик с числа пять. Первым элементом станет <div class="item-5"></div>.</li>
28
<li>Счетчик можно начать с любого произвольного числа. Для этого используется символ @, после которого идет начальное число. Например, div.item-$@5*3 начнет счетчик с числа пять. Первым элементом станет <div class="item-5"></div>.</li>
29
</ul><p>Счетчик можно использовать внутри конструкции {}:</p>
29
</ul><p>Счетчик можно использовать внутри конструкции {}:</p>
30
<p>div.item{Работа номер $}*3</p>
30
<p>div.item{Работа номер $}*3</p>
31
<p>Это базовые вещи, которые помогут вам сократить время написания разметки.<em>Emmet</em>куда более мощный инструмент, но этих возможностей вам хватит надолго. Помимо этого он умеет работать с CSS. Там он больше нужен для выписывания сокращений. Вы можете попробовать создать любой CSS-файл и начать набирать свойства. Все, что предложит вам<em>Visual Studio Code</em>, работает и с<em>Emmet</em>.</p>
31
<p>Это базовые вещи, которые помогут вам сократить время написания разметки.<em>Emmet</em>куда более мощный инструмент, но этих возможностей вам хватит надолго. Помимо этого он умеет работать с CSS. Там он больше нужен для выписывания сокращений. Вы можете попробовать создать любой CSS-файл и начать набирать свойства. Все, что предложит вам<em>Visual Studio Code</em>, работает и с<em>Emmet</em>.</p>