Tag Cloud Tagtastic dengan Transformasi CSS
() translation by (you can also view the original English article)
Hai teman-teman, hari ini kita akan membuat Tag Cloud Tagtastic dari Premium Pixels. Sebagai eksperimen dalam pendekatan alternatif, kita akan membuat tag menggunakan gradien, bayangan, dan (yang paling penting) transformasi CSS, yang akan membentuk titik setiap tag. Setelah selesai kita bahkan akan melangkah lebih jauh dan menyediakan untuk IE.
Kita telah membahas tag sebelumnya di Webdesigntuts+, tetapi pada kesempatan ini kita akan memeriksa metode alternatif untuk membuat semua bagian dan potongan komposit. Mungkin ada cara yang lebih tajam untuk menciptakan efeknya, tetapi contoh kita akan menahan diri dari gambar, menggunakan markup yang sangat bersih dan beberapa gaya yang tidak biasa. Mari kita terjebak!
Langkah 1: Markup Dasar HTML5
Mari mulai dengan memberikan markup dasar, termasuk doctype HTML5 yang familier. Kita juga akan merujuk ke stylesheet kita di dalam head dokumen kita.
1 |
<!DOCTYPE html>
|
2 |
<html>
|
3 |
<head>
|
4 |
|
5 |
<!--Meta tags-->
|
6 |
<meta charset="utf-8"> |
7 |
|
8 |
<!--Title-->
|
9 |
<title></title>
|
10 |
|
11 |
<!--Stylesheets-->
|
12 |
<link rel="stylesheet" href="css/styles.css"> |
13 |
|
14 |
</head>
|
15 |
<body>
|
16 |
|
17 |
|
18 |
|
19 |
|
20 |
|
21 |
|
22 |
|
23 |
</body>
|
24 |
</html>
|
Langkah 2: Menambahkan Beberapa Kontainer
Untuk tujuan tutorial ini kita akan membuat pembungkus/kontainer untuk menampung tag kita. Anda kemungkinan besar akan membutuhkan sesuatu yang mirip jika Anda menggunakan ini, misalnya, sidebar blog.
Untuk kami, kami hanya akan membuat div dengan kelas wrapper, menerapkan lebar 340px
dan margin 50px auto
ke tengah pembungkus pada halaman. Saya telah menambahkan 50px daripada 0 hanya untuk menambahkan sedikit margin di bagian atas sehingga tag kita tidak menyentuh bagian atas jendela browser. Saat melempar dalam CSS ini, kita akan menambahkan beberapa penataan untuk body (seperti gambar latar belakang) dan menerapkan reset.
1 |
<div class="wrapper"> |
2 |
|
3 |
|
4 |
|
5 |
</div>
|
1 |
html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,and,address,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,embed,figure,figcaption,footer,header,hgroup,menu,nav,output,ruby,section,summary,time,mark,audio,video,input,textarea,select{background:transparent;border:0;font-size:100%;margin:0;outline:0;padding:0;vertical-align:baseline}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}body{line-height:1}blockquote,q{quotes:none}blockquote:before,blockquote:after,q:before,q:after{content:none} |
1 |
body { |
2 |
font-family:'Helvetica Neue', Helvetica, Arial, sans-serif; |
3 |
font-size:16px; |
4 |
background:url(../images/bg.jpg) repeat; |
5 |
-webkit-font-smoothing: antialiased; |
6 |
}
|
7 |
|
8 |
.wrapper { |
9 |
max-width:340px; |
10 |
margin:50px auto; |
11 |
}
|
Langkah 3: Membuat Tag dengan Beberapa HTML
Saya telah menyusun tag ini dengan sangat sederhana; semua yang akan kita gunakan adalah tag anchor (pilihan logis karena ini kemungkinan akan bertindak sebagai tautan ke suatu tempat atau sesuatu). Untuk tutorial ini saya telah memberikannya kelas "tag" tetapi ini dapat diubah ke apa pun yang Anda suka.
1 |
<a href="#" class="tag">high resolution</a> |
Langkah 4: Penataan Tag
Benar, ke bagian selanjutnya! Sekarang kita akan memulai menata tag - ada banyak kode di sini tapi jangan biarkan hal itu membingungkan Anda, saya akan menjelaskan apa yang terjadi.
Saya pertama kali menambahkan beberapa hal mendasar di sini;
- Float
- Margin
- Pemosisian - Relative
- Text-decoration - none
Selanjutnya kita telah menetapkan beberapa pengaturan font, ukuran, family dan weight, diikuti oleh warna dan text-shadow. Setelah itu kita telah menerapkan beberapa padding, menggunakan ems sehingga semuanya berukuran relatif terhadap ukuran font body, atau ukuran font browser. Selanjutnya, border sederhana, meskipun kita belum menerapkan satu ke kiri. Ems telah muncul lagi! Kali ini kita akan menerapkannya ke border-radius tetapi hanya sudut kanan atas dan kanan bawah. Oke, apa Anda masih bangun? Masih ada lagi.. selanjutnya kita akan menggunakan beberapa gradien CSS3 (saya telah maju dan menggunakan aplikasi Gradient yang rapi untuk menghitung nilainya). Bagian akhir adalah beberapa box shadow, inset dan drop shadow. Ingat awalan-awalannya!
1 |
.tag { |
2 |
float:left; |
3 |
margin:0 0 7px 20px; |
4 |
position:relative; |
5 |
|
6 |
font-family:'Helvetica Neue', Helvetica, Arial, sans-serif; |
7 |
font-size:0.75em; |
8 |
font-weight:bold; |
9 |
text-decoration:none; |
10 |
|
11 |
color:#996633; |
12 |
text-shadow:0px 1px 0px rgba(255,255,255,.4); |
13 |
|
14 |
padding:0.417em 0.417em 0.417em 0.917em; |
15 |
|
16 |
border-top:1px solid #d99d38; |
17 |
border-right:1px solid #d99d38; |
18 |
border-bottom:1px solid #d99d38; |
19 |
|
20 |
-webkit-border-radius:0 0.25em 0.25em 0; |
21 |
-moz-border-radius:0 0.25em 0.25em 0; |
22 |
border-radius:0 0.25em 0.25em 0; |
23 |
|
24 |
background-image: -webkit-linear-gradient(top, rgb(254, 218, 113), rgb(254, 186, 71)); |
25 |
background-image: -moz-linear-gradient(top, rgb(254, 218, 113), rgb(254, 186, 71)); |
26 |
background-image: -o-linear-gradient(top, rgb(254, 218, 113), rgb(254, 186, 71)); |
27 |
background-image: -ms-linear-gradient(top, rgb(254, 218, 113), rgb(254, 186, 71)); |
28 |
background-image: linear-gradient(top, rgb(254, 218, 113), rgb(254, 186, 71)); |
29 |
filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0,StartColorStr='#feda71', EndColorStr='#feba47'); |
30 |
|
31 |
-webkit-box-shadow: |
32 |
inset 0 1px 0 #faeaba, |
33 |
0 1px 1px rgba(0,0,0,.1); |
34 |
-moz-box-shadow: |
35 |
inset 0 1px 0 #faeaba, |
36 |
0 1px 1px rgba(0,0,0,.1); |
37 |
box-shadow: |
38 |
inset 0 1px 0 #faeaba, |
39 |
0 1px 1px rgba(0,0,0,.1); |
40 |
|
41 |
z-index:100; |
42 |
}
|
Langkah 5: Panah
Oke, kita telah menyelesaikan bagian utama dari tag, bagian selanjutnya adalah membuat tanda panah. Untuk menambahkan ini, kita akan menggunakan pseudo elemen :before
. Kita juga akan bereksperimen dengan beberapa teknik lanjutan di sini dari CSS; transformasi. Membuat panah-panah ini melibatkan banyak percobaan dan kesalahan. Saya harus mencoba lebar dan tinggi yang berbeda bersama dengan posisi atas dan bawah untuk membuatnya sesempurna mungkin! Oleh karena itu, umpan balik sangat disambut..
Kita telah menggunakan gradien latar belakang yang sama seperti sebelumnya tetapi dengan satu perubahan kecil: karena kita akan memutar persegi yang akan kita buat, kita juga perlu memutar gradien sehingga cocok dengan bagian utama dari tag. Aplikasi Gradient membantu dalam membiarkan saya mengubah arah gradien. Bagian selanjutnya adalah membuat beberapa border, di kiri dan bawah. Semua yang tersisa berkaitan dengan panah adalah menambahkan border-radius untuk merapikan titik dan akhirnya menerapkan transformasi kita. Kita akan memutar persegi yang kita buat 45 derajat sehingga terlihat seperti panah. Kita telah menggunakan transform: 45;
bersama dengan yang awalannya.
1 |
.tag:before { |
2 |
content:''; |
3 |
|
4 |
width:1.30em; |
5 |
height:1.358em; |
6 |
|
7 |
background-image: -webkit-linear-gradient(left top, rgb(254, 218, 113), rgb(254, 186, 71)); |
8 |
background-image: -moz-linear-gradient(left top, rgb(254, 218, 113), rgb(254, 186, 71)); |
9 |
background-image: -o-linear-gradient(left top, rgb(254, 218, 113), rgb(254, 186, 71)); |
10 |
background-image: -ms-linear-gradient(left top, rgb(254, 218, 113), rgb(254, 186, 71)); |
11 |
background-image: linear-gradient(left top, rgb(254, 218, 113), rgb(254, 186, 71)); |
12 |
filter: progid:DXImageTransform.Microsoft.gradient(GradientType=1,StartColorStr='#feda71', EndColorStr='#feba47'); |
13 |
|
14 |
position:absolute; |
15 |
left:-0.69em; |
16 |
top:.2em; |
17 |
|
18 |
-webkit-transform:rotate(45deg); |
19 |
-moz-transform:rotate(45deg); |
20 |
-o-transform:rotate(45deg); |
21 |
transform:rotate(45deg); |
22 |
|
23 |
border-left:1px solid #d99d38; |
24 |
border-bottom:1px solid #d99d38; |
25 |
|
26 |
-webkit-border-radius:0 0 0 0.25em; |
27 |
-moz-border-radius:0 0 0 0.25em; |
28 |
border-radius:0 0 0 0.25em; |
29 |
|
30 |
z-index:1; |
31 |
}
|
Anda sekarang harus memiliki sesuatu yang mirip dengan yang berikut ini; Catatan saya telah memperbesar sehingga Anda dapat melihat di mana panah terhubung ke bagian utama, ini nyaris tidak terlihat ketika dilihat pada ukuran normal.



