Advertisement
  1. Web Design
  2. HTML/CSS
  3. HTML

Memperluas HTML dengan Membuat Tag Kustom

Scroll to top
Read Time: 8 min

() translation by (you can also view the original English article)

Dalam tutorial ini saya akan tunjukkan pada Anda betapa mudahnya memperluas bahasa HTML dengan menggunakan tag-tag custom. Berbagai tag kustom bisa digunakan untuk mengimplementasikan beragam perilaku (behavior), jadi penggunaannya adalah cara yang memudahkan untuk menulis lebih sedikit kode dan membuat dokumen HTML Anda lebih sederhana.

Apa Itu Tag HTML Kustom?

Sebagai contoh, dengan HTML Anda menggunakan tag <b>, untuk menampilkan teks cetak tebal. Jika Anda butuh daftar, Anda bisa menggunakan tag <ul> dengan tag anak <li> untuk tiap item di list. Tag-tag tersebut diinterpretasikan oleh peramban dan bersama dengan CSS menentukan bagaimana ditampilkannya konten suatu halaman web dan bagaimana perilaku konten tiap-tiap bagian.

Terkadang penggunaan satu tag HTML saja tidaklah cukup untuk fungsionalitas yang dibutuhkan dalam aplikasi web. Biasanya hal ini diselesaikan dengan menggunakan berbagai tag HTML berikut JavaScript dan CSS, tetapi solusi semacam ini tidaklah begitu elegan.

Solusi yang lebih elegan adalah dengan menggunakan tag kustom—pengidentifikasi yang dilingkupi dengan tanda <> dan diinterpretasikan oleh peramban unuk menampilkan fungsionalitas yang diharapkan. Sama seperti tag HTML, kita harus bisa menggunakan tag HTML kustom beberapa kali dalam satu halaman, dan kita juga harus bisa membuat atribut tag dan sub tag untuk membantu fungsionalitas tag kustom. Mari kita lihat satu contohnya!

Contoh #1: Membuat Tag HTML Kustom Gravatar

Mari membuat tag kustom yang akan menampilkan gambar Gravatar untuk alamat email tertentu. Tag ini akan kita namai <codingdude-gravatar>, dan kita akan memasukkan alamat email sebagai atribut yang dinamai email.

Anda bisa memberi nama tag kustom dengan apa saja sesuai keinginan, tetapi satu hal yang harus diperhatikan adalah bahwa dalam contoh ini nama tag kustomnya dimulai dengan codingdude-. Yang terbaik adalah dengan menggunakan prefiks semacam ini untuk tag kustom Anda agar terhindar dari konflik penamaan dengan tag kustom lainnya. Sangat penting juga untuk tidak menggunakan nama tag yang sudah didefinisikan oleh HTML.

Untuk mengimplementasikan dan menguji tag kita, ada beberapa hal yang perlu dibuat terlebih dahulu:

  • Satu folder untuk menyimpan file-file proyek; kita beri nama folder ini gravatar-custom-tag.
  • Satu file HTML index.html di dalam folder gravatar-custom-tag. File ini akan berisi kode-kode HTML.
  • Satu file JS codingdude-gravatar.js di dalam folder gravatar-custom-tag. File ini berisi kode JavaScript yang mengimplementasikan tag kustom.

Mari menyunting file index.html dan menjadikan kontennya terlihat sebagaimana berikut:

1
<html>
2
    <head>
3
        <script type="text/javascript" src="codingdude-gravatar.js"></script>
4
    </head>
5
<body>
6
    This is my Gravatar picture: 
7
    <codingdude-gravatar email="admin@coding-dude.com"></codingdude-gravatar>
8
</body>
9
</html>

Jika kita memuat index.html di peramban saat ini, hasilnya tidak akan semengesankan itu karena kode untuk tag kustom belum diimplementasikan:

An example of the custom tagAn example of the custom tagAn example of the custom tag

