Обзор цветовых форматов в CSS
- 12 января 2023
В CSS много цветовых форматов — hex-коды, rgb()
, hsl()
, lch()
и ещё несколько других. Сложно понять, какой использовать, ведь между форматами есть важные отличия. И, если честно, многие из нас считают «важными» совсем не то. 🙂
В этой статье я расскажу вам о разных цветовых форматах. Посмотрим, как они работают, как в них разобраться и как использовать их эффективнее всего. Ближе к концу покажу, как настраивать цвета в современном CSS на лету, если выбрать подходящий цветовой формат.
Именованные цвета
Технически это не совсем цветовой формат. В HTML доступны 140 именованных цветов. Это специальные ключевые слова вроде dodgerblue
, hotpink
или tomato
.
<style>
body {
color: tomato;
}
</style>
<p>
Hello world!
</p>
Разработчик Энтони Лиеуаллен создал демо со всеми 140 именованными цветами в одном круге:
Именованные цвета можно использовать, когда вам нужна цветная плашка вместо картинки — например, при создании прототипов сайта. Или если вы создаёте обучающие материалы, потому что нет ничего понятнее, чем color: red
.
Об этом редко говорят, но именованные цвета чаще всего не используют при реальной разработке сайтов. 140 цветов — очень мало, это даже меньше, чем в восьмибитной цветовой палитре на NES.
👉 С миру по нитке
Вот два именованных цвета:
Как вышло, что тёмно-серый светлее, чем серый?!
Дело в том, что эти 140 цветов собирали с миру по нитке. Среди источников были спецификация HTML4, оконная система X11 Unix и цвета, которые добавлены в память о конкретных людях.
В итоге получилась не всегда логичная солянка из разных палитр.
RGB
Это первый «настоящий» цветовой формат. Вот как мы его используем:
<style>
body {
color: rgb(255 0 0);
}
</style>
<p>
Hello world!
</p>
Как и большинство цветовых форматов, RGB это аббревиатура, которая означает red green blue (красный, зелёный, синий).
rgb
— наименее абстрактный из всех цветовых форматов в этой статье. Экран вашего компьютера или телефона — это буквально набор из миллионов маленьких красных, зелёных и синих лампочек, которые собираются в пиксели. Формат rgb
позволяет нам напрямую регулировать яркость этих лампочек.
Каждое значение — красное, зелёное или синее — называется каналом. Значение канала меняется в диапазоне от 0
до 255
. Смешивая эти каналы в разных пропорциях, мы можем создать больше 16 миллионов разных цветов.
Так выглядит инструмент для выбора rgb-цветов.
Самое классное в формате RGB то, что он основан на физике света. Мы можем смешать красный, зелёный и голубой и создать любой цвет. Если взять каждый по максимуму — получим белый цвет. А если установить всё в 0
, то будет чёрный.
В rgb
также есть четвёртое необязательное значение для так называемого альфа-канала, который управляет прозрачностью:
<style>
.translucent-box {
/* Попробуйте изменить 0.5 на что-то ещё: */
background: rgb(255 0 0 / 0.5);
}
</style>
<section>
<div class="translucent-box"></div>
</section>
<style>
.translucent-box {
/* Попробуйте изменить 0.5 на что-то ещё: */
background: rgb(255 0 0 / 0.5);
}
</style>
<section>
<div class="translucent-box"></div>
</section>
Альфа-канал принимает значения от 0
(полностью прозрачно) до 1
(полностью непрозрачно). Все значения между ними, например, 0.5
, создают полупрозрачный цвет.
Что это за новомодный синтаксис?!
До недавнего времени в CSS указывали RGB-цвет немного иначе и писали значение для каждого канала через запятую. Вот так:
body {
color: rgb(255, 0, 0);
}
А полупрозрачные цвета задавали с помощью функции rgba
:
.translucent-box {
background: rgba(255, 0, 0, 0.5);
}
Этот подход изменился в стандарте CSS Colors level 4, где ввели новый единый способ записи для всех цветовых форматов. Функция rgba()
пока не совсем устарела, но лучше использовать rgb()
c новым синтаксисом (к счастью, браузеры прекрасно его поддерживают).
Как вы уже видели выше, теперь прозрачность задаётся так:
.translucent-box {
background: rgb(255 0 0 / 0.5);
}
Что значит косая черта? Это разделитель. Он указывает, что первые 3 значения — часть одной группы, а последнее значение относится к чему-то другому. Деление ни при чём.
HEX-коды
Это, вероятно, самый используемый цветовой формат в вебе. Он выглядит так:
<style>
body {
color: #FF0000;
}
</style>
<p>
Hello world!
</p>
Вот как это работает: hex-код из шести цифр содержит три значения по две цифры, по одному значению на каждый канал (красный, зелёный, синий). Вместо использования десятичной системы этот формат использует шестнадцатеричную.
Технически hex-коды это то же самое, что и RGB-значения. В обоих случаях нам нужны значения для красного, зелёного и синего.
В десятичной системе число из двух цифр содержит максимум 100 возможных значений (10 × 10). В шестнадцатеричной общее количество 256 (16 × 16). И это 256 очень похоже на rgb()
, где мы указываем значение от 0 до 255 для каждого канала.
Интересный факт: для определения прозрачности цвета мы можем указать hex-код из восьми цифр:
<style>
.translucent-box {
background: #FFFF0080;
}
</style>
<section>
<div class="translucent-box"></div>
</section>
В этом примере мы указали для альфа-канала значение 80
, что равно 128
в десятичной системе. В итоге цвет на 50% прозрачный.
hex-коды из 8 цифр хорошо поддерживаются современными браузерами. Грустненько, но в их число не входит IE :)
HSL
Два предыдущих формата были «обёртками» для одной идеи — передачи конкретных значений для красного, зелёного и синего каналов.
К счастью, это не единственный способ представить цвет. Давайте разберёмся с HSL, абсолютно другим цветовым форматом.
В этот раз начнём с палитры:
Она, вероятно, знакома вам и похожа на палитры в Фигме или Фотошопе.
В HSL задаются три разных значения:
- Оттенок (hue). Краска, которую мы хотим использовать. Можно задать значение от
0
до360
, и мы указываем его в градусах, потому что шкала оттенка круглая (0deg
и360deg
означают один и тот же красный цвет). - Насыщенность (saturation). Как много краски в нашем цвете? Значения — от 0% (нет пигмента, оттенок серого) до 100% (цвет настолько яркий, насколько возможно).
- Освещённость (lightness): насколько цвет тёмный или светлый? Значения от 0% (полностью чёрный) до 100% (чистый белый).
И это кажется очень интуитивно-понятным способом задать цвет. Вместо прямого управления красно-сине-зелёными лампочками мы переместились на более высокий уровень абстрации, более близкий к тому, как люди обычно представляют цвета.
Как и в RGB, мы можем задавать прозрачность через косую черту.
<style>
.translucent-box {
background: hsl(0deg 100% 50% / 0.5);
}
</style>
<section>
<div class="translucent-box"></div>
</section>
HSL против HSB
Раздражает, что большая часть дизайнерского софта использует довольно похожий формат HSB (Hue-Saturation-Brightness) вместо HSL (Hue-Saturation-Lightness).
Вот один и тот же цвет в HSB и в HSL:
В HSL освещённость это шкала между чёрным и белым. 0% освещённости — всегда чёрный цвет, 100% — всегда белый. Если мы хотим яркий, живой цвет, мы должны поставить освещённость на 50%, ровно между чёрным и белым.
В HSB всё чуть сложнее. «Яркость» это тоже мера освещённости, и 0% тоже даёт черный цвет, но 100% не всегда даёт белый. Это зависит от насыщенности — на полной яркости и 0% насыщенности даёт белый цвет, а на 100% насыщенности получаем яркий цвет.
Честно говоря, мне нравится модель HSB, но в CSS её просто нет. У нас есть только HSL.
Если вы когда-то получите макет с HSB от дизайнера, то легко сможете нагуглить инструменты для конвертации HSB в HSL.
Современные цветовые форматы
Все описанные форматы существуют много лет. HSL поддерживался даже в Internet Explorer 9, который вышел в 2011.
Но в последнее время в CSS появилось несколько новых цветовых форматов, и от них, кажется, никуда не деться.
Display P3
Эта статья о цветовых форматах, синтаксисах, с помощью которых мы задаём цвета. И все форматы до этого — rgb()
, hex-коды и hsl()
— связаны со «стандартным цветовым пространством RGB». Его ещё часто назвают sRGB.
Цветовое пространство это набор доступных цветов, палитр, из которых мы выбираем цвет. В sRGB миллионы цветов, но это даже не близко к тому количеству, которое способен видеть человеческий глаз.
Посмотрите на два этих красных квадрата:
Слева цвет rgb(255 0 0)
. Это самый красный красный, доступный в sRGB. А справа мы используем цветовое пространство P3. И это даже более красный красный!
(Есть большая вероятность, что для вас эти два квадрата выглядят одинаково. Если это так, то ваш монитор или браузер скорее всего не поддерживает нужный цветовой диапазон. Посмотрите с телефона — некоторые айфоны стали поддерживать такие форматы пару лет назад).
P3 расширяет стандартное пространство sRGB более яркими цветами. Мне очень нравится эта картинка из блога WebKit:
К сожалению, в CSS цветовое пространство связано с цветовым форматом. Если вы используете синтаксис rgb()
, hex-коды или hsl()
, вам доступны цвета только из пространства sRGB.
Для цветов из пространства P3 понадобится другой формат цвета. Вот его синтаксис:
.box {
background: color(display-p3 1 0 0);
}
Функция color()
принимает название цветового пространства и набор R/G/B значений в диапазоне от 0
до 1
, вместо 255
.
Браузеры пока плохо поддерживают функцию color()
. На момент создания статьи она работает только в Safari.
👉 Цветовые форматы и картинки Во всяких фотошопах мы можем выбрать цветовое пространство для изображений. Это позволяет «встроить» P3 прямо в картинку. И в браузерах, которые не поддерживают P3, цвета на этих картинках всё равно будут выглядеть иначе.
В общем, круто иметь большую палитру цветов, но не круто указывать значения для красного, синего и зелёного каналов. К счастью, есть и другие новые форматы.
LCH
Посмотрите на эти два цвета в формате HSL:
Как видите, «освещённость» обоих цветов 50%. Но они не ощущаются одинаково светлыми. Жёлтый выглядит гораздо светлее, чем синий.
Это потому, что формат HSL создавался на основе математики и физики и вообще не учитывал то, как люди воспринимают цвета. И, что важно, люди не воспринимают цвета очень точно.
LCH нацелен на то, чтобы восприниматься всеми людьми одинаково. Два цвета с равной «освещённостью» должны ощущаться одинаково светлыми.
Например, вот жёлтый и синий на 55% освещённости в LCH.
А вот палитра LCH:
LCH значит Lightness Chroma Hue (освещённость, интенсивность, оттенок). Интенсивность — почти синоним насыщенности. Формат идейно похож на HSL, но есть два больших отличия.
- Как уже сказано, в основе формата лежит человеческое восприятие цвета. Так что два цвета с одинаковой освещённостью должны ощущаться одинаково светлыми.
- Он не привязан ни к какому конкретному цветовому пространству.
В отличие от остальных форматов LCH не привязан к sRGB и даже к P3.
В HSL насыщенность меняется от 0% (нет насыщенности) до 100% (полностью насыщенный). Так вышло, потому что в sRGB конечное количество цветов.
А вот LCH не привязан к конкретному цветовому пространству, и мы не знаем, где верхний предел насыщенности, так как он постоянно меняется. С появлением новых мониторов мы сможем видеть новые цвета в таких пространствах. LCH будет автоматически способен показывать такие цвета с увеличением значения интенсивности.
.red-box {
/* Очень красный квадрат в LCH: */
background: lch(50% 120 20);
/*
Тот же цвет в sRGB, но с появлением новых мониторов он
будет значиииииительно более красным.
*/
background: lch(50% 500 20);
}
И пока вы ещё не слишком обрадовались: LCH поддерживается только в Safari (и Chrome тоже скоро будет). Скорее всего, через пару лет новый формат можно будет использовать без опасений.
👉 oklch
Недавно я узнал о другом цветовом формате oklch()
. Он практически идентичен lch()
, но исправляет ошибку с тем, как меняется оттенок синего с увеличением хромы и освещённости.
Предполагая, что браузеры станут одновременно поддерживать оба формата, oklch
выглядит более безопасным выбором.
Больше об этом — в блоге Злых Марсиан.
Как выбрать правильный цветовой формат
Итак, обзор подходит к концу, и мы посмотрели на множество цветовых форматов. Какой же использовать в работе?
Я рекомендую HSL. Как минимум до тех пор, пока LCH не станет поддерживаться большинством браузеров.
Я знаю, что многие разработчики любят hex-коды. Они понятные и универсальные, а ещё их легко копипастить между Фигмой и кодом. Но приходится идти на компромиссы. Даже если вам удобна запись в hex, её тяжело расшифровать. Отвечайте быстро: что за цвет #0F52B7
? А #F3E248
?
А вот HSL интуитивно понятен и хорошо соотносится с тем, как мы представляем цвета. Немного тренировок и вы сможете тут же представлять любой цвет, когда видите его hsl()
значение.
И это значит, что мы можем легко менять цвета, даже не открывая палитру. Если мне нужен цвет потемнее, я уменьшаю освещённость. Если хочу более интенсивный цвет, выкручиваю на максимум насыщенность.
HSL становится ещё лучше, если совместить его с современными возможностями CSS.
Использование с препроцессорами
Я привык использовать CSS-препроцессор Sass. Одна из его лучших возможностей — управление цветами.
.box {
$red: '#FF0000';
$darkRed: darken($red, 20%);
$transparentRed: opacify($red, 50%);
$softRed: lighten(desaturate($red, 30%), 10%);
}
Используя HSL, мы управляем цветами как в «ванильном» CSS.
<p style="color: var(--red)">
This text is red.
</p>
<p style="color: var(--dark-red)">
This text is darker.
</p>
<p style="color: var(--transparent-red)">
This text is transparent.
</p>
<p style="color: var(--soft-red)">
This text is softer.
</p>
html {
--red-hue: 0deg;
--red-sat: 100%;
--red-lit: 50%;
--red: hsl(
var(--red-hue)
var(--red-sat)
var(--red-lit)
);
--dark-red: hsl(
var(--red-hue)
var(--red-sat)
calc(var(--red-lit) - 20%)
);
--transparent-red: hsl(
var(--red-hue)
var(--red-sat)
var(--red-lit) / 0.5
);
--soft-red: hsl(
var(--red-hue)
calc(var(--red-sat) - 30%)
calc(var(--red-lit) + 10%)
);
}
Что здесь происходит. В CSS-переменных есть небольшие «цветовые фрагменты», и мы собираем из них полноценные цвета.
Функция calc()
позволяет изменять эти фрагменты. Например, вот цвет --dark-red
:
html {
--dark-red: hsl(
var(--red-hue)
var(--red-sat)
calc(var(--red-lit) - 20%)
);
}
Мы используем обычный оттенок и насыщенность для нашего красного цвета, но уменьшаем освещённость на 20%. И цвет превращается из hsl(0deg 100% 50%)
в hsl(0deg 100% 30%)
.
Это может показаться сложнее, чем в Sass, да и кода побольше. Но ведь это всё происходит в чистом CSS.
В отличие от функций и переменных Sass, которые компилируются в конкретные значения, «зашитые» в код, CSS-переменные легко изменить. Мы можем настроить любую из них с помощью JavaScript, и тогда все остальные цвета автоматически изменятся.
Это очень удобно для вещей вроде автоматической тёмной темы, определённых пользователем цветовых схем и всякого такого.
«Доктайп» — журнал о фронтенде. Читайте, слушайте и учитесь с нами.
Читать дальше
Псевдокласс :link
Псевдокласс :link
в CSS предназначен для стилизации ссылок, которые ещё не были посещены пользователем. Этот псевдокласс позволяет разработчикам задавать внешний вид для непосещенных ссылок отдельно от тех, по которым пользователь уже переходил, что помогает лучше ориентироваться на странице и повышает удобство использования сайта.
Пример использования псевдокласса :link
для стилизации непосещенных ссылок:
a:link {
color: #007bff;
text-decoration: none;
}
В данном примере для всех непосещенных ссылок устанавливается синий цвет (#007bff
) и убирается подчеркивание. Это делает внешний вид ссылок более аккуратным и одновременно информативным, поскольку пользователь может легко отличить их от уже посещенных (:visited
) ссылок.
При работе с :link
, важно помнить, что этот псевдокласс должен использоваться в сочетании с псевдоклассом :visited
для полной стилизации состояний ссылок. Также рекомендуется определять стили для псевдоклассов :hover
и :active
, чтобы обеспечить интерактивный и отзывчивый интерфейс.
Пример полного набора стилей для ссылок:
a:link {
color: #007bff;
text-decoration: none;
}
a:visited {
color: #666;
}
a:hover {
color: #0056b3;
text-decoration: underline;
}
a:active {
color: #ff0000;
}
В этом примере задаются различные стили для всех возможных состояний ссылок: :link
для непосещённых, :visited
для посещённых, :hover
при наведении курсора и :active
в момент нажатия на ссылку. Такой подход позволяет создать более динамичный и интуитивно понятный интерфейс веб-страницы.
- 4 апреля 2024
Селектор потомков (пробел)
Селектор потомков в CSS используется для выбора элементов, которые являются потомками другого элемента в структуре документа. Этот селектор обозначается простым пробелом между двумя селекторами и позволяет применить стили к элементам, находящимся внутри других элементов, независимо от глубины их вложенности.
Пример использования селектора потомков:
article p {
color: #333;
line-height: 1.6;
}
В данном примере все абзацы (<p>
), которые находятся внутри элемента <article>
, будут окрашены в темно-серый цвет и получат межстрочный интервал в полтора размера шрифта. Селектор потомков позволяет легко управлять стилем конкретных элементов, сохраняя при этом общую структуру и читаемость кода.
Селектор потомков особенно полезен в следующих случаях:
- Структурирование контента: Помогает стилизовать элементы внутри определенных секций или компонентов, не затрагивая похожие элементы в других частях страницы.
- Тематическое оформление: Используется для применения уникальных стилей к элементам, расположенным внутри определенных контейнеров, например, для статей, сайдбаров или футеров.
- Изоляция стилей: Обеспечивает локальное применение стилей, предотвращая их случайное распространение на другие элементы документа.
Применение селектора потомков упрощает создание модульной и легко поддерживаемой структуры стилей, позволяя разработчикам более точно и гибко управлять внешним видом веб-страницы.
Однако, важно соблюдать баланс и избегать слишком глубокой вложенности селекторов, так как это может усложнить поддержку и оптимизацию кода. Рекомендуется использовать селектор потомков с умом, ориентируясь на поддержание чистоты и простоты структуры CSS.
- 4 апреля 2024
Псевдокласс :focus
Псевдокласс :focus
в CSS используется для стилизации элементов, которые получили фокус. Это может быть, например, текстовое поле в форме, к которому пользователь переместил курсор для ввода, или ссылка, выбранная через клавиатурный ввод. Псевдокласс :focus
позволяет создать более интерактивный и доступный пользовательский интерфейс, подсвечивая активные или выбранные элементы.
Пример использования :focus
:
input:focus {
border: 2px solid blue;
background-color: lightblue;
}
В этом примере для всех текстовых полей (input
) при получении фокуса будет изменяться цвет границы на синий и фоновый цвет на светло-синий. Это обеспечивает наглядную обратную связь пользователю о том, какой элемент формы активен в данный момент, улучшая общую пользовательскую доступность и удобство использования интерфейса.
Псевдокласс :focus
особенно важен для:
- Улучшения доступности: Он помогает пользователям с ограниченными возможностями или теми, кто использует клавиатурный ввод вместо мыши, понимать, какой элемент управления в данный момент активен.
- Повышения интерактивности: Визуальное отличие активных элементов делает интерфейс более дружелюбным и понятным для пользователя.
- Создания стилистических акцентов: Позволяет добавлять уникальные стилистические особенности для интерактивных элементов интерфейса, подчеркивая их функциональность.
Применение :focus
в сочетании с другими псевдоклассами, такими как :hover
и :active
, позволяет создать комплексное визуальное представление различных состояний элементов управления, делая интерфейс более интуитивно понятным и приятным в использовании.
Однако, важно помнить, что стилизация элементов при помощи :focus
должна быть достаточно заметной, чтобы пользователь мог легко идентифицировать фокусируемый элемент, но при этом не должна быть слишком навязчивой, чтобы не отвлекать от общего восприятия интерфейса.
- 4 апреля 2024
Селектор по id
CSS-селектор по идентификатору (id
) позволяет стилизовать элементы веб-страницы, которые имеют уникальный идентификатор. Использование селектора по id
делает возможным точечное применение стилей к конкретному элементу, не затрагивая другие элементы на странице.
Селектор по id
обозначается знаком решетки (#
) перед именем идентификатора. Идентификаторы в HTML должны быть уникальными в пределах документа, что делает селектор по id
мощным инструментом для стилизации конкретных элементов.
Пример использования селектора по id
:
<div id="uniqueElement">Этот элемент уникален.</div>
#uniqueElement {
color: green;
font-size: 20px;
}
В этом примере элементу <div>
с id="uniqueElement"
присваиваются стили, делающие текст зеленым и увеличивающие размер шрифта до 20 пикселей. Эти стили будут применены только к этому конкретному элементу благодаря уникальности идентификатора.
Преимущества использования селектора по id
:
- Точечная стилизация: Селектор по
id
позволяет применять стили к конкретному элементу, не влияя на другие элементы. - Высокий приоритет: Стили, примененные через селектор по
id
, имеют более высокий приоритет, чем стили, примененные через классы и теги, что облегчает переопределение стилей.
Важно помнить:
- Идентификатор должен быть уникальным в пределах всего HTML-документа.
- Злоупотребление селекторами по
id
может сделать CSS-код сложным для поддержки, особенно в больших проектах. Рекомендуется использовать их с умом, предпочитая классы для стилизации, когда это возможно. - Селекторы по
id
могут увеличить специфичность CSS-правил, что иногда затрудняет их переопределение.
Использование селектора по id
является мощным инструментом в арсенале веб-разработчика, позволяя точечно влиять на стиль отдельных элементов страницы.
- 4 апреля 2024
Несколько селекторов через запятую
Список селекторов в CSS представляет собой перечень селекторов, разделенных запятыми, что позволяет применить один и тот же набор стилей к различным элементам веб-страницы. Этот метод упрощает написание CSS-кода, избавляя от необходимости дублировать стили для каждого типа элементов отдельно.
Пример использования списка селекторов для стилизации заголовков, абзацев и элементов списка:
h1, h2, p, li {
color: #333;
font-family: 'Arial', sans-serif;
}
В этом примере все заголовки первого и второго уровней, абзацы и элементы списка (<li>
) окрашиваются в темно-серый цвет (#333
) и стилизуются шрифтом Arial. Использование списка селекторов позволяет значительно сократить количество кода, необходимого для применения общих стилей к разным элементам.
Применение списка селекторов эффективно во многих ситуациях, включая:
- Применение базовых стилей текста (цвет, шрифт, размер) к различным типам элементов.
- Сброс стандартных отступов для элементов списка, параграфов и других блочных элементов.
- Установка общих стилей для интерактивных элементов, таких как кнопки и ссылки, в различных частях веб-страницы.
При работе с списком селекторов важно учитывать, что стили будут применены ко всем указанным элементам. Для более специфичных стилевых задач следует использовать классы или идентификаторы, а также более конкретные типы селекторов.
Списки селекторов улучшают читаемость и поддерживаемость CSS-кода, позволяя разработчикам более эффективно управлять стилями веб-страницы. Этот подход способствует сокращению дублирования кода и обеспечивает более упорядоченную структуру стилей.
- 4 апреля 2024
Смежный селектор +
Смежный селектор в CSS, обозначаемый знаком плюс (+
), позволяет выбирать элемент, который является непосредственным соседом другого элемента на одном и том же уровне иерархии DOM. Этот селектор эффективен для применения стилей к элементу, находящемуся в точном последовательном порядке после другого элемента в коде HTML.
Пример применения смежного селектора:
h2 + p {
color: #757575;
margin-top: 0;
}
В данном случае к абзацу (<p>
), непосредственно следующему за заголовком второго уровня (<h2>
), применяются определенные стили: цвет текста изменится на серый, а верхний отступ будет устранен. Это особенно полезно для визуальной корректировки расположения текста после заголовков, чтобы обеспечить более четкое и аккуратное представление контента.
Смежный селектор находит широкое применение в веб-разработке для детальной настройки отступов между элементами и для реализации определенных стилевых эффектов, зависящих от положения элементов друг относительно друга в документе.
При использовании смежного селектора важно учитывать следующие моменты:
- Применяйте смежный селектор с умом, особенно в сложных структурах HTML, поскольку изменения в разметке могут повлиять на его работоспособность.
- Смежный селектор идеален для случаев, когда необходимо модифицировать стиль элемента в зависимости от его расположения по отношению к предыдущему элементу на том же уровне.
- Ограничьте использование смежного селектора для поддержания простоты и читаемости кода, особенно когда речь идет о крупных стилевых листах.
Соблюдение стандартов кодирования и внимание к деталям в оформлении помогут создать легко поддерживаемый и гибкий код CSS, способствующий эффективной стилизации веб-страниц.
- 4 апреля 2024
Селектор type
Селекторы типа в CSS используются для выбора HTML-элементов, соответствующих определённому имени тега. Они позволяют применять стили к элементам, не полагаясь на классы или идентификаторы, что делает их идеальными для установления базовых стилей для стандартных элементов страницы, таких как абзацы, заголовки и списки.
Пример использования селектора типа для стилизации всех абзацев (<p>
) на странице:
p {
font-family: "Helvetica", sans-serif;
line-height: 1.6;
color: #333;
}
В этом примере каждому абзацу на веб-странице задаётся шрифт Helvetica, межстрочный интервал в полтора раза больше размера шрифта и тёмно-серый цвет текста. Это базовая стилизация, которая может быть переопределена дополнительными селекторами, например, селекторами класса или идентификатора.
Селекторы типа полезны для задания общих стилей элементам, которые часто используются в документе, и являются основой каскадности в CSS. Они позволяют легко поддерживать и обновлять стили сайта, предоставляя единообразное представление элементов по всему сайту.
При работе с селекторами типа рекомендуется следовать принципам чистого кода и лучшим практикам веб-разработки:
- Используйте селекторы типа для установления базовых стилей документа, таких как шрифт, размер текста и цвет.
- Старайтесь не переопределять стили селекторов типа слишком специфичными селекторами без необходимости, чтобы избежать конфликтов и сложностей с каскадом.
- Для обеспечения читаемости и поддерживаемости кода придерживайтесь соглашений о написании CSS, включая использование строчных букв для селекторов и свойств, добавление пробела перед открывающей фигурной скобкой и одного уровня отступа для свойств внутри правила.
Соблюдение этих рекомендаций поможет создать структурированный и легко поддерживаемый код, облегчающий дальнейшую разработку и обновление веб-сайта.
- 4 апреля 2024
Универсальный селектор *
В CSS универсальный селектор *
(звёздочка) используется для применения стилей ко всем элементам на веб-странице. Этот селектор полезен, когда необходимо установить общие стили для всего документа, например, для сброса стандартных отступов или задания базового шрифта.
Пример использования универсального селектора для сброса стандартных отступов и задания базового шрифта:
* {
margin: 0;
padding: 0;
font-family: Arial, sans-serif;
}
В этом примере у всех элементов страницы обнуляются внешние и внутренние отступы (margin
и padding
), а также устанавливается шрифт Arial как базовый для всего документа.
Использование универсального селектора делает стилизацию более предсказуемой, поскольку убирает различия в отображении элементов, которые могут быть установлены браузером по умолчанию. Однако следует быть осторожным с его использованием, так как применение слишком многочисленных стилей ко всем элементам может замедлить загрузку страницы.
При работе с CSS важно следовать рекомендациям по стилю кода, чтобы обеспечить читаемость и поддерживаемость кода. Например, согласно рекомендациям HTML Academy:
- Селекторы и свойства записываются строчными буквами.
- Перед открывающей фигурной скобкой ставится пробел, свойства перечисляются с новой строки с одним уровнем отступа.
- После двоеточия в объявлении свойства следует пробел.
- В конце объявления свойства ставится точка с запятой.
- Между блоками правил оставляется одна пустая строка для лучшей читаемости.
- 4 апреля 2024
Игры с бесконечностью, или зачем нам infinity в CSS
💡 Это перевод статьи Will Boyd из блога CodersBlock. Оригинал: https://codersblock.com/blog/playing-with-infinity-in-css/
В CSS есть константа Infinity. Когда я только узнал об этом, ко мне в голову сразу пришла гора абсурдных идей, как это использовать, среди которых была и пара неплохих.
Ну, мне так кажется.
Кстати, если что, infinity
можно использовать только внутри calc()
. Ну, поехали!
🚀 Сегодня вам бесплатно доступен тренажёр по HTML и CSS.
- 5 марта 2024
Межстрочное расстояние в CSS. Свойство line-height
line-height
задает интерлиньяж, то есть расстояние между базовыми линиями соседних строк текста. Это свойство может влиять на читабельность текста и его восприятие.
Значение line-height
можно указывать как в абсолютных единицах (например, px
, pt
), так и в относительных (em
, %
, без единицы измерения). Рекомендуется использовать относительные единицы, так как они позволяют сохранить масштабируемость и адаптивность текста.
Примеры использования:
line-height: 1.2;
— относительное значение, не зависящее от размера шрифта.line-height: 20px;
— абсолютное значение, фиксированный размер интерлиньяжа.line-height: 1.5em;
— относительное значение, зависящее от размера шрифта элемента.
- 4 марта 2024