0 added
0 removed
Original
2026-01-01
Modified
2026-02-26
1
<p>Практически каждый веб-разработчик регулярно или время от времени работает с вёрсткой. Эта статья для начинающих верстальщиков и будущих программистов. В ней вы найдёте несколько необычных и редких инструментов и приёмов HTML/CSS.</p>
1
<p>Практически каждый веб-разработчик регулярно или время от времени работает с вёрсткой. Эта статья для начинающих верстальщиков и будущих программистов. В ней вы найдёте несколько необычных и редких инструментов и приёмов HTML/CSS.</p>
2
<h2>Содержание</h2>
2
<h2>Содержание</h2>
3
<ul><li><a>1. Фреймворк NES.css</a></li>
3
<ul><li><a>1. Фреймворк NES.css</a></li>
4
<li><a>2. Сироты и вдовы в CSS (orphans and widows CSS)</a></li>
4
<li><a>2. Сироты и вдовы в CSS (orphans and widows CSS)</a></li>
5
<li><a>3. Селекторы атрибутов</a></li>
5
<li><a>3. Селекторы атрибутов</a></li>
6
<li><a>4. Свойство border-image</a></li>
6
<li><a>4. Свойство border-image</a></li>
7
<li><a>5. List-style-image vs. background-image (добавляем изображения в качестве маркеров списка)</a></li>
7
<li><a>5. List-style-image vs. background-image (добавляем изображения в качестве маркеров списка)</a></li>
8
<li><a>6. Добавляем расшифровку аббревиатуры</a></li>
8
<li><a>6. Добавляем расшифровку аббревиатуры</a></li>
9
<li><a>7. Трансформация изображений</a></li>
9
<li><a>7. Трансформация изображений</a></li>
10
</ul><h2>1. Фреймворк NES.css</h2>
10
</ul><h2>1. Фреймворк NES.css</h2>
11
<p>Дети 90-х с ностальгией вспоминают 8-битную графику игр из консолей Nintendo. Видимо, японскому разработчику B.C.Rikko не хватает игрушек из прошлого. Он создал CSS-фреймворк NES.css, с помощью которого каждый желающий может стилизовать сайт или отдельную страницу под винтажную графику.</p>
11
<p>Дети 90-х с ностальгией вспоминают 8-битную графику игр из консолей Nintendo. Видимо, японскому разработчику B.C.Rikko не хватает игрушек из прошлого. Он создал CSS-фреймворк NES.css, с помощью которого каждый желающий может стилизовать сайт или отдельную страницу под винтажную графику.</p>
12
<p>Сложно представить деловой сайт с оформлением в стиле Nintendo. Тем не менее в фреймворке NES.css есть минимальный набор компонентов и инструментов, необходимых для создания полноценной страницы. Вот некоторые инструменты и возможности фреймворка:</p>
12
<p>Сложно представить деловой сайт с оформлением в стиле Nintendo. Тем не менее в фреймворке NES.css есть минимальный набор компонентов и инструментов, необходимых для создания полноценной страницы. Вот некоторые инструменты и возможности фреймворка:</p>
13
<ul><li>Классы для оформления текста.</li>
13
<ul><li>Классы для оформления текста.</li>
14
<li>Кнопки.</li>
14
<li>Кнопки.</li>
15
<li>Селекторы (радио и выпадающие), чекбоксы.</li>
15
<li>Селекторы (радио и выпадающие), чекбоксы.</li>
16
<li>Несколько вариантов полей для ввода (инпутов).</li>
16
<li>Несколько вариантов полей для ввода (инпутов).</li>
17
<li>Контейнеры для оформления разделов страниц.</li>
17
<li>Контейнеры для оформления разделов страниц.</li>
18
<li>Списки и таблицы.</li>
18
<li>Списки и таблицы.</li>
19
<li>Индикаторы прогресса (прогресс-бары).</li>
19
<li>Индикаторы прогресса (прогресс-бары).</li>
20
<li>Значки, иконки.</li>
20
<li>Значки, иконки.</li>
21
<li>Персонажи игр Nintendo.</li>
21
<li>Персонажи игр Nintendo.</li>
22
</ul><p>Обратите внимание, в фреймворке есть компоненты, но нет модульной сетки. Ее можно<a>определить самостоятельно</a>. Также можно воспользоваться любым готовым решением.</p>
22
</ul><p>Обратите внимание, в фреймворке есть компоненты, но нет модульной сетки. Ее можно<a>определить самостоятельно</a>. Также можно воспользоваться любым готовым решением.</p>
23
<p>Фреймворк NES.css можно подключить к проекту с помощью npm или Yarn, а также через CDN. Подробную информацию смотрите в<a>репозитории фреймворка</a>на GitHub.</p>
23
<p>Фреймворк NES.css можно подключить к проекту с помощью npm или Yarn, а также через CDN. Подробную информацию смотрите в<a>репозитории фреймворка</a>на GitHub.</p>
24
<h2>2. Сироты и вдовы в CSS (orphans and widows CSS)</h2>
24
<h2>2. Сироты и вдовы в CSS (orphans and widows CSS)</h2>
25
<p>Понятия "сироты" и "вдовы" пришло в CSS из типографской практики. Сирота - строка абзаца, которая перенеслась на новую страницу или колонку. Вдова - слово или строка из нескольких слов в конце страницы. Сироты и вдовы также называют висячими строками. Пример можно увидеть на иллюстрации.</p>
25
<p>Понятия "сироты" и "вдовы" пришло в CSS из типографской практики. Сирота - строка абзаца, которая перенеслась на новую страницу или колонку. Вдова - слово или строка из нескольких слов в конце страницы. Сироты и вдовы также называют висячими строками. Пример можно увидеть на иллюстрации.</p>
26
<p>Сироты и вдовы ухудшают читабельность текста и уменьшают визуальную привлекательность страницы. В вебе проблема сирот и вдов решается с помощью CSS-свойств orphans и widows.</p>
26
<p>Сироты и вдовы ухудшают читабельность текста и уменьшают визуальную привлекательность страницы. В вебе проблема сирот и вдов решается с помощью CSS-свойств orphans и widows.</p>
27
<p>Свойство orphans применяется к блочным элементам, например, p или div. Определяет количество строк абзаца, которые должны остаться на предыдущей странице.</p>
27
<p>Свойство orphans применяется к блочным элементам, например, p или div. Определяет количество строк абзаца, которые должны остаться на предыдущей странице.</p>
28
<p>Свойство widows также применяется к блочным элементам. Определяет количество строк абзаца, которые переносятся на новую страницу.</p>
28
<p>Свойство widows также применяется к блочным элементам. Определяет количество строк абзаца, которые переносятся на новую страницу.</p>
29
<p>Обратите внимание, Firefox не поддерживает свойства orphans и widows. Поддержку в других браузерах можно проверить с помощью сервиса Can I use:<a>orphans</a>и<a>widows</a>. Свойства orphans и widows входят в число<a>Paged media</a>, которые определяют внешний вид веб-страницы для печати.</p>
29
<p>Обратите внимание, Firefox не поддерживает свойства orphans и widows. Поддержку в других браузерах можно проверить с помощью сервиса Can I use:<a>orphans</a>и<a>widows</a>. Свойства orphans и widows входят в число<a>Paged media</a>, которые определяют внешний вид веб-страницы для печати.</p>
30
<h2>3. Селекторы атрибутов</h2>
30
<h2>3. Селекторы атрибутов</h2>
31
<p>Почти все начинающие верстальщики знают, что к элементам можно обращаться через классы, идентификаторы и теги. Опытные специалисты применяют ещё и селекторы атрибутов.</p>
31
<p>Почти все начинающие верстальщики знают, что к элементам можно обращаться через классы, идентификаторы и теги. Опытные специалисты применяют ещё и селекторы атрибутов.</p>
32
<p>Очень простой практический пример: с помощью селектора по атрибуту можно выделить на сайте все страницы с пустым атрибутом alt.</p>
32
<p>Очень простой практический пример: с помощью селектора по атрибуту можно выделить на сайте все страницы с пустым атрибутом alt.</p>
33
<p>Это может пригодиться для внутренней оптимизации сайта: быстрого поиска фото с незаполненным атрибутом alt.</p>
33
<p>Это может пригодиться для внутренней оптимизации сайта: быстрого поиска фото с незаполненным атрибутом alt.</p>
34
<p>Вот пара практических примеров использования. С помощью селектора по атрибуту href можно произвольно оформлять ссылки на конкретные сайты или страницы. Например, выделим ссылку красным цветом.</p>
34
<p>Вот пара практических примеров использования. С помощью селектора по атрибуту href можно произвольно оформлять ссылки на конкретные сайты или страницы. Например, выделим ссылку красным цветом.</p>
35
<p>Селекторы атрибутов удобно использовать для управления инпутами. Сделаем жёлтый фон в поле для ввода текста.</p>
35
<p>Селекторы атрибутов удобно использовать для управления инпутами. Сделаем жёлтый фон в поле для ввода текста.</p>
36
<h2>4. Свойство border-image</h2>
36
<h2>4. Свойство border-image</h2>
37
<p>С помощью свойства border-image можно задать рамку элемента, в которой будет отображаться изображение.</p>
37
<p>С помощью свойства border-image можно задать рамку элемента, в которой будет отображаться изображение.</p>
38
<p>Синтаксис такой:</p>
38
<p>Синтаксис такой:</p>
39
<p>Свойство border задает рамку, которая будет отображаться, если изображения нет или его невозможно загрузить. Свойство border-image-source определяет источник изображения рамки. В нем можно указать URL изображения или CSS-градиент.</p>
39
<p>Свойство border задает рамку, которая будет отображаться, если изображения нет или его невозможно загрузить. Свойство border-image-source определяет источник изображения рамки. В нем можно указать URL изображения или CSS-градиент.</p>
40
<p>Остальные свойства необязательные:</p>
40
<p>Остальные свойства необязательные:</p>
41
<ul><li>border-image-slice определяет смещение изображения в рамке.</li>
41
<ul><li>border-image-slice определяет смещение изображения в рамке.</li>
42
<li>border-image-width управляет толщиной рамки.</li>
42
<li>border-image-width управляет толщиной рамки.</li>
43
<li>border-image-outset позволяет сдвинуть рамку за пределы элемента.</li>
43
<li>border-image-outset позволяет сдвинуть рамку за пределы элемента.</li>
44
<li>border-image-repeat контролирует повторение изображения в рамке.</li>
44
<li>border-image-repeat контролирует повторение изображения в рамке.</li>
45
</ul><p>Чтобы сделать градиентную рамку, укажите градиент в свойстве border-image-source.</p>
45
</ul><p>Чтобы сделать градиентную рамку, укажите градиент в свойстве border-image-source.</p>
46
<p>Свойство border-image поддерживают<a>основные современные браузеры</a>. Подробнее об использовании свойства читайте<a>в справочнике MDN</a>.</p>
46
<p>Свойство border-image поддерживают<a>основные современные браузеры</a>. Подробнее об использовании свойства читайте<a>в справочнике MDN</a>.</p>
47
<h2>5. List-style-image vs. background-image (добавляем изображения в качестве маркеров списка)</h2>
47
<h2>5. List-style-image vs. background-image (добавляем изображения в качестве маркеров списка)</h2>
48
<p>Задать изображение в качестве маркера списка можно с помощью свойства list-style-image.</p>
48
<p>Задать изображение в качестве маркера списка можно с помощью свойства list-style-image.</p>
49
<p>Но при таком подходе появляется проблема: маркеры вертикально смещаются относительно элементов списка.</p>
49
<p>Но при таком подходе появляется проблема: маркеры вертикально смещаются относительно элементов списка.</p>
50
<p>Выравнивание с помощью vertical-align в этом случае не работает. Поэтому изображения в качестве маркеров списка удобнее задавать с помощью background-image.</p>
50
<p>Выравнивание с помощью vertical-align в этом случае не работает. Поэтому изображения в качестве маркеров списка удобнее задавать с помощью background-image.</p>
51
<p>Сначала обнуляем отображение маркеров.</p>
51
<p>Сначала обнуляем отображение маркеров.</p>
52
<p>Теперь добавляем фоновое изображение к элементам списка.</p>
52
<p>Теперь добавляем фоновое изображение к элементам списка.</p>
53
<p>В свойстве background-image указан URL изображения, свойство background-repeat в данном случае отменяет повторение фонового изображения. Свойство line-height задает высоту строки. Этот показатель должен коррелировать с размером фонового изображения. Свойство padding-left позиционирует текст относительно фонового изображения.</p>
53
<p>В свойстве background-image указан URL изображения, свойство background-repeat в данном случае отменяет повторение фонового изображения. Свойство line-height задает высоту строки. Этот показатель должен коррелировать с размером фонового изображения. Свойство padding-left позиционирует текст относительно фонового изображения.</p>
54
<h2>6. Добавляем расшифровку аббревиатуры</h2>
54
<h2>6. Добавляем расшифровку аббревиатуры</h2>
55
<p>Очень простой инструмент, с помощью которого удобно расшифровывать акронимы и аббревиатуры в тексте.</p>
55
<p>Очень простой инструмент, с помощью которого удобно расшифровывать акронимы и аббревиатуры в тексте.</p>
56
<p>Справка: аббревиатура - слово, образованное из первых букв нескольких слов, например, США; акроним - вид аббревиатуры, который произносится слитно, а не по буквам, например, комсомол. Задать расшифровку для аббревиатуры можно с помощью тега abbr.</p>
56
<p>Справка: аббревиатура - слово, образованное из первых букв нескольких слов, например, США; акроним - вид аббревиатуры, который произносится слитно, а не по буквам, например, комсомол. Задать расшифровку для аббревиатуры можно с помощью тега abbr.</p>
57
<p>Тег добавляет к тексту подсказку, которая всплывает при наведении курсора.</p>
57
<p>Тег добавляет к тексту подсказку, которая всплывает при наведении курсора.</p>
58
<p>Точно так же работает тег acronym. Но он считается устаревшим, поэтому поддержка во всех браузерах не гарантируется. Предпочтительно всегда использовать тег abbr.</p>
58
<p>Точно так же работает тег acronym. Но он считается устаревшим, поэтому поддержка во всех браузерах не гарантируется. Предпочтительно всегда использовать тег abbr.</p>
59
<h2>7. Трансформация изображений</h2>
59
<h2>7. Трансформация изображений</h2>
60
<p>Свойство transform применяется к разным элементам страницы. Но чаще всего его используют для работы с изображениями. Например, transform: rotate() позволяет повернуть фотографию. Это может потребоваться при верстке сложных макетов.</p>
60
<p>Свойство transform применяется к разным элементам страницы. Но чаще всего его используют для работы с изображениями. Например, transform: rotate() позволяет повернуть фотографию. Это может потребоваться при верстке сложных макетов.</p>
61
<p>Свойство transform: skewX() наклоняет изображение на заданный градус по вертикали.</p>
61
<p>Свойство transform: skewX() наклоняет изображение на заданный градус по вертикали.</p>
62
<p>Свойство transform: skewY() наклоняет изображение на заданный градус по горизонтали.</p>
62
<p>Свойство transform: skewY() наклоняет изображение на заданный градус по горизонтали.</p>
63
<p>Свойства transform: translateX() и transform: translateY() сдвигают изображение на заданное число пикселей по вертикали и горизонтали.</p>
63
<p>Свойства transform: translateX() и transform: translateY() сдвигают изображение на заданное число пикселей по вертикали и горизонтали.</p>
64
<p>Современные браузеры<a>поддерживают свойство transform</a>. Подробную документацию смотрите<a>в справочнике MDN</a>.</p>
64
<p>Современные браузеры<a>поддерживают свойство transform</a>. Подробную документацию смотрите<a>в справочнике MDN</a>.</p>
65
<p>Подборка необычных инструментов вёрстки остается открытой. Пишите в комментариях о необычных приёмах и техниках, с которыми вы сталкивались во время обучения или работы.</p>
65
<p>Подборка необычных инструментов вёрстки остается открытой. Пишите в комментариях о необычных приёмах и техниках, с которыми вы сталкивались во время обучения или работы.</p>