Langkah 6: Lubang Tag
Bagian terakhir untuk melengkapi tag kita adalah membuat lubang kecil di atasnya. Di sini kita akan menggunakan pseudo lagi, tetapi kali ini, elemen :after
. Apa yang kita lakukan untuk membuat lubang itu agak sederhana. Kita telah mendefinisikan lebar dan tinggi dalam ems sehingga akan tumbuh dengan lancar. Berikutnya kita telah menambahkan border radius besar yang akan membuat lingkaran dengan border untuk memberi garis tepi. Berikut ini kita telah menambahkan drop shadow yang mirip dengan text-shadow. Akhirnya kita memposisikannya (saat menggunakan ems).
1 |
.tag:after { |
2 |
content:''; |
3 |
|
4 |
width:0.5em; |
5 |
height:0.5em; |
6 |
|
7 |
background:#fff; |
8 |
|
9 |
-webkit-border-radius:4.167em; |
10 |
-moz-border-radius:4.167em; |
11 |
border-radius:4.167em; |
12 |
|
13 |
border:1px solid #d99d38; |
14 |
|
15 |
-webkit-box-shadow:0 1px 0 #faeaba; |
16 |
-moz-box-shadow:0 1px 0 #faeaba; |
17 |
box-shadow:0 1px 0 #faeaba; |
18 |
|
19 |
position:absolute; |
20 |
top:0.667em; |
21 |
left:-0.083em; |
22 |
z-index:9999; |
23 |
}
|



