CSS contrast() — контрастність зображення
Опис
автор: Bond
Загальний опис
автор: NagarD
- Порада
-
Використовуйте функцію
автор: Bondcontrast()разом з іншими фільтрами CSS, такими якblur(),brightness()абоsaturate(), для створення складних візуальних ефектів. - Нотатка
-
Ефект
автор: Bondcontrast()також можна застосовувати до псевдоелементів, таких як::beforeабо::after, для досягнення бажаного візуального ефекту.
Синтаксис
contrast(<percentage>)
Функція contrast може отримувати єдине значення:
-
<percentage> -
Значення у відсотках.
автор: Bond
| Значення без задання: | 0% |
|---|
Переглядачі
| Переглядач | |||||
|---|---|---|---|---|---|
| 18 | 35 | 6 | 15 | 12 |
| Переглядач | ||||
|---|---|---|---|---|
| 4.4 | 53 | 35 | 6 |
Приклади
+ запропонувати свій приклад у пісочниці
Два однакові елементи, але один з них має змінену контрастність за допомогою функції.
HTML
<div id="description">
<h2>Приклад 2: зміна контрастності елементу</h2>
<p>Два однакові елементи, але один з них має змінену контрастність за допомогою функції.</p>
</div>
<div id="result">
<div class="box"></div>
<div class="box high-contrast"></div>
</div>
CSS
#description {
background-color: #f2f2f2;
padding: 20px;
font-family: Arial, sans-serif;
}
#result {
display: flex;
justify-content: center;
align-items: center;
}
.box {
width: 150px;
height: 150px;
background-color: #ff8c00;
margin: 20px;
}
.high-contrast {
filter: contrast(50%);
}
Одна й та сама плитка при п'яти значеннях contrast(). Ліва плитка показує, що contrast(0) дає не чорне, а рівне сіре.
HTML
<div id="description">
<h2>Одна плитка при різних значеннях contrast()</h2>
<p>Усі п'ять плиток однакові — той самий градієнт і той самий кружок. Різниться лише значення contrast() у filter.</p>
</div>
<div id="result">
<figure><div class="tile c0"><span></span></div><figcaption>contrast(0) — рівне сіре</figcaption></figure>
<figure><div class="tile c50"><span></span></div><figcaption>contrast(50%)</figcaption></figure>
<figure><div class="tile c100"><span></span></div><figcaption>contrast(100%) — без змін</figcaption></figure>
<figure><div class="tile c200"><span></span></div><figcaption>contrast(200%)</figcaption></figure>
<figure><div class="tile c400"><span></span></div><figcaption>contrast(400%)</figcaption></figure>
</div>
CSS
#description {
background: #f2f2f2;
padding: 20px;
font-family: Arial, sans-serif;
}
#result {
display: flex;
flex-wrap: wrap;
gap: 16px;
padding: 24px;
font-family: Arial, sans-serif;
}
figure {
margin: 0;
width: 140px;
}
.tile {
height: 110px;
background: linear-gradient(135deg, #2b2b2b 0%, #8a8a8a 50%, #e8e8e8 100%);
display: flex;
align-items: center;
justify-content: center;
}
.tile span {
display: block;
width: 46px;
height: 46px;
border-radius: 50%;
background: #c0563c;
}
.c0 { filter: contrast(0); }
.c50 { filter: contrast(50%); }
.c100 { filter: contrast(100%); }
.c200 { filter: contrast(200%); }
.c400 { filter: contrast(400%); }
figcaption {
margin-top: 8px;
font-size: 12px;
color: #555;
text-align: center;
}
HTML
<div id="description">
<h2>Приклад 1: зміна контрастності картинок при наведенні</h2>
<p>При наведенні курсору на картинки, їх контрастність змінюється.</p>
</div>
<div id="result">
<div class="image-container">
<img src="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='200' height='200' viewBox='0 0 40 40' preserveAspectRatio='none'%3E%3Crect width='40' height='40' fill='%23e63946'/%3E%3Crect y='20' width='40' height='20' fill='%232a9d8f'/%3E%3Ccircle cx='20' cy='20' r='11' fill='%23ffb703'/%3E%3C/svg%3E" alt="Зображення 1" class="image image0">
<div class="caption">20%</div>
</div>
<div class="image-container">
<img src="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='200' height='200' viewBox='0 0 40 40' preserveAspectRatio='none'%3E%3Crect width='40' height='40' fill='%23e63946'/%3E%3Crect y='20' width='40' height='20' fill='%232a9d8f'/%3E%3Ccircle cx='20' cy='20' r='11' fill='%23ffb703'/%3E%3C/svg%3E" alt="Зображення 2" class="image image1">
<div class="caption">40%</div>
</div>
<div class="image-container">
<img src="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='200' height='200' viewBox='0 0 40 40' preserveAspectRatio='none'%3E%3Crect width='40' height='40' fill='%23e63946'/%3E%3Crect y='20' width='40' height='20' fill='%232a9d8f'/%3E%3Ccircle cx='20' cy='20' r='11' fill='%23ffb703'/%3E%3C/svg%3E" alt="Зображення 3" class="image image2">
<div class="caption">80%</div>
</div>
</div>
CSS
#description {
background-color: #f2f2f2;
padding: 20px;
font-family: Arial, sans-serif;
}
#result {
display: flex;
justify-content: center;
align-items: center;
}
.image-container {
margin: 20px;
}
.image {
width: 200px;
height: 200px;
object-fit: cover;
transition: filter 0.3s ease;
}
.image0:hover {
filter: contrast(20%);
}
.image1:hover {
filter: contrast(40%);
}
.image2:hover {
filter: contrast(80%);
}
.image:hover + .caption {
opacity: 1;
}
.caption {
opacity: 0;
text-align: center;
font-size: 14px;
}
Коментарі
Коментарів ще немає — будьте першим!