HTML Diff
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&gt;article.card&gt;div.card-title{Название товара}+img[src="/images/card-item-1.png"][alt="Товар-1"]+(.card-price&gt;span.price-sum{24 000}+span.price-cur{руб.})+button{Заказать}</p>
5 <blockquote><p>section.cards&gt;article.card&gt;div.card-title{Название товара}+img[src="/images/card-item-1.png"][alt="Товар-1"]+(.card-price&gt;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>&gt;Emmet: Expand Abbreviation</em>и выбрать этот пункт.</li>
8 <li>Выделить всю строку и нажать комбинацию клавиш Ctrl + Shift + P. Во всплывающем окне начать набирать<em>&gt;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-селектор, и именно так и стоит на него смотреть. Мы хотим создать элемент &lt;section&gt; с классом cards.</li>
10 <ul><li>section.cards - очень похоже на CSS-селектор, и именно так и стоит на него смотреть. Мы хотим создать элемент &lt;section&gt; с классом cards.</li>
11 <li>&gt; - символ, как и в CSS, указывает на вложенность. В текущем значении запись section.cards&gt; означает, что все, что указано далее, будет располагаться внутри секции с классом cards.</li>
11 <li>&gt; - символ, как и в CSS, указывает на вложенность. В текущем значении запись section.cards&gt; означает, что все, что указано далее, будет располагаться внутри секции с классом cards.</li>
12 <li>article.card - создаем элемент &lt;article&gt; с классом card.</li>
12 <li>article.card - создаем элемент &lt;article&gt; с классом card.</li>
13 <li>div.card-title - создаем блочный элемент с классом card-title. Здесь есть хитрость: чтобы создать элемент &lt;div&gt;, не обязательно его указывать напрямую. Если не указан тег перед классом, то<em>Emmet</em>по умолчанию создаст элемент &lt;div&gt;. То есть вместо div.card-title можно было указать .card-title.</li>
13 <li>div.card-title - создаем блочный элемент с классом card-title. Здесь есть хитрость: чтобы создать элемент &lt;div&gt;, не обязательно его указывать напрямую. Если не указан тег перед классом, то<em>Emmet</em>по умолчанию создаст элемент &lt;div&gt;. То есть вместо div.card-title можно было указать .card-title.</li>
14 <li>{Название товара} - в фигурных скобках указывается простой текст, который будет помещен внутрь блока.</li>
14 <li>{Название товара} - в фигурных скобках указывается простой текст, который будет помещен внутрь блока.</li>
15 <li>+ - символ сложения означает, что правую часть необходимо расположить<em>рядом</em>с левой, а не внутри нее, как в случае с символом &gt;. Мы хотим расположить картинку рядом с блоком card-title, а не внутри.</li>
15 <li>+ - символ сложения означает, что правую часть необходимо расположить<em>рядом</em>с левой, а не внутри нее, как в случае с символом &gt;. Мы хотим расположить картинку рядом с блоком card-title, а не внутри.</li>
16 <li>img[src="/images/card-item-1.png"][alt="Товар-1"] - создаем элемент &lt;img&gt;. В квадратных скобках указываются атрибуты, которые мы хотим добавить. В данном случае это атрибут src, значением которого является путь до изображения, а второй атрибут alt отвечает за мета-информацию о нашей картинке. Атрибуты можно записывать как по отдельности, так и вместе. Если мы укажем вот такую запись img[src="/images/card-item-1.png" alt="Товар-1"], то результат останется тем же.</li>
16 <li>img[src="/images/card-item-1.png"][alt="Товар-1"] - создаем элемент &lt;img&gt;. В квадратных скобках указываются атрибуты, которые мы хотим добавить. В данном случае это атрибут 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&gt;.logo+nav&gt;ul&gt;li*3</p>
19 <p>header&gt;.logo+nav&gt;ul&gt;li*3</p>
20 <p>Обратите внимание на конструкцию *3 - это в прямом смысле умножение. Мы хотим взять элемент и разметить его три раза.</p>
20 <p>Обратите внимание на конструкцию *3 - это в прямом смысле умножение. Мы хотим взять элемент и разметить его три раза.</p>
21 <p>table&gt;tr*3&gt;td*3</p>
21 <p>table&gt;tr*3&gt;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 начнет счетчик не просто с нуля, а с двух нулей. Первым элементом в таком случае станет &lt;div class="item-001"&gt;&lt;/div&gt;.</li>
27 <ul><li>Если использовать несколько идущих подряд символов $, то столько разрядов в счетчике и будет. Например, div.item-$$$*3 начнет счетчик не просто с нуля, а с двух нулей. Первым элементом в таком случае станет &lt;div class="item-001"&gt;&lt;/div&gt;.</li>
28 <li>Счетчик можно начать с любого произвольного числа. Для этого используется символ @, после которого идет начальное число. Например, div.item-$@5*3 начнет счетчик с числа пять. Первым элементом станет &lt;div class="item-5"&gt;&lt;/div&gt;.</li>
28 <li>Счетчик можно начать с любого произвольного числа. Для этого используется символ @, после которого идет начальное число. Например, div.item-$@5*3 начнет счетчик с числа пять. Первым элементом станет &lt;div class="item-5"&gt;&lt;/div&gt;.</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>