Langkah 7: Menambahkan Beberapa Gaya Hover
Untuk membuat tag kita lebih dahsyat, kita akan menambahkan beberapa gaya hover. Kita harus menambahkan ini ke bagian utama dari tag dan tanda panah (sambil mengingat untuk memutar gradien untuk panah). Kita juga mengubah warna border pada keduanya.
1 |
.tag:hover { |
2 |
background-image: -webkit-linear-gradient(top, rgb(254, 225, 141), rgb(254, 200, 108)); |
3 |
background-image: -moz-linear-gradient(top, rgb(254, 225, 141), rgb(254, 200, 108)); |
4 |
background-image: -o-linear-gradient(top, rgb(254, 225, 141), rgb(254, 200, 108)); |
5 |
background-image: -ms-linear-gradient(top, rgb(254, 225, 141), rgb(254, 200, 108)); |
6 |
background-image: linear-gradient(top, rgb(254, 225, 141), rgb(254, 200, 108)); |
7 |
filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0,StartColorStr='#fee18d', EndColorStr='#fec86c'); |
8 |
|
9 |
border-color:#e1b160; |
10 |
}
|
11 |
|
12 |
.tag:hover:before { |
13 |
background-image: -webkit-linear-gradient(left top, rgb(254, 225, 141), rgb(254, 200, 108)); |
14 |
background-image: -moz-linear-gradient(left top, rgb(254, 225, 141), rgb(254, 200, 108)); |
15 |
background-image: -o-linear-gradient(left top, rgb(254, 225, 141), rgb(254, 200, 108)); |
16 |
background-image: -ms-linear-gradient(left top, rgb(254, 225, 141), rgb(254, 200, 108)); |
17 |
background-image: linear-gradient(left top, rgb(254, 225, 141), rgb(254, 200, 108)); |
18 |
filter: progid:DXImageTransform.Microsoft.gradient(GradientType=1,StartColorStr='#fee18d', EndColorStr='#fec86c'); |
19 |
|
20 |
border-color:#e1b160; |
21 |
}
|
Langkah 8: Menyediakan untuk IE
Jika Anda masih ingin menunjukkan tag Anda dalam kemuliaan penuh bagi pengguna IE Anda harus mengambil pendekatan yang berbeda terhadap tag ini, dimulai dengan membuat stylesheet khusus IE. Saya akan menjelaskan mengapa.. Pertama, banyak efek CSS3 kita tidak akan berfungsi di versi lebih awal dari IE9 (hanya beberapa yang berfungsi di IE9 sebagaimana adanya), tetapi masalah utama di sini adalah transformasi yang tidak akan berfungsi. Untuk melayani pengguna IE, kita akan mengedit kode kita sedikit. Kita akan memulai dengan mengubah HTML kita terlebih dahulu, dengan mengganti div wrapper
dan semua yang ada di dalamnya dengan:



