Thursday, October 6, 2011

Membuat Tooltip dengan CSS Pseudo-Element

CSS Tooltip
Tooltip dengan CSS3

Toooltip. Secara umum dapat dibuat dengan cara menyisipkan atribut title='' pada elemen seperti ini:

<a href='http://latitudu.blogspot.com' title='Saya adalah tooltip'>Saya memiliki tooltip</a>

Namun di sini Saya hanya ingin memberikan pengetahuan bahwa tooltip juga sebenarnya dapat diperbaiki tampilannya hanya dengan bermodalkan CSS Pseudo-Element:

Berikut ini adalah kode CSS untuk memproduksi tooltip dari atribut title:

*[title]:before {
  content:attr(title);
  position:absolute;
  z-index:10;
  width:auto;
  bottom:100%;
  left:0;
  margin-bottom:3px;
  background:#000;
  color:#fff;
  font-size:11px;
  font-weight:normal;
  text-shadow:none;
  padding:4px 10px 5px;
  opacity:0.8;
  filter:alpha(opacity=80);
  -webkit-border-radius:5px;
  -moz-border-radius:5px;
  border-radius:5px;
  display:none;
}

*[title]:hover {position:relative;}

*[title]:hover:before {
  display:block;
}

Selektor *[title]:before akan menyeleksi semua elemen yang mengandung atribut title='' di dalamnya, kemudian akan menyisipkan sebuah elemen palsu yang berisikan nilai dari atribut title='' tersebut (dalam hal ini, kode yang dimaksud adalah content:attr(title)). Namun, deklarasi display:none; akan menyembunyikan wujud elemen palsu tersebut, hingga pada akhirnya pointer diletakkan di atas elemen yang mengandung atribut title='' tersebut, barulah elemen palsu akan ditampilkan (display:block;).

Untuk tingkatan lebih lanjut, CSS ini sebenarnya juga bisa digunakan untuk menampilkan isi dari atribut lain, misalnya href=''. Caranya cukup dengan mengganti semua selektor atribut title dan nilai content dengan href seperti ini:

*[href]:before {
  content:attr(href);
  position:absolute;
  z-index:10;
  width:auto;
  bottom:100%;
  left:0;
  margin-bottom:3px;
  background:#000;
  color:#fff;
  font-size:11px;
  font-weight:normal;
  text-shadow:none;
  padding:4px 10px 5px;
  opacity:0.8;
  filter:alpha(opacity=80);
  -webkit-border-radius:5px;
  -moz-border-radius:5px;
  border-radius:5px;
  display:none;
}

*[href]:hover {position:relative;}

*[href]:hover:before {
  display:block;
}

Jika kode di atas yang diterapkan, maka tooltip yang ditampilkan adalah berupa alamat URL. Ini jika kamu menghendaki alamat URL yang dimunculkan sebagai tooltip, bukannya nilai dari atribut title='' seperti pada umumnya.

Labels:

5 Comments:

At Thursday, November 22, 2012 at 7:39:00 PM GMT+7, Blogger Unknown said...

Wah info bagusi ni ..
kebetulan CSS memang kesukaan saya ..

 
At Thursday, February 7, 2013 at 11:55:00 AM GMT+7, Anonymous Anonymous said...

Wah menarik nih gan ,..
Btw tapi knpa tooltip bawaan masih muncul yaa . yang warna putih gan .. -__-
Solusi nya yaa ...

 
At Thursday, February 7, 2013 at 1:05:00 PM GMT+7, Blogger Taufik Nurrohman said...

Pakai atribut HTML5 data-*. Pakai nama data-title saja supaya mudah diingat:

<a href="#" data-title="Saya adalah tooltip!">Teks Tautan</a>

Nantinya, teks tooltip akan diambil dari atribut data-title, jadinya seperti ini:

*[data-title]:before {
content:attr(data-title);
position:absolute;
bottom:100%;
left:0;
z-index:10;
margin-bottom:3px;
background-color:black;
color:white;
font-size:11px;
font-weight:normal;
text-shadow:none;
padding:4px 10px 5px;
width:auto;
white-space:nowrap;
display:none;
}

*[data-title]:hover {position:relative}
*[data-title]:hover:before {display:block}

 
At Friday, December 19, 2014 at 8:21:00 AM GMT+7, Blogger IRIL SAGITA said...

Kak, jika ingin menambahkan efek transisi gimana caranya ?

 
At Saturday, December 27, 2014 at 7:53:00 AM GMT+7, Blogger Taufik Nurrohman said...

Ganti properti display dengan visibility dan opacity:

body {padding-top:50px}

a[title] {position:relative}
a[title]:before {
content:attr(title);
position:absolute;
z-index:10;
width:auto;
bottom:100%;
left:0;
margin-bottom:10px;
background:#000;
color:#fff;
font-size:11px;
font-weight:normal;
text-shadow:none;
padding:4px 10px 5px;
-webkit-border-radius:5px;
-moz-border-radius:5px;
border-radius:5px;
-webkit-transition:all .4s;
-moz-transition:all .4s;
-ms-transition:all .4s;
-o-transition:all .4s;
transition:all .4s;
visibility:hidden;
opacity:0;
}

*[title]:hover:before {
margin-bottom:3px;
visibility:visible;
opacity:.8;
}


Demo: Pure CSS Tooltip

 

Post a Comment

<< Home