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 Ні |
Дивіться також
- Властивість CSS
backdrop-filter
- Модуль композиції та змішування CSS, який містить властивості
background-blend-mode
іmix-blend-mode
. - Властивість CSS
mask
- SVG, включно з елементом
<filter>
та атрибутомfilter
. - Застосування ефектів SVG до вмісту HTML