Sunday, December 25, 2016

Bab 11. Pemrograman Internet



DHTML: Filter dan Transisi







11.1 Pengantar

Pada bab ini, akan didiskusikan mengenai filter dan transisi. Penerapan filter terhadap teks dan citra menyebabkan perubahan yang persisten. Transisi bersifat temporer; penerapan sebuah transisi memampukan Anda untuk mengalihkan dari satu halaman ke halaman lain dengan efek visual seperti random dissolve. Filter dan transisi tidak menambahkan konten pada halaman Anda, tetapi keduanya dapat dipakai untuk menangkap atensi pengguna.

Setiap efek visual yang diterapkan dengan filter dan transisi dapat diprogram (programabel), sehingga efek tersebut dapat diubah secara dinamis oleh program untuk merespon event yang dilakukan pengguna, seperti klik mouse dan penekanan-kunci. Filter dan transisi sangat mudah digunakan sehingga para perancang halaman web dapat menggunakannya dengan usaha yang minimal.

Bagian dari keindahan filter dan transisi DHTML (dynamic HTML) adalah bahwa keduanya merupakan paket yang terintegrasi di dalam Internet Explorer. Anda tidak lagi memerlukan program paket grafis untuk memanfaatkannya.

Filter dan transisi ditetapkan dengan properti filter dari CSS. Kapabilitas ini serupa dengan kapabilitas grafis dari perangkat lunak semacam PowerPoint dari Microsoft. Anda dapat memiliki halaman baru atau potong halaman web yang memudar. Anda dapat memiliki sebuah halaman yang secara acak menjelma (randomly dissolve) menjadi halaman berikutnya. Anda dapat membuat potongan halaman menjadi transparan atau semitransparan sehingga Anda dapat melihat apa yang ada di baliknya. Anda dapat mengaburkan teks atau citra untuk memberikannya ilusi gerakan. Anda dapat menciptakan bayangan pada elemen untuk memberikannya efek tiga-dimensi. Anda bahkan dapat menggabungkan beberapa efek untuk menghasilkan pelbagai efek yang lebih besar.


11.2 Filter: flipv dan fliph
Filter flipv dan flipv mencerminkan teks atau citra secara vertikal dan horisontal. Gambar 11.1 mendemonstrasikan kedua efek.

Baris 32 menerapkan sebuah filter menggunakan atribut style. Nilai dari properti filter adalah nama filter. Pada kasus ini, filter adalah fliph, yang mencerminkan objek secara horisontal.

Baris 38 menerapkan lebih dari satu filter sekaligus dengan menetapkan beberapa filter yang dipisahkan dengan spasi sebagai nilai-nilai dari atribut filter. Pada kasus ini, filter flipv juga diterapkan, yang mencerminkan objek secara vertikal.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
<?xml version = "1.0"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<!-- Gambar 11.1: flip.html -->
<!-- Menggunakan filter pencermin -->

