filter
Властивість CSS filter (фільтр) застосовує до елемента графічні ефекти, як-от розмиття чи зсув кольору. Фільтри зазвичай використовуються для налаштування відображення звичайних та фонових зображень і меж.
Кілька функцій, як-от blur() та contrast(), дозволяють досягнути наперед визначених ефектів.
Спробуйте його в дії
Синтаксис
/* Значення <filter-function> */
filter: blur(5px);
filter: brightness(0.4);
filter: contrast(200%);
filter: drop-shadow(16px 16px 20px blue);
filter: grayscale(50%);
filter: hue-rotate(90deg);
filter: invert(75%);
filter: opacity(25%);
filter: saturate(30%);
filter: sepia(60%);
/* URL-адреса */
filter: url("filters.svg#filter-id");
/* Декілька фільтрів */
filter: contrast(175%) brightness(3%);
filter: drop-shadow(3px 3px red) sepia(100%) drop-shadow(-3px -3px blue);
/* Фільтр не використовується */
filter: none;
/* Глобальні значення */
filter: inherit;
filter: initial;
filter: revert;
filter: revert-layer;
filter: unset;
Для застосування функції пишіть так:
filter: <filter-function> [<filter-function>]* | none;
Щоб скористатися фільтровим елементом SVG, застосуйте url(). Використовується наступний синтаксис:
filter: url(file.svg#filter-element-id);
Функції
Властивість filter може бути задана як none або однією чи кількома з наведених нижче функцій. Якщо параметр будь-якої функції є невалідним, вона повертає none. За винятком випадків, зазначених окремо, функції, які приймають значення у відсотках (наприклад, 34%), також можуть приймати їх у вигляді дробів (наприклад, 0.34).
Якщо значення властивості filter містить кілька функцій, фільтри застосовуються у зазначеному порядку.
blur()Застосовує до вхідного зображення Гаусове розмиття.
filter: blur(5px);brightness()Застосовує до вихідного зображення лінійний множник, змінюючи його яскравість. Значення є лінійними множниками ефекту:
0%створює повністю чорне зображення,100%ніяк не діє, а значення понад100%роблять зображення яскравішим.filter: brightness(2);contrast()Регулює контрастність вихідного зображення. Значення
0%перетворює його на сіре,100%ніяк не діє, а значення понад100%підвищують контрастність.filter: contrast(200%);drop-shadow()Застосовує параметр
<shadow>як тінь, яка повторює контури зображення. Синтаксис тіні подібний до<box-shadow>(значення, визначеного в модулі Фонових зображень і меж CSS), за винятком того, що ключове словоinsetі параметрspreadне підтримуються. Як і в разі всіх інших значень властивостіfilter, будь-які фільтри післяdrop-shadow()застосовуються до тіні.filter: drop-shadow(16px 16px 10px black);grayscale()Перетворює зображення на відтінки сірого. Значення
100%робить зображення повністю сірим. Початкове значення0%залишає вихідне зображення незмінним. Значення між0%і100%є лінійними множниками ефекту.filter: grayscale(100%);hue-rotate()Застосовує обертання відтінків. Значення
<angle>визначає кількість градусів, на яку зсуваються вихідні дані. Значення0degзалишає вихідне зображення незмінним.filter: hue-rotate(90deg);invert()Інвертує зразки вихідного зображення. Значення
100%повністю інвертує зображення. Значення0%залишає його незмінним. Значення між0%і100%створюють лінійні множники для застосування ефекту.filter: invert(100%);opacity()Застосовує прозорість. Значення
0%робить зображення повністю прозорим, а100%залишає без змін.filter: opacity(50%);saturate()Насичує зображення:
0%робить його повністю ненасиченим,100%залишає без змін, а значення понад100%збільшують насиченість.filter: saturate(200%);sepia()Перетворює зображення на сепію: значення
100%робить його повністю сепійним, а0%не вносить жодних змін.filter: sepia(100%);
Комбінування функцій
Можна комбінувати для зміни візуалізації будь-яку кількість функцій. Фільтри застосовуються в порядку їх оголошення. Наступний приклад покращує контрастність і яскравість зображення:
filter: contrast(175%) brightness(103%);
Інтерполяція
Під час анімації, якщо початковий і кінцевий фільтри мають однакову кількість функцій без url() в однаковому порядку, кожна функція буде інтерпольована відповідно до її специфічних правил.
Якщо списки фільтрів мають різну довжину, відсутні функції з довшого списку додаються до кінця коротшого, використовуючи початкові значення без змін. Потім всі фільтри інтерполюються згідно з правилами функцій. В іншому випадку застосовується дискретна інтерполяція.
Формальне визначення
| Початкове значення | none |
|---|---|
| Успадковується | ні |
| Обчислене значення | as specified |
Формальний синтаксис
none | <filter-function-list>де
<filter-function-list> = [ <filter-function> | <url> ]+де
<filter-function> = <blur()> | <brightness()> | <contrast()> | <drop-shadow()> | <grayscale()> | <hue-rotate()> | <invert()> | <opacity()> | <saturate()> | <sepia()>де
<blur()> = blur( <length> )
<brightness()> = brightness( <number-percentage> )
<contrast()> = contrast( [ <number-percentage> ] )
<drop-shadow()> = drop-shadow( <length>{2,3} <color>? )
<grayscale()> = grayscale( <number-percentage> )
<hue-rotate()> = hue-rotate( <angle> )
<invert()> = invert( <number-percentage> )
<opacity()> = opacity( [ <number-percentage> ] )
<saturate()> = saturate( <number-percentage> )
<sepia()> = sepia( <number-percentage> )де
<number-percentage> = <number> | <percentage>
<color> = <rgb()> | <rgba()> | <hsl()> | <hsla()> | <hwb()> | <lab()> | <lch()> | <hex-color> | <named-color> | currentcolor | <deprecated-system-color>де
<rgb()> = rgb( <percentage>{3} [ / <alpha-value> ]? ) | rgb( <number>{3} [ / <alpha-value> ]? ) | rgb( <percentage>#{3} , <alpha-value>? ) | rgb( <number>#{3} , <alpha-value>? )
<rgba()> = rgba( <percentage>{3} [ / <alpha-value> ]? ) | rgba( <number>{3} [ / <alpha-value> ]? ) | rgba( <percentage>#{3} , <alpha-value>? ) | rgba( <number>#{3} , <alpha-value>? )
<hsl()> = hsl( <hue> <percentage> <percentage> [ / <alpha-value> ]? ) | hsl( <hue>, <percentage>, <percentage>, <alpha-value>? )
<hsla()> = hsla( <hue> <percentage> <percentage> [ / <alpha-value> ]? ) | hsla( <hue>, <percentage>, <percentage>, <alpha-value>? )
<hwb()> = hwb( [<hue> | none] [<percentage> | none] [<percentage> | none] [ / [<alpha-value> | none] ]? )
<lab()> = lab( [<percentage> | <number> | none] [ <percentage> | <number> | none] [ <percentage> | <number> | none] [ / [<alpha-value> | none] ]? )
<lch()> = lch( [<percentage> | <number> | none] [ <percentage> | <number> | none] [ <hue> | none] [ / [<alpha-value> | none] ]? )де
<alpha-value> = <number> | <percentage>
<hue> = <number> | <angle>
Приклади
Застосування функцій фільтра
Властивість filter застосовується до другого зображення, яке разом зі своєю межею стає сірим і розмитим.
img {
border: 5px solid yellow;
}
/* Робить друге зображення сірим на 40% і розмитим на 5px */
img:nth-of-type(2) {
filter: grayscale(0.4) blur(5px);
}
<img src="pencil.jpg" alt="Оригінальне зображення різке" />
<img src="pencil.jpg" alt="Зображення та межа розмиті й приглушені" />
Повторення функцій фільтра
Функції фільтра застосовуються у порядку їх появи. Ту саму функцію фільтра можна повторювати.
#MDN-logo {
border: 1px solid blue;
filter: drop-shadow(5px 5px 0 red) hue-rotate(180deg)
drop-shadow(5px 5px 0 red);
}
Фільтри застосовуються по черзі. Саме тому тіні різних кольорів: відтінок першої тіні змінюється функцією hue-rotate(), а друга тінь залишається без змін.
Специфікації
Сумісність із браузерами
| desktop | mobile | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
filter
|
Chrome Full support 53 | Edge Full support 12 | Firefox Full support 35 | Internet Explorer No support Ні | Opera Full support 40 | Safari Full support 9.1 | WebView Android Full support 53 | Chrome Android Full support 53 | Firefox for Android Full support 35 | Opera Android Full support 41 | Safari on iOS Full support 9.3 | Samsung Internet Full support 6.0 |
On SVG elements
|
Chrome No support Ні | Edge No support Ні | Firefox Full support 35 | Internet Explorer No support Ні | Opera No support Ні | Safari No support Ні | WebView Android No support Ні | Chrome Android No support Ні | Firefox for Android Full support 35 | Opera Android No support Ні | Safari on iOS No support Ні | Samsung Internet No support Ні |
Дивіться також
backdrop-filtermask- Атрибут SVG
filter - Модуль композиції та змішування CSS, який містить властивості
background-blend-modeіmix-blend-mode. - SVG, включно з елементом
<filter>та атрибутомfilter. - Застосування ефектів SVG до вмісту HTML