Линейные градиенты SVG
- Предыдущая страница Размытие SVG
- Следующая страница Линейные градиенты SVG
<defs> и <filter>
Все SVG-фильтры находятся в <defs>
определены в элементе.<defs>
Элемент является аббревиатурой от definitions и содержит определения специальных элементов (например, фильтров).
<filter>
Элемент используется для определения SVG-фильтра.<filter>
Элемент имеет обязательный атрибут id, который используется для идентификации фильтра. Затем графика указывает на фильтр, который нужно использовать.
SVG <feOffset>
Пример 1
<feOffset>
Элемент используется для создания тени. Идея заключается в том, чтобы сначала получить SVG-графику (изображение или элемент), а затем слегка переместить его на xy-плоскости.
В первом примере смещен矩形 (используя <feOffset>
),затем смешайте исходное изображение с смещенным изображением вверху (используя <feBlend>
):
Это код SVG:
<svg height="120" width="120"> <defs> <filter id="f1" x="0" y="0" width="200%" height="200%"> <feOffset result="offOut" in="SourceGraphic" dx="20" dy="20" /> <feBlend in="SourceGraphic" in2="offOut" mode="normal" /> </filter> </defs> <rect width="90" height="90" stroke="зеленый" stroke-width="3" fill="желтый" filter="url(#f1)" /> </svg>
Комментарий к коду:
- Свойство id элемента <filter> определяет уникальное имя фильтра
- <rect> элемента свойство filter связывает его с фильтром "f1"
Пример 2
Теперь можно размыть изображение с смещением (используя <feGaussianBlur>
):
Это код SVG:
<svg height="140" width="140"> <defs> <filter id="f2" x="0" y="0" width="200%" height="200%"> <feOffset result="offOut" in="SourceGraphic" dx="20" dy="20" /> <feGaussianBlur result="blurOut" in="offOut" stdDeviation="10" /> <feBlend in="SourceGraphic" in2="blurOut" mode="normal" /> </filter> </defs> <rect width="90" height="90" stroke="зеленый" stroke-width="3" fill="желтый" filter="url(#f2)" /> </svg>
Комментарий к коду:
- <feGaussianBlur> элемента свойство stdDeviation определяет степень размытия
Пример 3
Теперь установите тень в черный цвет:
Это код SVG:
<svg height="140" width="140"> <defs> <filter id="f3" x="0" y="0" width="200%" height="200%"> <feOffset result="offOut" in="SourceAlpha" dx="20" dy="20" /> <feGaussianBlur result="blurOut" in="offOut" stdDeviation="10" /> <feBlend in="SourceGraphic" in2="blurOut" mode="normal" /> </filter> </defs> <rect width="90" height="90" stroke="зеленый" stroke-width="3" fill="желтый" filter="url(#f3)" /> </svg>
Комментарий к коду:
- <feOffset> элемента изменен в свойстве in на "SourceAlpha", он использует Alpha канал вместо всего RGBA пикселя для размытия
Пример 4
Теперь обработайте тень одним цветом:
Это код SVG:
<svg height="140" width="140"> <defs> <filter id="f4" x="0" y="0" width="200%" height="200%"> <feOffset result="offOut" in="SourceGraphic" dx="20" dy="20" /> <feColorMatrix result="matrixOut" in="offOut" type="matrix" values="0.2 0 0 0 0 0 0.2 0 0 0 0 0 0.2 0 0 0 0 0 1 0" /> <feGaussianBlur result="blurOut" in="matrixOut" stdDeviation="10" /> <feBlend in="SourceGraphic" in2="blurOut" mode="normal" /> </filter> </defs> <rect width="90" height="90" stroke="зеленый" stroke-width="3" fill="желтый" filter="url(#f4)" /> </svg>
Комментарий к коду:
- <feColorMatrix> Фильтр используется для преобразования цветов смещенного изображения в более темные. Три значения '0.2' в матрице умножаются на красный, зеленый и синий каналы. Уменьшение их значений делает цвета ближе к черному (черный - 0)
- Предыдущая страница Размытие SVG
- Следующая страница Линейные градиенты SVG