<html xmlns = "http://www.w3.org/1999/xhtml">
    <head>
        <title>Filter Pencermin</title>

        <style type = "text/css">
            body { background-color: #CCFFCC }

            table { font-size: 3em;
                    font-family: Arial, sans-serif;
                    background-color: #FFCCCC;
                    border-style: ridge ;
                    border-collapse: collapse }

            td { border-style: groove;
                 padding: 1ex }
        </style>
    </head>

    <body>

        <table>

            <tr>
                <!-- Filter diterapkan pada deklarasi style -->
                <td style = "filter: fliph">Teks</td>
                <td>Teks</td>
            </tr>

            <tr>
                <!-- Lebih dari satu filter dapat diterapkan sekaligus -->
                <td style = "filter: flipv fliph">Teks</td>
                <td style = "filter: flipv">Teks</td>
            </tr>

        </table>

    </body>
</html>



Gambar 11.1 Menggunakan filter flip


11.3 Transparansi dengan Filter chroma
Filter chroma menerapkan efek transparansi secara dinamis, tanpa perlu menggunakan editor grafis. Gambar 15.2 mengubah transparasi sebuah citra, menggunakan skrip model objek berbasis pilihan pengguna dari sebuah elemen select.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
<?xml version = "1.0"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<!-- Gambar 11.2: chroma.html -->
<!-- Menerapkan transparansi menggunakan filter chroma -->

<html xmlns = "http://www.w3.org/1999/xhtml">
    <head>
        <title>Filter Chroma</title>

        <script type = "text/javascript">
            <!--
            function ubahWarna( sWarna )
            {
                if ( sWarna ) {
                    // jika pengguna memilih sebuah warna, ubah nilai tersebut
                    // menjadi hex dan tetapkan filter warna.
                    citraChroma.filters( "chroma" ).color = sWarna;
                    citraChroma.filters( "chroma" ).enabled = true;
                }
                else // jika pengguna memilih "None",
                     // nonaktifkan filter.
                    citraChroma.filters( "chroma" ).enabled = false;
            }
            // -->
        </script>
    </head>

    <body>

        <h1>Filter Chroma:</h1>

        <img id = "citraChroma" src = "trans.gif" style =
            "position: absolute; filter: chroma" alt =
            "Transparent Image" />

        <form action = "">
            <!-- Event onchange terjadi ketika -->
            <!-- sebuah pilihan diubah -->
                <select onchange = "ubahWarna( this.value )">
                <option value = "">None</option>
                <option value = "#00FFFF">Cyan</option>
                <option value = "#FFFF00">Yellow</option>
                <option value = "#FF00FF">Magenta</option>
                <option value = "#000000" selected = "selected">
                    Black</option>
            </select>
        </form>

    </body>
</html>



Gambar 11.2 Mengubah nilai dari filter chroma


Baris 19 menetapkan properti-properti filter secara dinamis menggunakan JavaScript. Pada kasus ini, nilai dari select (baris 41-48) merupakan sebuah string yang memuat nilai warna. Nilai ini dilewatkan sebagai argumen kepada fungsi ubahWarna.

Baris 20 menyalakan filter. Setiap filter memiliki sebuah properti dengan nama enabled. Jika properti ini ditetapkan true, maka filter diterapkan. Jika ia ditetapkan false, maka filter tidak diterapkan. Baris 24 mengindikasikan bahwa, jika pengguna menyeleksi None (baris 43), maka filter dinonaktifkan.

Baris 41 mengintroduksi event onchange. Event ini terjadi ketika value dari sebuah bidang formulir berubah. Ekspresi this.value merepresentasikan nilai teseleksi pada komponen GUI select.


11.4 Filter mask
Penerapan filter mask pada sebuah citra memampukan Anda untuk menciptakan image mask, dimana di dalamnya latar-belakang sebuah elemen merupakan warna solid dan latar-depan sebuah elemen adalah transparan. Gambar 11.3 menambahkan filter mask pada sebuah elemen h1 yang menindih sebuah citra. Latar-depan dari elemen h1 tersebut (teks di dalamnya) adalah transparan, sehingga Anda dapat melihat citra latar-belakang melalui huruf-huruf pada latar-depan.

Baris 21 menetapkan parameter warna untuk filter mask. Parameter tersebut selalu dalam format param = nilai.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<?xml version = "1.0"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<!-- Gambar 11.3: mask.html -->
<!-- Menempatkan sebuah mask pada suatu citra -->

<html xmlns = "http://www.w3.org/1999/xhtml">
    <head>
        <title>Filter Mask</title>
    </head>

    <body>

        <h1>Filter Mask</h1>

        <!-- Parameter-parameter filter ditetapkan di dalam kurung, -->
        <!-- dalam format param1 = nilai1, param2 = nilai2, -->
        <!-- dan seterusnya. -->
        <div style = "position: absolute; top: 125; left: 20;
            filter: mask( color = #CCCFFF )">
        <h1 style = "font-family: Courier, monospace">
        AaBbCcDdEeFfGgHhIiJj<br />
        KkLlMmNnOoPpQqRrSsTt
        </h1>
        </div>

        <img src = "gradient.gif" width = "380" height = "200"
            alt = "Citra dengan efek gradien" />
    </body>
</html>

  
11.5 Filter-Filter Lain: invert, gray, dan xray
Tiga filter citra yang didiskusikan pada bagian ini dapat diterapkan pada citra maupun pada teks. Filter invert menghasilkan efek citra negatif, dimana area gelap akan menjadi terang dan area terang akan menjadi gelap. Filter gray menghasilkan efek citra keabuan, dimana semua warna akan dikonversi menjadi data keabuan. Filter xray menghasilkan efek sinar-x, dimana filter ini merupakan kebalikan dari efek keabuan. Gambar 11.4 mendemonstrasikan penerapan ketiga filter ini, baik sendiri maupun kombinasi, terhadap sebuah citra. Tiap filter pada baris 26-41 diterapkan secara terpisah pada citra.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<?xml version = "1.0"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<!-- Gambar 11.4: misc.html -->
<!-- Filter invert, grayscale dan xray  -->

<html xmlns = "http://www.w3.org/1999/xhtml">
    <head>
        <title>Tiga Filter Citra</title>

        <style type = "text/css">
            .cap { font-weight: bold;
                   background-color: #DDDDAA;
                   text-align: center }
        </style>
    </head>

    <body>
        <table class = "cap">
            <tr>
                <td>Normal</td>
                <td>Keabuan</td>
            </tr>
            <tr>
                <td><img src = "buku1.jpg" alt =
                    "sampul buku normal" /></td>
                <td><img src = "buku1.jpg" style = "filter: gray"
                    alt = "sampul buku keabuan"/>
                </td>
            </tr>
            <tr>
                <td>Xray</td>
                <td>Invert</td>
            </tr>
            <tr>
                <td><img src = "buku1.jpg" style = "filter: xray"
                    alt = "sampul buku sinar-x"/>
                </td>
                <td><img src = "buku1.jpg" style = "filter: invert"
                    alt = "sampul buku negatif"/>
                </td>
            </tr>
        </table>

    </body>
</html>


11.6 Menambahkan shadow pada Teks
Sebuah filter sederhana yang menambahkan kedalaman pada teks Anda adalah filter shadow. Filter ini menciptakan efek pembayangan yang memberikan tampilan tiga-dimensi pada teks Anda.
  


Gambar 11.4 Filter invert, gray, dan xray


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<?xml version = "1.0"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<!-- Gambar 11.5: bayangan.html -->
<!-- Menerapkan filter shadow -->
<html xmlns = "http://www.w3.org/1999/xhtml">
    <head>
        <title>Filter Shadow</title>

        <script type = "text/javascript">
            <!--
            var arahBayangan = 90;

            function mulai()
            {
                window.setInterval( "jalankanDemo()", 500 );
            }

            function jalankanDemo()
            {
                teksBayangan.innerText =
                    "Arah Bayangan: " + arahBayangan % 360;
                teksBayangan.filters( "shadow" ).direction =
                    ( arahBayangan % 360 );
                arahBayangan += 45;
            }
            // -->
        </script>
    </head>

    <body onload = "mulai()">

        <h1 id = "teksBayangan" style = "position: absolute; top: 25;
            left: 25; padding: 10; filter: shadow( direction = 0,
            color = red )">Arah Bayangan: 0</h1>
    </body>
</html>


Gambar 11.5 Menerapkan filter shadow pada teks


Baris 35-37 menerapkan filter shadow terhadap teks. Properti direction dari filter shadow menentukan arah efek bayangan. Ini dapat ditetapkan menjadi salah satu dari delapan arah yang diekspresikan dalam notasi sudut: 0, 45, 90, 135, 180, 225, 270, dan 315. Properti color menetapkan warna bayangan yang diterapkan terhadap teks. Baris 23-27 pada fungsi jalankanDemo menginkremen nilai properti direction dari 0 sampai 135, dan memperbarui properti innerText dari elemen h1 (teksBayangan) untuk menyesuaikan dengan arah bayangan.

Perhatikan bahwa Anda menerapkan gaya CSS padding terhadap elemen h1. Jika Anda tidak menerapkannya, efek bayangan akan terpotong oleh batas elemen. Penambahan padding akan memberikan jarak yang lebih besar antara teks dan batas elemen, sehingga memberikan efek penuh ketika ditampilkan.


11.7 Menciptan Gradien dengan alpha
Internet Explorer 8 memampukan Anda untuk menciptakan efek dinamis menggunakan filter alpha (Gambar 11.6). Filter alpha juga digunakan untuk efek transparansi yang tidak dapat dilakukan dengan filter chroma.

Baris 26-29 menerapkan filter alpha pada sebuah elemen div yang memuat sebuah citra. Properti style dari filter tersebut menentukan gaya apa ketika opasitas diterapkan; nilai 0 menerapkan opasitas seraga, nilai 1 menerapkan gradien linier, nilai 2 menerapkan gradien sirkular, dan nilai 3 menerapkan gradien persegi.

Properti opacity dan finishopacity berupa persentase yang menentukan persentase opasitas dari gradien awal dan gradien akhir. Atribut-atribut lain adalah startX, startY, finishX, dan finishY. Semua atribut ini koordinat x-y dari gradien awal dan gradien akhir pada elemen tertentu.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
<?xml version = "1.0"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<!-- Gambar 11.6: alpha.html -->
<!-- Menerapkan filter alpha pada suatu citra -->

<html xmlns = "http://www.w3.org/1999/xhtml">
    <head>
        <title>Filter Alpha</title>
    <script type = "text/javascript">
        <!--
        function jalankan()
        {
            gbr.filters( "alpha" ).opacity = tombolOpasitas.value;
            gbr.filters( "alpha" ).finishopacity =
                tombolOpasitas2.value;
            gbr.filters( "alpha" ).style = styleSelect.value;
        }
        // -->
    </script>
    </head>

    <body>

    <div id = "gbr"
        style = "position: absolute; left:0; top: 0;
                 filter: alpha( style = 2, opacity = 100,
                 finishopacity = 0 )">
        <img src = "film.jpg" alt = "Sampul" />
    </div>

    <table style = "position: absolute; top: 250; left: 0;
                    background-color: #CCFFCC" border = "1">

        <tr>
            <td>Opasitas (0-100):</td>
            <td><input type = "text" id = "tombolOpasitas"
                size = "3" maxlength = "3" value = "100" /></td>
        </tr>

        <tr>
            <td>Opasitas Akhir (0-100):</td>
            <td><input type = "text" id = "tombolOpasitas2"
                size = "3" maxlength = "3" value = "0" /></td>
        </tr>

        <tr>
            <td>Gaya:</td>
            <td><select id = "styleSelect">
                <option value = "1">Linear</option>
                <option value = "2" selected = "selected">
                    Circular</option>
                <option value = "3">Rectangular</option>
                </select></td>
        </tr>

        <tr>
            <td align = "center" colspan = "2">
                <input type = "button" value = "Apply"
                    onclick = "jalankan()" />
            </td>
        </tr>
     </table>

    </body>
</html>
  


Gambar 11.6 Penerapan filter alpha


11.8 Membuat Teks Bersinar (glow)
Filter glow menambahkan aura warna dari teks. Warna dan kekuatan teks didemonstrasikan pada Gambar 11.7.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
<?xml version = "1.0"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<!-- GAMBAR 11.7: glow.html -->
<!-- Menerapkan filter glow -->

<html xmlns = "http://www.w3.org/1999/xhtml">
    <head>
        <title>Filter Glow</title>
        <script type = "text/javascript">
            <!--
            var indeksKekuatan = 1;
            var kounter = 1;
            var atasBawah = true;
            var arrayWarna = [ "FF0000", "FFFF00", "00FF00",
                               "00FFFF", "0000FF", "FF00FF" ];
            function terapkan()
            {
                cakupanGlow.filters( "glow" ).color =
                    parseInt( warnaGlow.value, 16 );
                cakupanGlow.filters( "glow" ).strength =
                    kekuatanGlow.value;
            }

            function mulaiDemo()
            {
                window.setInterval( "jalankanDemo()", 150 );
            }

            function jalankanDemo()
            {
                if ( atasBawah ) {
                    cakupanGlow.filters( "glow" ).strength =
                    indeksKekuatan++;
                }
                else {
                    cakupanGlow.filters( "glow" ).strength =
                    indeksKekuatan--;
                }

                if ( indeksKekuatan == 1 ) {
                    atasBawah = !atasBawah;
                    kounter++;
                    cakupanGlow.filters( "glow" ).color =
                        parseInt( arrayWarna[ kounter % 6 ], 16 );
                }

                if ( indeksKekuatan == 10 ) {
                    atasBawah = !atasBawah;
                }
            }
            // -->
        </script>
    </head>

    <body style = "background-color: #00AAAA">
        <h1>Filter Glow:</h1>

        <span id = "cakupanGlow" style = "position: absolute;
              left: 200; top: 100; padding: 5; filter: glow(
              color = red, strength = 5 ); font-size: 2em">
              Teks Bersinar
        </span>

        <table border = "1" style = "background-color: #CCFFCC">
            <tr>
                <td>Warna (Hex)</td>
                <td><input id = "warnaGlow" type = "text" size = "6"
                    maxlength = "6" value = "FF0000" /></td>
            </tr>
            <tr>
                <td>Kekuatan (1-255)</td>
                <td><input id = "kekuatanGlow" type = "text"
                    size = "3" maxlength = "3" value = "5" />
                </td>
            </tr>
            <tr>
                <td colspan = "2">
                <input type = "button" value = "Terapkan"
                    onclick = "terapkan()" />
                <input type = "button" value = "Jalankan Demo"
                    onclick = "mulaiDemo()" /></td>
            </tr>
        </table>

    </body>
</html>



Gambar 11.7 Penerapan filter glow



Baris 16-17 menetapkan sebuah array yang memuat nilai-nilai warna. Baris 45-46 mengubah atribut color dari filter glow berdasarkan nilai kounter, yang diinkremen (baris 44) setiap kali nilai dari indeksKekuatan menjadi 1. Seperti pada filter chroma, Anda menggunakan fungsi parseInt untuk menugaskan nilai heksadesimal (diambil dari arrayWarna yang dideklarasikan pada baris 16-17) kepada properti color.

Baris 33-40 menginkremen atau mendekremen properti strength dari filter glow berdasarkan nilai dari atasBawah, yang ditoggle di dalam struktur if pada baris 42 dan 49 ketika indeksKekuatan meraih nilai 1 atau 0.

11.9 Menggunakan Filter blur
Filter blur menciptakan sebuah ilusi pergerakan dengan mengaburkan teks atau citra pada arah tertentu. Seperti yang Anda lihat pada Gambar 11.8, filter blur dapat diterapkan pada salah satu dari delapan arah, dan kekuatannya dapat diubah sesuka Anda.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
<?xml version = "1.0"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<!-- Gambar 11.8: blur.html -->
<!-- Filter blur -->

<html xmlns = "http://www.w3.org/1999/xhtml">
    <head>
        <title>Filter Blur</title>
        <script type = "text/javascript">
            <!--
            var indeksKekuatan = 1;
            var arahPengaburan = 0;
            var atasBawah = 0;
            var pewaktu;

            function pengaburan()
            {
                citraKabur.filters( "blur" ).direction =
                    document.forms( "formKu" ).Arah.value;
                citraKabur.filters( "blur" ).strength =
                    document.forms( "formKu" ).Kekuatan.value;
                citraKabur.filters( "blur" ).add =
                    document.forms( "formKu" ).AddBox.checked;
            }

            function mulaiDemo()
            {
                pewaktu = window.setInterval( jalankanDemo()", 5 );
            }

            function jalankanDemo( )
            {
                document.forms( "formKu" ).Kekuatan.value =
                    indeksKekuatan;
                document.forms( "formKu" ).Arah.value =
                    ( arahPengaburan % 360 );

                if ( indeksKekuatan == 35 || indeksKekuatan == 0 )
                    atasBawah = !atasBawah;

                citraKabur.filters( "blur" ).strength =
                    ( atasBawah ? indeksKekuatan++ : indeksKekuatan-- );

                if ( indeksKekuatan == 0 )
                    citraKabur.filters( "blur" ).direction =
                        ( ( arahPengaburan += 45 ) % 360 );
            }
            // -->
        </script>
    </head>

    <body>
        <form name = "formKu" action = "">

        <table border = "1" style = "background-color: #CCFFCC">
        <caption>Kendali Filter blur</caption>

            <tr>
                <td>Arah:</td>
                <td><select name = "Arah">
                    <option value = "0">atas</option>
                    <option value = "45">atas-kanan</option>
                    <option value = "90">kanan</option>
                    <option value = "135">bawah-kanan</option>
                    <option value = "180">bawah</option>
                    <option value = "225">bawah-kiri</option>
                    <option value = "270">kiri</option>
                    <option value = "315">atas-kiri</option>
                </select></td>
            </tr>

            <tr>
                <td>Kekuatan:</td>
                <td><input name = "Kekuatan" size = "3" type = "text"
                    maxlength = "3" value = "0" /></td>
            </tr>

            <tr>
                <td>Tambahkan Asli?</td>
                <td><input type = "checkbox" name = "AddBox" /></td>
            </tr>

            <tr>
                <td align = "center" colspan = "2">
                <input type = "button" value = "Terapkan"
                    onclick = "pengaburan();" /></td>
            </tr>

            <tr>
                <td colspan = "2">
                <input type = "button" value = "Mulai demo"
                    onclick = "mulaiDemo();" />
                <input type = "button" value = "Hentikan demo"
                    onclick = "window.clearInterval( pewaktu);" /></td>
            </tr>

        </table>
        </form>

        <div id = "citraKabur" style = "position: absolute;
            top: 0; left: 300; padding: 0; filter: blur(
            add = 0, direction = 0, strength = 0 );
            background-color: white;">
        <img align = "middle" src = "buku5.jpg"
            alt = "Sampul" />
        </div>

    </body>
</html>



11.10 Menggunakan Filter wave
Filter wave memampukan Anda untuk menerapkan distorsi gelombang sinus terhadap teks atau citra pada halaman web Anda (Gambar 11.9). Filter wave, seperti dapat dilihat pada baris 35-36, memiliki banyak properti. Properti add, seperti filter blur, menerapkan efek terhadap salinan teks atau citra.

Properti freq menentukan frekuensi gelombang yang diterapkan, yaitu berapa kali gelombang sinus diterapkan pada teks atau citra. Peningkatan properti ini akan menciptakan efek gelombang yang lebih cepat, tetapi membuat teks susah dibaca.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<?xml version = "1.0"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<!-- Gambar 11.9: wave.html -->
<!-- Menerapkan filter wave -->

<html xmlns = "http://www.w3.org/1999/xhtml">
    <head>
        <title>Filter Wave</title>

        <script type = "text/javascript">
            <!--
            var faseWave = 0;

            function mulai()
            {
                window.setInterval( "wave()", 5 );
            }

            function wave()
            {
                faseWave++;
                flag.filters( "wave" ).phase = faseWave;
            }
            // -->
        </script>
    </head>

    <body onload = "mulai();">

        <span id = "flag"
            style = "align: center; position: absolute;
            left: 30; padding: 15;
            filter: wave(add = 0, freq = 1, phase = 0,
                strength = 10); font-size: 2em">
        Ini adalah teks bergelombang
        </span>

    </body>
</html>





Gambar 11.9 Menambahkan efek bergelombang pada teks

Properti phase mengindikasikan pergeseran fase dari gelombang. Properti strength merupakan amplitudo dari gelombang sinus.


11.11 Filter dropShadow dan light
Filter dropShadow menerapkan bayangan gelap seperti yang dilakukan oleh Photoshop. Ia menciptakan bayangan gelap sejumlah beberapa piksel di sekeliling citra. Filter light memampukan Anda untuk mensimulasikan efek cahaya pada halaman Anda. Gambar 11.10 mengkombinasikan kedua filter ini untuk menciptakan efek yang lebih menarik.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
<?xml version = "1.0"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<!-- Gambar 11.10: dropshadow.html -->
<!-- Menggunakan filter light dan dropshadow -->

<html xmlns = "http://www.w3.org/1999/xhtml">
    <head>
        <title>Filter dropShadow dan light DHTML</title>

        <script type = "text/javascript">
            <!--
            function setlight( )
            {
                dsImg.filters( "light" ).addPoint( 150, 150,
                    125, 255, 255, 255, 100 );
            }

            function jalankan()
            {
                eX = event.offsetX;
                eY = event.offsetY;

                xCoordinate = Math.round(
                    eX-event.srcElement.width / 2, 0 );
                yCoordinate = Math.round(
                    eY-event.srcElement.height / 2, 0 );

                dsImg.filters( "dropShadow" ).offx =
                    xCoordinate / -3;
                dsImg.filters( "dropShadow" ).offy =
                    yCoordinate / -3;

                dsImg.filters( "light" ).moveLight(
                    0, eX, eY, 125, 1 );
            }
            // -->
        </script>
    </head>

    <body onload = "setlight()" style = "background-color: green">

        <img id = "dsImg" src = "lingkaran.gif"
            style = "top: 100; left: 100; filter: dropShadow(
            offx = 0, offy = 0, color = black ) light()"
            onmousemove = "jalankan()" alt = "CitraLingkaran" />

    </body>
</html>



Gambar 11.10 Penerapan filter light dan dropShadow


11.12 Transisi: Filter blendTrans
Transisi merupakan himpunan nilai properti filter dari CSS. Gambar 11.11 merupakan sebuah contoh sederhana dari transisi blendTrans, yang menciptakan efek pengaburan.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<?xml version = "1.0"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<!-- Gambar 11.11: blendtrans.html -->
<!-- Transisi blendTrans -->

<html xmlns = "http://www.w3.org/1999/xhtml">
    <head>
        <title>Menggunakan blendTrans</title>

        <script type = "text/javascript">
            <!--
            function blendOut()
            {
                masukanTeks.filters( "blendTrans" ).apply();
                masukanTeks.style.visibility = "hidden";
                masukanTeks.filters( "blendTrans" ).play();
            }
            // -->
        </script>
    </head>

    <body>

        <div id = "masukanTeks" onclick = "blendOut()" style =
            "width: 300; filter: blendTrans( duration = 3 )">
            <h1>Teks Mengabur</h1>
        </div>

    </body>
</html>



Gambar 11.11 Penerapan filter blendTrans


Baris 26-27 menetapkan filter menjadi blendTrans dan parameter duration ditetapkan menjadi 3. Ini menentukan berapa lama transisi akan terjadi. Pada baris 16-18, Anda memanggil dua metode dari blendTrans. Metode apply (baris 16) menginisialisasi transisi. Setelah ini dilakukan, Anda menetapkan visibility dari elemen menjadi hidden. Hal ini akan berpengaruh ketika Anda memanggil metode play pada baris 18.





No comments:

Post a Comment