Spec-Zone.ru › CSS

Фильтр

Базовая реализация Широко доступно

Эта функция хорошо отработана и работает на многих устройствах и версиях браузеров. Она доступна в браузерах с сентября 2016 года.

  • Подробнее
  • Полная совместимость
  • Отправить отзыв

Свойство filter CSS применяет графические эффекты, такие как размытие или смещение цвета, к элементу. Фильтры обычно используются для изменения отображения изображений, фонов и границ.

Несколько функций, таких как blur() и contrast(), доступны для достижения предварительно определенных эффектов.

Попробуйте

Синтаксис

/* <filter-function> values */
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");

/* Multiple filters */
filter: contrast(175%) brightness(3%);
filter: drop-shadow(3px 3px red) sepia(100%) drop-shadow(-3px -3px blue);

/* Use no filter */
filter: none;

/* Global values */
filter: inherit;
filter: initial;
filter: revert;
filter: revert-layer;
filter: unset;

При использовании функции используйте следующее:

filter: <filter-function> [<filter-function>]* | none;

Вы можете использовать url() для ссылки на элемент SVG-фильтра. Для ссылки на элемент SVG <filter> используйте следующий синтаксис:

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
Применяется к всем элементам; в SVG он применяется к контейнерным элементам, за исключением элемента <defs> и всех графических элементов
Наследуется нет
Вычисленное значение как указано
Тип анимации список функций фильтра фильтра

Формальный синтаксис

filter = 
none |
<filter-value-list>

<filter-value-list> =
[ <filter-function> | <url> ]+

<filter-function> =
<blur()> |
<brightness()> |
<contrast()> |
<drop-shadow()> |
<grayscale()> |
<hue-rotate()> |
<invert()> |
<opacity()> |
<sepia()> |
<saturate()>

<url> =
<url()> |
<src()>

<blur()> =
blur( <length>? )

<brightness()> =
brightness( [ <number> | <percentage> ]? )

<contrast()> =
contrast( [ <number> | <percentage> ]? )

<drop-shadow()> =
drop-shadow( [ <color>? && <length>{2,3} ] )

<grayscale()> =
grayscale( [ <number> | <percentage> ]? )

<hue-rotate()> =
hue-rotate( [ <angle> | <zero> ]? )

<invert()> =
invert( [ <number> | <percentage> ]? )

<opacity()> =
opacity( [ <number> | <percentage> ]? )

<sepia()> =
sepia( [ <number> | <percentage> ]? )

<saturate()> =
saturate( [ <number> | <percentage> ]? )

<url()> =
url( <string> <url-modifier>* ) |
<url-token>

<src()> =
src( <string> <url-modifier>* )

Примеры

Применение функций фильтра

Свойство filter применяется ко второму изображению, делая его серым и размытым, а также его границу.

img {
  border: 5px solid yellow;
}
/* Gray the second image by 40% and blur by 5px */
img:nth-of-type(2) {
  filter: grayscale(0.4) blur(5px);
}
<img src="pencil.jpg" alt="Original image is sharp" />
<img src="pencil.jpg" alt="The image and border are blurred and muted" />

Повторные функции фильтра

Функции фильтра применяются в порядке появления. Одну и ту же функцию фильтра можно повторять.

#MDN-logo {
  border: 1px solid blue;
  filter: drop-shadow(5px 5px 0 red) hue-rotate(180deg)
    drop-shadow(5px 5px 0 red);
}

Фильтры применяются в порядке следования. Именно поэтому тени разного цвета: оттенок первой тени изменяется функцией hue-rotate() , а второй — нет.

Спецификации

Спецификация
Filter Effects Module Level 1
# FilterProperty

Совместимость с браузерами

Рабочий стол Мобильный
Chrome Edge Firefox Opera Safari Chrome Android Firefox для Android Opera Android Safari на iOS Samsung Internet WebView Android
filter 53
18В Chrome 18 до 19 функция saturate() принимала только целые числа, а не десятичные или процентные значения. С Chrome 20 эта ошибка исправлена.
1212 3549 4015 9.16 53 3549 4114 9.36 6.0 534.4
svg_elements 89 89 35 75 Нет 89 35 63 Нет 15.0 89

См. также

  • Свойство CSS backdrop-filter
  • Модуль CSS компоновки и смешивания, включая свойства CSS background-blend-mode и mix-blend-mode.
  • Свойство CSS mask
  • SVG, включая элемент SVG <filter> и атрибут SVG filter.
  • Применение эффектов SVG к содержимому HTML

© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/CSS/filter

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API