Filtry
W tym rozdziale dowiesz się...
- W jaki sposób wprowadzić efekty specjalne na stronie WWW, w postaci efektownych filtrów graficznych?
- Co zrobić, aby dowolny element strony był półprzezroczysty?
- W jaki sposób rozmyć obrazek, tworząc efekt smugi?
- Co zrobić, aby wybrany kolor na obrazku stał się przezroczysty?
- Jak dodać cień podtekstem?
- W jaki sposób stworzyć lustrzane odbicie obrazu lub innego elementu strony?
- W jaki sposób stworzyć jarzący się tekst?
- Jak przekształcić kolorowe zdjęcie (obrazek, grafikę) na czarno-białą fotografię?
- Jak stworzyć negatyw zdjęcia (fotografii)?
- W jaki sposób odwrócić przezroczystość obrazu (grafiki)?
- Jak dodać efektowny cień pod tekstem?
- W jaki sposób pofalować zdjęcie (grafikę, obrazek)?
- Jak zmienić zdjęcie, aby wyglądało jak na prześwietleniu rentgenowskim?
- Jak wprowadzić efektowne oświetlenie zdjęcia (obrazka, grafiki) za pomocą światła otaczającego, stożkowego lub punktowego?
- Jak połączyć kilka efektów specjalnych, aby otrzymać bardziej efektowny filtr graficzny?
Wstęp
(tylko Internet Explorer 4.0 lub nowszy!)
UWAGA! Polecenia zawarte w tym rozdziale nie wchodzą w skład specyfikacji stylów CSS 2 i są wyłącznie rozszerzeniem przeglądarki Internet Explorer 4.0 lub nowszej!
Intertet Explorer pozwala wprowadzić na stronę efektowne filtry graficzne. Dzięki nim możemy tak przekształcić zwykły tekst, aby wyglądał on na obrazek. Możemy również zastosować wiele ciekawych efektów do obrazków. Są one podobne do tych, które występują w programach graficznych do obróbki zdjęć. Wszystko to spowoduje, że nasza strona może wyglądać dużo lepiej.
Według Microsoftu filtry graficzne mogą zostać bezpośrednio zastosowane tylko do znaczników:
- BODY - ciało dokumentu
- BUTTON - przycisk
- IMG - obrazek
- INPUT - pole formularza
- MARQUEE - animowany tekst
- TABLE - tabela
- TD - komórka tabeli
- TEXTAREA - wieloliniowe pole tekstowe
- TFOOT - stopka tabeli
- TH - komórka nagłówkowa tabeli
- THEAD - nagłówek tabeli
- TR - wiersz tabeli
Natomiast jeśli chcemy zastosować je do innych znaczników (np. zwykłego tekstu), należy poprzez własności stylów obowiązkowo określić:
- ich wysokość lub/i szerokość, np.
height: 1em
(uwaga: niektóre efekty zajmują więcej miejsca niż jedną wysokość linii, czyli więcej niż 1em)
- albo ewentualnie pozycjonowanie absolutne (wystarczy podać
position: absolute
bez określania dokładnej pozycji)
Składnia każdego efektu jest następująca:
selektor { filter: NazwaEfektu(Parametr1=wartość, Parametr2=wartość...) }
- selektor
- Jeden z opisanych powyżej znaczników [zobacz także: Wstawianie stylów]
- NazwaEfektu
- Określa o jaki filtr nam chodzi
- Parametr1, Parametr2
- Oznaczają własności efektu
- wartość
- Określona wartość dla każdego z parametrów
Nie jest konieczne wpisywanie wszystkich parametrów, można nawet nie wpisywać żadnych, zostaną wtedy przyjęte domyślne ich wartości. Kolejność wpisywania także nie ma znaczenia. Jeśli nie podajemy żadnych parametrów, nawiasy w poleceniu również są zbędnie, tzn. wystarczy wtedy wpisać: selektor { filter: NazwaEfektu }
. Poza tym niektóre efekty nie mają określonych parametrów, co oznacza, że zawsze działają tak samo.
Przezroczystość
selektor { filter: Alpha(Opacity=nieprzezroczystość, FinishOpacity=koniec, Style=styl, StartX=xp, StartY=yp, FinishX=xk, FinishY=yk) }
gdzie
selektor oznacza "specyficzny" znacznik (
koniecznie zobacz:
Wstęp).
Natomiast inne wyrazy oznaczają:
- nieprzezroczystość
- Poziom nieprzezroczystości (0 - przezroczysty; 100 - nieprzezroczysty - domyślnie)
- koniec
- (opcjonalnie) przezroczystość końcowa (0 - przezroczysty, 100 - nieprzezroczysty)
- styl
- Charakterystyczny kształt przezroczystości:
- 0 - jednolity (domyślnie)
- 1 - liniowy
- 2 - promieniowy
- 3 - prostokątny
- xp, yp
- Współrzędna pozioma i pionowa początku obszaru przezroczystości
- xk, yk
- Współrzędna pozioma i pionowa końca przezroczystości
Przykład:
![filter: Alpha(Opacity=50, Style=0)](../pliki/obrazek.jpg)
filter: Alpha(Opacity=50, Style=
0)
![filter: Alpha(Style=1)](../pliki/obrazek.jpg)
filter: Alpha(Style=
1)
![filter: Alpha(Style=2)](../pliki/obrazek.jpg)
filter: Alpha(Style=
2)
![filter: Alpha(Style=3)](../pliki/obrazek.jpg)
filter: Alpha(Style=
3)
height: 1em; filter: Alpha(Opacity=50)
Poniżej interesujący efekt z użyciem pozycjonowania:
Tekst przykryty półprzezroczystym obrazkiem
Dynamiczna zmiana filtrów graficznych
Oto ciekawy przykład dynamicznej zmiany filtru graficznego za pomocą DHTML (wskaż poniższy obrazek myszką):
Aby uzyskać taki efekt, należy wpisać:
<img src="obrazek.jpg" alt="..." style="filter: alpha(opacity=50)" onmouseover="this.style.filter=''" onmouseout="this.style.filter='alpha(opacity=50)'" />
Możliwa jest również kolejność odwrotna:
<img src="obrazek.jpg" alt="..." onmouseover="this.style.filter='alpha(opacity=50)'" onmouseout="this.style.filter=''" />
Atrybut style="filter: ..."
określa początkowe ustawienie filtru; onmouseover="this.style.filter='...'"
podaje zmianę po wskazaniu myszką; natomiast onmouseout="this.style.filter='...'"
wywołuje powrót do ustawień początkowych po usunięciu wskaźnika myszy znad elementu [zobacz także: Zdarzenia].
Identyczna składnia obowiązuje dla pozostałych filtrów, przedstawionych na tej stronie. W ten sam sposób można również dynamicznie zmieniać inne deklaracje stylów - wtedy zamiast this.style.filter
wpisujemy: this.style.cecha
, gdzie cecha określa wybraną własność stylów, a po znaku równości (pomiędzy apostrofami) wpisujemy żądaną wartość atrybutu, np. this.style.color='red'
UWAGA! Dotyczy to MSIE 4.0+
Rozmazanie
selektor { filter: Blur(Add=typ, Direction=kierunek, Strength=natężenie) }
gdzie
selektor oznacza "specyficzny" znacznik (
koniecznie zobacz:
Wstęp).
Natomiast inne wyrazy oznaczają:
- typ
- Określa, czy oryginalny obraz ma zostać dodany do filtru:
- 1 - obraz zostanie dodany (domyślnie)
- 0 - obraz nie zostanie dodany
- kierunek
- Kierunek rozmazania w stopniach (zgodnie z ruchem wskazówek zegara względem pionu):
- 0 - góra
- 45 - góra, prawo
- 90 - prawo
- 135 - dół, prawo
- 180 - dół
- 225 - dół, lewo
- 270 - lewo (domyślnie)
- 315 - góra, lewo
- natężenie
- Ilość rozmazanych pikseli
UWAGA! W Internet Explorerze 6 intensywność rozmazywania jest ogólnie większa niż w MSIE 5.
Przykład:
![filter: Blur(Add=0, Direction=45, Strength=10)](../pliki/obrazek.jpg)
Blur(Add=0, Direction=45, Strength=10)
height: 1em; filter: Blur
Selektywna przezroczystość
selektor { filter: Chroma(Color=kolor) }
gdzie
selektor oznacza "specyficzny" znacznik (
koniecznie zobacz:
Wstęp).
Natomiast
kolor oznacza definicję
koloru który ma stać się przezroczysty.
UWAGA! Polecenie nie działa z obrazkami, które nie obsługują przezroczystości (np. *.jpg). Przezroczystość obsługuje format *.gif.
Przykład:
![Zwykły obrazek](../pliki/minus.gif)
Zwykły obrazek
*.gif
![filter: Chroma(Color=white)](../pliki/minus.gif)
Chroma(Color=white)
Cień
selektor { filter: DropShadow(Color=kolor, OffX=x, OffY=y, Positive=typ) }
gdzie
selektor oznacza "specyficzny" znacznik (
koniecznie zobacz:
Wstęp).
Natomiast inne wyrazy oznaczają:
- kolor
- Definicja koloru cienia
- x
- Liczba pikseli o które zostanie przesunięty cień w poziomie (wartości dodatnie przesuwają w prawo, ujemne - w lewo)
- y
- Liczba pikseli o które zostanie przesunięty cień w pionie (wartości dodatnie przesuwają w dół, ujemne - w górę)
- typ
- Sposób tworzenia cienia
- 1 - cień będzie tworzony z kolorów elementu, które nie są przezroczyste (domyślnie)
- 0 - cień będzie tworzony z koloru przezroczystego
UWAGA! Parametr Positive=0 w MSIE 5 jest wyświetlany odmiennie (błędnie) jak w MSIE 6.
Przykład:
height: 1.5em; filter: DropShadow(Color=yellow, Positive=1)
height: 1.5em; filter: DropShadow(Color=yellow, Positive=0)
Lustro
- Poziome:
selektor { filter: FlipH }
- Pionowe:
selektor { filter: FlipV }
gdzie
selektor oznacza "specyficzny" znacznik (
koniecznie zobacz:
Wstęp).
Przykład:
height: 1em; filter: FlipH
height: 1em; filter: FlipV
Jarzenie
selektor { filter: Glow(Color=kolor, Strength=natężenie) }
gdzie
selektor oznacza "specyficzny" znacznik (
koniecznie zobacz:
Wstęp).
Natomiast inne wyrazy oznaczają:
- kolor
- Definicja koloru jarzenia
- natężenie
- Intensywność efektu (od 0 do 255)
Przykład:
height: 1.5em; filter: Glow(Color=yellow)
Skala szarości
selektor { filter: Gray }
gdzie
selektor oznacza "specyficzny" znacznik (
koniecznie zobacz:
Wstęp).
Przykład:
![Zwykły obrazek](../pliki/obrazek.jpg)
Zwykły obrazek
![filter: Gray](../pliki/obrazek.jpg)
filter: Gray
Negatyw
selektor { filter: Invert }
gdzie
selektor oznacza "specyficzny" znacznik (
koniecznie zobacz:
Wstęp).
Przykład:
Maska
selektor { filter: Mask(Color=kolor) }
gdzie
selektor oznacza "specyficzny" znacznik (
koniecznie zobacz:
Wstęp).
Natomiast
kolor oznacza definicję
koloru maski.
Zmienia kolor przezroczystości na wskazany, natomiast wszystkie inne kolory stają się przezroczyste.
UWAGA! Polecenia działa tylko z obrazkami, na których został zaznaczony kolor przezroczysty. Przezroczystość obsługuje format *.gif (ale nie *.jpg).
Przykład:
![GIF z przezroczystością](../pliki/punkt.gif)
Zwykły obrazek
*.gif z przezroczystością
![filter: Mask(Color=red)](../pliki/punkt.gif)
Mask(Color=red)
Rozmyty cień
selektor { filter: Shadow(Color=kolor, Direction=kierunek) }
gdzie
selektor oznacza "specyficzny" znacznik (
koniecznie zobacz:
Wstęp).
Natomiast inne wyrazy oznaczają:
- kolor
- Definicja koloru cienia
- kierunek
- Kierunek cienia w stopniach (zgodnie z ruchem wskazówek zegara względem pionu):
- 0 - góra
- 45 - góra, prawo
- 90 - prawo
- 135 - dół, prawo
- 180 - dół
- 225 - dół, lewo (domyślnie)
- 270 - lewo
- 315 - góra, lewo
Przykład:
height: 1.5em; filter: Shadow(Color=yellow, Direction=135)
Fala
selektor { filter: Wave(Add=typ, Freq=częstotliwość, LightStrength=światło, Phase=faza, Strength=natężenie) }
gdzie
selektor oznacza "specyficzny" znacznik (
koniecznie zobacz:
Wstęp).
Natomiast inne wyrazy oznaczają:
- typ
- Określa, czy oryginalny obraz ma zostać dodany do filtru:
- 1 - obraz zostanie dodany
- 0 - obraz nie zostanie dodany (domyślnie)
- częstotliwość
- Liczba fal
- światło
- Natężenie światła (od 0 do 100)
- faza
- Przesunięcie fazowe początku fali (od 0 do 100)
- natężenie
- Intensywność efektu
Przykład:
![filter: Wave(Add=1, Freq=5, LightStrength=0, Strength=15)](../pliki/obrazek.jpg)
Wave(Add=
1, Freq=5, LightStrength=0, Strength=15)
![filter: Wave(Add=0, Freq=5, LightStrength=50, Strength=15)](../pliki/obrazek.jpg)
Wave(Add=
0, Freq=5, LightStrength=50, Strength=15)
height: 1em; filter: Wave(Freq=2, Strength=2)
Prześwietlenie
selektor { filter: Xray }
gdzie
selektor oznacza "specyficzny" znacznik (
koniecznie zobacz:
Wstęp).
Zmienia głębię kolorów i wyświetla element jako czarno-biały (jak na prześwietleniu rentgenowskim).
Przykład:
Światło
UWAGA! W poleceniach dotyczących światła nie można pomijać parametrów, ani zmieniać ich kolejności wpisywania!
- Otaczające:
<img id="identyfikator" style="filter: Light" src="lokalizacja obrazka" alt="..." />
<script type="text/jscript">
// <![CDATA[
var ms = navigator.appVersion.indexOf("MSIE");
if (ms > 0 && parseInt(navigator.appVersion.substring(ms + 5, ms + 6)) >= 4)
document.all.identyfikator.filters.Light.addAmbient(R,G,B, natężenie);
// ]]>
</script>
gdzie:
- identyfikator
- Unikatowa nazwa elementu, która nie może się powtórzyć w tym samym dokumencie. Może składać się tylko z liter, cyfr oraz znaków podkreślnika ("_"), ale nie może rozpoczynać się cyfrą!
- lokalizacja obrazka
- Lokalizacja na dysku, gdzie znajduje się żądany obrazek
- R, G, B
- Składowe czerwona, zielona, niebieska koloru światła (liczby od 0 do 255) [zobacz: Kolory]
- natężenie
- Intensywność
Przykład:
- Stożkowe:
<img id="identyfikator" style="filter: Light" src="lokalizacja obrazka" alt="..." />
<script type="text/jscript">
// <![CDATA[
var ms = navigator.appVersion.indexOf("MSIE");
if (ms > 0 && parseInt(navigator.appVersion.substring(ms + 5, ms + 6)) >= 4)
document.all.identyfikator.filters.Light.addCone(xp,yp,zp, xk,yk, R,G,B, natężenie, rozproszenie);
// ]]>
</script>
gdzie:
- identyfikator
- Unikatowa nazwa elementu, która nie może się powtórzyć w tym samym dokumencie. Może składać się tylko z liter, cyfr oraz znaków podkreślnika ("_"), ale nie może rozpoczynać się cyfrą!
- lokalizacja obrazka
- Lokalizacja na dysku, gdzie znajduje się żądany obrazek
- xp, yp, zp
- Położenie w przestrzeni źródła światła - współrzędna pozioma, pionowa i wysokość nad obrazkiem
- xk, yk
- Położenie na płaszczyźnie obrazka punktu oświetlanego (zogniskowania)
- R, G, B
- Składowe czerwona, zielona, niebieska koloru światła (liczby od 0 do 255) [zobacz: Kolory]
- natężenie
- Intensywność
- rozproszenie
- Kąt rozproszenia ("rozrzutu") światła w stopniach (od 0 do 90)
Przykład:
- Punktowe:
<img id="identyfikator" style="filter: Light" src="lokalizacja obrazka" alt="..." />
<script type="text/jscript">
// <![CDATA[
var ms = navigator.appVersion.indexOf("MSIE");
if (ms > 0 && parseInt(navigator.appVersion.substring(ms + 5, ms + 6)) >= 4)
document.all.identyfikator.filters.Light.addPoint(x,y,z, R,G,B, natężenie);
// ]]>
</script>
gdzie:
- identyfikator
- Unikatowa nazwa elementu, która nie może się powtórzyć w tym samym dokumencie. Może składać się tylko z liter, cyfr oraz znaków podkreślnika ("_"), ale nie może rozpoczynać się cyfrą!
- lokalizacja obrazka
- Lokalizacja na dysku, gdzie znajduje się żądany obrazek
- x, y, z
- Położenie w przestrzeni źródła światła - współrzędna pozioma, pionowa i wysokość nad obrazkiem
- R, G, B
- Składowe czerwona, zielona, niebieska koloru światła (liczby od 0 do 255) [zobacz: Kolory]
- natężenie
- Intensywność
Przykład:
Wykorzystując Dynamiczny HTML (DHTML), można stworzyć nawet takie "cuda"!
Łączenie efektów
selektor { filter: Efekt1 Efekt2... }
gdzie
selektor oznacza "specyficzny" znacznik (
koniecznie zobacz:
Wstęp).
Natomiast wyrazy:
Efekt1,
Efekt2 oznaczają przedstawione powyżej filtry graficzne.
Wszystkie powyższe filtry można ze sobą łączyć, stosując je do tego samego elementu. Dzięki temu uzyskamy jeszcze ciekawszy efekt.
Uwaga! Kolejność wpisywania efektów w poleceniu zwykle ma znaczenie na końcowy wygląd elementu.
Przykład:
height: 2em; filter: Wave(Strength=2) Glow Shadow