Satu hal yang harus diperhatikan adalah bahwa peramban sangatlah pemaaf, jadi Anda bisa memiliki tag tak dikenal dalam suatu dokumen dan peramban akan sekedar mengabaikannya. Agar tag kustom Gravatar benar-benar bisa menampilkan gambar untuk email, sebelumnya harus dipahami cara kerja Gravatar.

Gravatar bekerja dengan menerjemahkan alamat email ke URL suatu gambar PNG yang telah dipilih pengguna. Penerjemahannya dilakukan dengan memperhitungan tanda MD5 alamat email. URL gambar Gravatar akan terlihat seperti ini: https://www.gravatar.com/avatar/EMAIL_MD5_HASH.png Maka pertama kali kita membutuhkan fungsi untuk memperhitungkan hash MD5 dari suatu string. Untuk itu kita akan menggunakan library sumber terbuka yang akan ditambahkan ke file index.html seperti ini:

1
<html>
2
    <head>
3
        <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/blueimp-md5/2.7.0/js/md5.min.js"></script>
4
        <script type="text/javascript" src="codingdude-gravatar.js"></script>
5
    </head>
6
<body>
7
    This is my Gravatar picture: <codingdude-gravatar email="admin@coding-dude.com" />
8
</body>
9
</html>

Sekarang mari kita lanjutkan ke implementasi tag kustom. Harus dilakukan implementasi kode yang mula-mula mengidentifikasi tag kustom di dokumen kemudian kita akan mengimplementasikan fungsionalitas tag kustomnya. Ini semua akan masuk ke file codingdude-gravatar.js dan akan tampak seperti ini:

1
function customTag(tagName,fn){
2
  document.createElement(tagName);
3
  //find all the tags occurrences (instances) in the document

4
  var tagInstances = document.getElementsByTagName(tagName);
5
  	//for each occurrence run the associated function

6
		for ( var i = 0; i < tagInstances.length; i++) {
7
            fn(tagInstances[i]);
8
		}
9
}
10
11
function codingdudeGravatar(element){
12
		//code for rendering the element goes here

13
		if (element.attributes.email){
14
			//get the email address from the element's email attribute

15
			var email = element.attributes.email.value;
16
			var gravatar = "http://www.gravatar.com/avatar/"+md5(email)+".png";
17
			element.innerHTML = "<img src='"+gravatar+"'>";
18
		}
19
}	
20
21
customTag("codingdude-gravatar",codingdudeGravatar);

Dengan melihat kodenya, kita akan mengetahui fungsi customTag() yang menemukan terjadinya tag kustom berdasarkan nama (parameter tagName) dan mengeksekusi fungsionalitas yang terhubung dengan tag kustom tersebut (melalui parameter fn).

Panggilan document.createElement(tagName) penting bagi sejumlah peramban (khususnya IE) untuk menginformasikan peramban bahwa kita akan menggunakan tag kustom bernama tagName, jika tidak tag tersebut mungkin tidak bekerja.

Parameter fn adalah fungsi yang mengimplementasikan apa yang seharusnya dilakukan oleh tag kustom. Dalam hal ini, fn adalah codingdudeGravatar(). Fungsi ini berperan sebagai parameter referensi ke elemen tag kustom. Jika tag kustom memiliki atribut yang disebut email maka tag itu akan memasukkan nilai ke fungsi md5() dari library sumber terbuka kita. Hasilnya kemudian digunakan untuk membuat URL gambar Gravatar, yang ditambahkan melalui elemen <img> di dalam elemen tag kustom kita.

Baris terakhir skrip akan memanggil fungsi customTag() dengan nama tag kustom serta fungsi implementasi yang terkait. Fungsi tag kustom bisa digunakan kembali untuk jenis tag kustom apa saja; Anda hanya diharuskan mengimplementasikan fungsi yang melaksanakan apa yang Anda inginkan.

