Przejścia liniowe SVG
- Poprzednia strona Rozmycie SVG
- Następna strona Przejścia liniowe SVG
Polecane kursy:
<defs> i <filter> <defs>
wszystkie SVG filtry znajdują się w<defs>
definiowane w
Elementy są używane do definiowania filtrów SVG.
Elementy są skrótem od definicji (definitions) i zawierają definicje specjalnych elementów (np. filtrów).Elementy są używane do definiowania filtrów SVG.
<filter>
Element SVG <feOffset> ma obowiązkowy atrybut id, używany do identyfikacji filtra. Następnie grafika wskazuje na używany filtr.
Przykład 1
<feOffset>
Elementy są używane do tworzenia efektów cienia. Podejście polega na tym, że najpierw uzyskuje się SVG grafikę (obraz lub element), a następnie delikatnie przenosi ją w płaszczyźnie xy.
Pierwszy przykład przesuwał prostokąt (używając <feOffset>
),a następnie nałożenie oryginalnego obrazu na przesunięty obraz (używając <feBlend>
):
Oto kod 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="green" stroke-width="3" fill="yellow" filter="url(#f1)" /> </svg>
Wyjaśnienie kodu:
- Atrybut id elementu <filter> definiuje unikalną nazwę filtra
- <rect> elementu atrybut filter łączy ten element z filtrem "f1"
Przykład 2
Teraz można rozmyć przesuniętą obraz (używając <feGaussianBlur>
):
Oto kod 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="green" stroke-width="3" fill="yellow" filter="url(#f2)" /> </svg>
Wyjaśnienie kodu:
- Atrybut stdDeviation elementu <feGaussianBlur> definiuje stopień rozmycia
Przykład 3
Teraz, ustaw cień na czarny:
Oto kod 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="green" stroke-width="3" fill="yellow" filter="url(#f3)" /> </svg>
Wyjaśnienie kodu:
- <feOffset> atrybut in zostaje zmieniony na "SourceAlpha", co używa kanału Alpha zamiast całego RGBA pixela do rozmycia
Przykład 4
Teraz, przetwarzaj cień na jeden kolor:
Oto kod 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="green" stroke-width="3" fill="yellow" filter="url(#f4)" /> </svg>
Wyjaśnienie kodu:
- <feColorMatrix> Filtr przyciemniający zmienia kolory przesuniętego obrazu, aby były bliższe czerni. Trzy wartości '0.2' w macierzy mnożą się przez kanały czerwony, zielony i niebieski. Zmniejszenie ich wartości sprawia, że kolory są bliższe czerni (czarna to 0)
- Poprzednia strona Rozmycie SVG
- Następna strona Przejścia liniowe SVG