color-contrast() в CSS — вибір контрастного кольору тексту


Опис

автор: Bond

Загальний опис

автор: NagarD

Порада

Переконайтеся, що ви використовуєте функцію color-contrast() з валідними значеннями кольорів для отримання коректних результатів контрастності.

автор: Bond

Синтаксис

color-contrast(<color> vs <color-list>);

Функція color-contrast може отримувати 2 значень:

<color>

Будь-яке валідне значення кольору.

автор: Bond

<color-list>

Розділені комами значення кольорів, що містять принаймні два кольори для порівняння з першим значенням.

автор: Bond

Переглядачі

Переглядачів ще не додано.

Приклади

+ запропонувати свій приклад у пісочниці

Перший ряд — color: color-contrast(…): оголошення відкинуто, і текст на темних плитках лишився чорним, тобто нечитабельним. Другий ряд — та сама розмітка з contrast-color(): браузер сам ставить чорний або білий. Третій — ручний спосіб, який працює всюди: пара «тло + текст» у власних властивостях. ⚠️ У браузерах без підтримки contrast-color() середній ряд виглядатиме так само зламано, як перший.

HTML

<p class="head">color: color-contrast(…) — оголошення відкинуто, текст лишився чорним:</p>
<div class="row">
    <span class="sw cc t1">navy</span>
    <span class="sw cc t2">wheat</span>
    <span class="sw cc t3">#2f6fd0</span>
    <span class="sw cc t4">#f2b134</span>
</div>

<p class="head">color: contrast-color(…) — браузер сам обирає чорний або білий:</p>
<div class="row">
    <span class="sw ok t1">navy</span>
    <span class="sw ok t2">wheat</span>
    <span class="sw ok t3">#2f6fd0</span>
    <span class="sw ok t4">#f2b134</span>
</div>

<p class="head">Ручна пара «тло + текст» — працює скрізь і без сюрпризів:</p>
<div class="row">
    <span class="sw manual m1">navy</span>
    <span class="sw manual m2">wheat</span>
    <span class="sw manual m3">#2f6fd0</span>
    <span class="sw manual m4">#f2b134</span>
</div>

<p class="note">Фільтр contrast() — зовсім інша функція: він не обирає колір,
    а розтягує різницю в уже намальованому. Ось та сама плитка без нього і з ним:</p>
<div class="row">
    <span class="sw shot">filter немає</span>
    <span class="sw shot fc">filter: contrast(2.5)</span>
</div>

CSS

.head {
    margin: 18px 0 6px;
    color: #5a6472;
    font-size: .9em;
}

.note {
    margin: 22px 0 6px;
    max-width: 560px;
    color: #5a6472;
    font-size: .9em;
}

.row {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
}

.sw {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 130px;
    height: 60px;
    font: 600 13px/1 ui-monospace, monospace;
}

.t1 { background: navy; }
.t2 { background: wheat; }
.t3 { background: #2f6fd0; }
.t4 { background: #f2b134; }

.cc.t1 { color: color-contrast(navy vs black, white); }
.cc.t2 { color: color-contrast(wheat vs black, white); }
.cc.t3 { color: color-contrast(#2f6fd0 vs black, white); }
.cc.t4 { color: color-contrast(#f2b134 vs black, white); }

.ok.t1 { color: contrast-color(navy); }
.ok.t2 { color: contrast-color(wheat); }
.ok.t3 { color: contrast-color(#2f6fd0); }
.ok.t4 { color: contrast-color(#f2b134); }

.manual {
    background: var(--bg);
    color: var(--fg);
}

.m1 { --bg: navy; --fg: #fff; }
.m2 { --bg: wheat; --fg: #1c1c1c; }
.m3 { --bg: #2f6fd0; --fg: #fff; }
.m4 { --bg: #f2b134; --fg: #1c1c1c; }

.shot {
    width: 170px;
    background: linear-gradient(90deg, #6c7a8a, #9aa6b2);
    color: #e8edf3;
}

.fc {
    filter: contrast(2.5);
}
автор: NagarD

Коментарі

Коментарів ще немає — будьте першим!

Відповідь для

Як форматувати текст?
Пишемо Виходить
**важливо**
*акцент*
~~застаріле~~
Виділення в тексті. Те саме роблять кнопки панелі, що спливає над виділеним.
## Як працює каскад
### Порядок оголошень
Заголовки всередині тексту. Найбільший не потрібен — він у сторінки вже є.
[[css/property/color]] Посилання на сторінку довідника. Наберіть [[ — поле веде сходинками (розділ → тип → сторінка), а хибний ключ підкреслить хвилею.
[[!sandbox/S0oh1hBm]] Живий приклад окремим рядком — саме вікно результату. Той самий ключ зі знаком !: наберіть [[! і дійдіть сходинками до потрібної сторінки, список покаже її приклади.
[MDN](https://developer.mozilla.org) Посилання на чужий сайт.
![Схема каскаду](https://site.com/схема.png) Картинка. Опис обов'язковий: його читають пошуковик і незрячі.
Задайте `display: grid` контейнеру Код усередині речення.
```css
.card { display: grid }
```
Код блоком. Мова після трьох лапок вмикає підсвітку.
- Походження
1. Походження
Перелік: маркований і нумерований.
- [ ] дописати приклади
- [x] перевірити в Firefox
Перелік завдань із галочками. Пробіл у порожніх дужках обов'язковий.
> Порядок важить лише за рівної ваги. Цитата на всю ширину абзацу.
Специфічність
: вага селектора; більша перемагає
Список означень: термін, а під ним пояснення з відступом. Пробіл після двокрапки обов'язковий.
Каскад має три критерії[^1]
[^1]: Походження, специфічність, порядок.
Виноска: номер у тексті, примітка внизу сторінки. Без згадки [^1] у тексті примітка не з'явиться.
Відповідь: ||сорок два|| Ховає те, що між рисками: читач бачить на цьому місці розмиту пляму, а решта речення лишається звичайною. Клац — і текст відкрито.
|| Показати рішення
Задайте контейнеру `display: grid`.
||
Ховає цілі абзаци. На сторінці видно лише підпис із першого рядка («Показати рішення»), решта розгортається клацанням по ньому. Закривні риски — окремим рядком.
Порожній рядок Новий абзац. Щоб перенести рядок усередині абзацу, поставте \ в його кінці.

Увійдіть — коментар з'явиться одразу, без капчі й очікування перевірки.

Правка
Зворотний зв'язок
Вхід