Sekarang, jika kita memuat file index.html dalam suatu peramban, kita akan melihat Gravatar untuk email saya:

Viewing the Gravatar with the textViewing the Gravatar with the textViewing the Gravatar with the text

Contoh #2: Tag HTML Kustom Tingkat Lanjut untuk Menggambar Diagram Lingkaran

Dalam contoh kita sebelumnya, kita menyaksikan implementasi tag HTML kustom yang sangat sederhana. Anda bisa menggunakan pendekatan yang sama untuk mengimplementasikan tag kustom apa saja yang Anda inginkan.

Mari kita lihat cara mengimplementasikan tag kustom yang lebih canggih, yang bisa digunakan untuk menggambar diagram lingkaran. Mari membuat file-file yang dibutuhkan untuk tag kustom ini:

  • Membuat suatu folder dan beri nama piechart-custom-tag. Ini akan menjadi folder proyeknya.
  • Di dalam folder piechart-custom-tag, buatlah suatu file HTML dan beri nama index.html. File ini akan berisi kode HTML.
  • Buat juga file JavaScript codingdude-piechart.js yang akan berisi implementasi tag kustom kita.

Tag kustom sangat sering digunakan sebagai wrapper untuk berbagai fungsionalitas. Dalam hal ini, kita akan menggunakan tag <codingdude-piechart> sebagai wrapper untuk menggambar diagram lingkaran. Jika Anda melewatkan tutorial saya tentang Bagaimana Menggambar Diagram dengan JavaScript dan HTML5 Canvas, mungkin Anda ingin melihatnya terlebih dahulu. Kita akan menggunakan kode dari tutorial itu dan menggunakan fungsionalitasnya dalam tag kustom kita.

Jadi suntinglah file codingdude-piechart.js dan tambahkan fungsi berikut ini dari tutorial tersebut:

  • drawLine()
  • drawArc()
  • drawPieSlice()
  • Piechart()

Sekarang mari menyunting file index.html dan menempatkan tag kustom untuk menggambar diagram lingkaran seperti ini:

1
<html>
2
    <head>
3
        <script type="text/javascript" src="codingdude-piechart.js"></script>
4
    </head>
5
<body>
6
    <codingdude-piechart width="200" height="200" colors="#fde23e,#f16e23, #57d9ff,#937e88">
7
      <codingdude-data category="Classical music">10</codingdude-data>
8
      <codingdude-data category="Alternative rock">14</codingdude-data>
9
      <codingdude-data category="Pop">2</codingdude-data>
10
      <codingdude-data category="Jazz">12</codingdude-data>
11
    </codingdude-piechart>
12
</body>
13
</html>

Tujuannya di sini adalah mengatur lebar dan panjang diagram lingkaran dengan menggunakan atribut width dan height. Atribut colors mengatur warna yang digunakan untuk potongan diagram lingkaran.

Sebagaimana disebutkan sebelumnya, tag kustom ini sedikit lebih kompleks karena kita akan menggunakan sub-tag untuk tag kustom ini. Kita akan menggunakan sub-tag <codingdude-data> di sini untuk mengatur data bagi diagramnya. Sekarang mari kita lihat cara mengimplementasikan kode tersebut untuk tag kustom ini.

Sunting file codingdude-piechart.js dan berdasarkan fungsi yang diambil dari tutorial diagram lingkaran, letakkan kode berikut ini:

1
//here you should add the function from the tutorial

2
//How to Draw Charts Using JavaScript and HTML5 Canvas

3
//...