1 |
<div class="wrapper"> |
2 |
|
3 |
<a href="#" class="tag"> |
4 |
<span class="arrow"></span> |
5 |
<span class="text">high resolution</span> |
6 |
<span class="end"></span> |
7 |
</a>
|
8 |
|
9 |
</div>
|
Kita akan menggunakan tag anchor lagi tetapi dengan 3 span di dalamnya; kita perlu satu untuk membuat panah, bagian utama dan akhir yang memiliki border radius.
Langkah 9: Gambar untuk Versi IE kita
Untuk memastikan tag kita berfungsi di IE, kita harus menggunakan gambar. Mulailah dengan menghapus semua yang ada di bawah gaya .wrapper, semua yang terkait tag! Anda sekarang harus menempelkan potongan berikut. Kita hanya menerapkan beberapa gambar latar belakang di sini, tetapi juga mengulangi latar belakang teks pada sumbu x karena teks bisa berapapun panjangnya! Bahkan Supercalafragalisticexpialadoshus!
1 |
.arrow { |
2 |
width:15px; |
3 |
height:25px; |
4 |
float:left; |
5 |
|
6 |
background:url(../images/arrow.png) no-repeat; |
7 |
}
|
8 |
.text { |
9 |
height:25px; |
10 |
float:left; |
11 |
|
12 |
padding-left:4px; |
13 |
padding-right:4px; |
14 |
|
15 |
background:url(../images/text.png) repeat-x; |
16 |
|
17 |
font-family:'Helvetica Neue', Helvetica, Arial, sans-serif; |
18 |
font-size:0.75em; |
19 |
font-weight:bold; |
20 |
|
21 |
color:#996633; |
22 |
text-shadow:0px 1px 0px rgba(255,255,255,.4); |
23 |
|
24 |
line-height:23px; |
25 |
}
|
26 |
.end { |
27 |
width:4px; |
28 |
height:25px; |
29 |
float:left; |
30 |
|
31 |
background:url(../images/end.png) no-repeat; |
32 |
}
|
33 |
|
34 |
|
35 |
.tag:hover .arrow { background-image:url(../images/arrow_hover.png); } |
36 |
.tag:hover .text { background-image:url(../images/text_hover.png); } |
37 |
.tag:hover .end { background-image:url(../images/end_hover.png); } |
Kesimpulan
Yah itu saja! Itu tutorial lainnya yang lengkap dan kelihatannya bagus! Kita telah mengambil tag tagtastic ini dan membuatnya dengan CSS sementara menyediakannya untuk IE pada saat yang bersamaan. Tag ini dapat digunakan untuk segala macam hal - lanjutkan dan gunakan di sidebar, blog, apa pun yang Anda suka!



Saya harap Anda menyukai tutorial ini, terima kasih telah membaca.