4
function customTag(tagName,fn){
5
  document.createElement(tagName);
6
        //find all the tags occurrences (instances) in the document

7
        var tagInstances = document.getElementsByTagName(tagName);
8
		//for each occurrence run the associated function

9
		for ( var i = 0; i < tagInstances.length; i++) {
10
            fn(tagInstances[i]);
11
		}
12
}
13
14
function PiechartTag(element){
15
    //add the canvas where to draw the piechart

16
    var canvas = document.createElement("canvas"); 
17
    //get the width and height from the custom tag attributes

18
    canvas.width = element.attributes.width.value;
19
    canvas.height = element.attributes.height.value;
20
    element.appendChild(canvas);
21
    
22
    //get the colors for the slices from the custom tag attribute

23
    var colors = element.attributes.colors.value.split(",");
24
    
25
    //load the chart data from the <codingdude-data> sub-tags

26
    var chartData = {};
27
    var chartDataElements = element.querySelectorAll("codingdude-data");
28
    for (var i=0;i<chartDataElements.length;i++){
29
        chartData[chartDataElements[i].attributes.category.value] = parseFloat(chartDataElements[i].textContent);
30
        //remove the data sub-tags

31
        chartDataElements[i].parentNode.removeChild(chartDataElements[i]);
32
    }
33
  
34
    //call the draw() function

35
    new Piechart(
36
        {
37
        canvas:canvas,
38
        data:chartData,
39
        colors:colors
40
        }
41
    ).draw();
42
}
43
44
customTag("codingdude-piechart",PiechartTag);

Fungsi customTag() sama dengan yang digunakan di Contoh#1. Implementasi tag kustom <codingdude-piechart> diwadahi dalam fungsi PiechartTag(). Fungsi ini menangani aspek-aspek berikut:

  • Fungsi tersebut membuat elemen <canvas> untuk tempat menggambar diagramnya, dan menambahkannya ke dalam tag kustom. Lebar dan panjang kanvas diambil dari atribut tag kustom.
  • Fungsi tersebut mencari atribut colors elemen dan mentransformasikannya menjadi array warna yang digunakan untuk potongan diagram lingkaran.
  • Fungsi tersebut memuat elemen-elemen <codingdude-data> satu per satu dengan struktur data yang dimasukkan ke dalam diagram lingkaran. Karena elemen-elemen memiliki konten teks, peramban akan merender-nya dan konten teks akan ditampilkan. Kita tidak menginginkan itu, buang saja elemennya setelah mengambil datanya.
  • Terakhir, kita akan memanggil konstruktor Piechart() dengan opsi yang disyaratkan dan memanggil fungsi draw() untuk menggambar diagram lingkarannya.

Jika Anda memuat index.html, Anda bisa melihat bahwa tag kustomnya di-render sebagai diagram lingkaran dan semestinya terlihat seperti ini:

The custom tag is rendered as a pie chartThe custom tag is rendered as a pie chartThe custom tag is rendered as a pie chart

Dan inilah diagram lingkaran yang cantik. Mengubah atribut <codingdude-data> akan mengubah diagram lingkarannya. Teknik tag kustom yang sama digunakan juga untuk pengembangan Infographic Charts & Graphics HTML Tags Library dari CodeCanyon.

Infographic charts and graphics HTML tags libraryInfographic charts and graphics HTML tags libraryInfographic charts and graphics HTML tags library
Library Diagram dari CodeCanyon

Library tersebut berisi tag-tag kustom yang tidak hanya untuk diagram lingkaran saja, tetapi juga untuk diagram garis, diagram batang, dan jenis diagram lainnya.

Penutup

Dalam tutorial ini, kita telah melihat dua contoh cara membuat tag kustom HTML bagi dua fungsionalitas yang berbeda. Dengan menggunakan fungsi customTag(), Anda bisa dengan mudah mengembangkan tag kustom Anda sendiri.

Jika Anda menikmati tutorial ini, kami juga memiliki sejumlah besar tutorial tentang HTML5 dan teknologi-teknologi terkait, jadi jangan ragu untuk mempelajarinya juga.

Advertisement
Did you find this post useful?
Want a weekly email summary?
Subscribe below and we’ll send you a weekly email summary of all new Web Design tutorials. Never miss out on learning about the next big thing.
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.