Contoh:
<a href="example.com" title="My site"> Link </a>
Bagaimana cara mengubah presentasi atribut "title" di browser ?. Secara default, itu hanya memiliki latar belakang kuning dan font kecil. Saya ingin membuatnya lebih besar dan mengubah warna latar belakang.
Apakah ada cara CSS untuk mengatur atribut title?
Jawaban:
Berikut adalah contoh cara melakukannya:
sumber
Tampaknya sebenarnya ada solusi CSS murni, hanya membutuhkan
attr
ekspresi css , konten yang dihasilkan dan pemilih atribut (yang menunjukkan bahwa ia bekerja sejauh IE8):Sumber: https://jsfiddle.net/z42r2vv0/2/
perbarui w / input dari @ViROscar: harap dicatat bahwa tidak perlu menggunakan atribut tertentu, meskipun saya telah menggunakan atribut "title" pada contoh di atas; sebenarnya rekomendasi saya adalah menggunakan atribut "alt", karena ada kemungkinan konten akan dapat diakses oleh pengguna yang tidak dapat memanfaatkan CSS.
perbarui lagi saya tidak mengubah kode karena atribut "title" pada dasarnya berarti atribut "tooltip", dan mungkin bukan ide yang baik untuk menyembunyikan teks penting di dalam bidang yang hanya dapat diakses di hover, tetapi jika Anda tertarik untuk membuat teks ini dapat diakses, atribut "aria-label" tampaknya merupakan tempat terbaik untuk itu: https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/ARIA_Techniques/Using_the_aria-label_attribute
sumber
stacking context
. Semua elemen denganposition
selainstatic
membuat konteks penumpukan baru dan tooltip CSS murni tidak terlihat di luar dan tidak bisa melampaui konteks penumpukan , jadi jika Anda memiliki elemen yang erat dengan posisirelative
, tooltip CSS Anda tidak akan terlihat. Satu-satunya solusi adalah melampirkan tooltip ke konteks penumpukan atas (misalnya<body>
) yang membutuhkan JavaScript.Anda tidak dapat mendesain
title
atribut yang sebenarnyaBagaimana teks dalam
title
atribut ditampilkan ditentukan oleh browser dan bervariasi dari browser ke browser. Halaman web tidak mungkin menerapkan gaya apa pun pada tooltip yang ditampilkan browser berdasarkantitle
atribut.Namun, Anda dapat membuat sesuatu yang sangat mirip menggunakan atribut lain.
Anda dapat membuat pseudo-tooltip dengan CSS dan atribut khusus (mis.
data-title
)Untuk ini, saya akan menggunakan
data-title
atribut.data-*
atribut adalah metode untuk menyimpan data khusus dalam elemen DOM / HTML. Ada beberapa cara untuk mengaksesnya . Yang penting, mereka dapat dipilih oleh CSS.Karena Anda dapat menggunakan CSS untuk memilih elemen dengan
data-title
atribut, Anda kemudian dapat menggunakan CSS untuk membuat:after
(atau:before
)content
yang berisi nilai dari atribut yang digunakanattr()
.Contoh tooltip gaya
Lebih besar dan dengan warna latar belakang yang berbeda (sesuai permintaan pertanyaan):
Gaya yang lebih rumit (diadaptasi dari posting blog ini ):
Masalah Dikenal
Tidak seperti
title
tooltip nyata , tooltip yang dihasilkan oleh CSS di atas tidak, tentu, dijamin akan terlihat pada halaman (yaitu mungkin di luar area yang terlihat). Di sisi lain, itu dijamin berada di dalam jendela saat ini, yang bukan kasus tooltip yang sebenarnya.Selain itu, pseudo-tooltip diposisikan relatif terhadap elemen yang memiliki pseudo-tooltip daripada relatif di mana mouse berada pada elemen tersebut. Anda mungkin ingin menyempurnakan di mana pseudo-tooltip ditampilkan. Setelah itu muncul di lokasi yang diketahui relatif terhadap elemen dapat menjadi manfaat atau kelemahan, tergantung pada situasinya.
Anda tidak dapat menggunakan
:before
atau:after
pada elemen yang bukan wadahAda penjelasan yang baik dalam jawaban ini untuk "Bisakah saya menggunakan: sebelum atau: setelah elemen semu pada bidang input?"
Efektif, ini berarti bahwa Anda tidak dapat menggunakan metode ini langsung pada unsur-unsur seperti
<input type="text"/>
,<textarea/>
,<img>
, dll solusi mudah adalah untuk membungkus elemen yang tidak wadah dalam<span>
atau<div>
dan memiliki pseudo-tooltip pada wadah.Contoh menggunakan pseudo-tooltip pada
<span>
pembungkus elemen non-kontainer:Dari kode di posting blog yang ditautkan di atas (yang pertama kali saya lihat di jawaban di sini yang menjiplaknya), tampak jelas bagi saya untuk menggunakan
data-*
atribut daripadatitle
atribut. Melakukan hal itu juga disarankan dalam komentar oleh snostorm tentang jawaban (sekarang dihapus) itu.sumber
input[type='text']
atautextarea
, tapi saya tidak tahu mengapa. Adakah yang bisa menjelaskan?:before
dan:after
elemen pseudo tidak bekerja pada elemen yang bukan wadah. Ada penjelasan yang baik dalam jawabannya: Dapatkah saya menggunakan: sebelum atau: setelah elemen semu pada bidang input? Untuk menggunakan metode ini, mungkin paling mudah untuk membungkus elemen-elemen yang bukan wadah di dalam<span>
atau<div>
di mana Anda meletakkandata-title
atribut. Anda mungkin juga ingin memberikannyadisplay: inline-block;
, karena ukurannya akan sama dengan<input>
atau<textarea>
. Saya telah memperbarui jawaban ini dengan sebuah contoh.CSS tidak dapat mengubah tampilan tooltip. Ini tergantung pada browser / OS. Jika Anda menginginkan sesuatu yang berbeda, Anda harus menggunakan Javascript untuk menghasilkan markup ketika Anda mengarahkan kursor ke elemen, bukan tooltip default.
sumber
Saya pikir saya akan mengirim solusi JavaScript 20 baris saya di sini. Ini tidak sempurna, tetapi mungkin berguna untuk beberapa tergantung pada apa yang Anda butuhkan dari tooltips Anda.
Kapan menggunakannya
TITLE
atribut yang ditentukan (ini termasuk elemen yang ditambahkan secara dinamis ke dokumen di masa depan)TITLE
atribut, jelas semantik)Kapan TIDAK digunakan
Kode
Tempel di mana saja, itu akan berfungsi bahkan ketika Anda menjalankan kode ini sebelum DOM siap (itu tidak akan menunjukkan tooltips Anda sampai DOM siap).
Sesuaikan
Anda dapat mengubah
var
deklarasi pada baris kedua untuk menyesuaikannya sedikit.Gaya
Anda sekarang dapat menata tooltips Anda menggunakan CSS berikut:
sumber
Saya telah menemukan jawabannya di sini: http://www.webdesignerdepot.com/2012/11/how-to-create-a-simple-css3-tooltip/
kode saya sendiri berjalan seperti ini, saya telah mengubah nama atribut, jika Anda mempertahankan nama judul untuk atribut Anda akhirnya memiliki dua popup untuk teks yang sama, perubahan lain adalah bahwa teks saya pada layar melayang di bawah teks yang terbuka.
sumber
Jsfiddle untuk pola tooltip kustom ada di Sini
Ini didasarkan pada Pemosisian CSS dan pemilih kelas pseduo
Periksa MDN docs untuk dukungan lintas-browser dari kelas pseudo
sumber
Tips asli tidak dapat ditata.
Yang sedang berkata, Anda bisa menggunakan beberapa pustaka yang akan menunjukkan gaya lapisan mengambang ketika elemen sedang melayang (bukan tooltips asli, dan menekan mereka) membutuhkan sedikit atau tidak ada modifikasi kode ...
sumber
title
atribut. Jadi jika Anda mengatur implementasi tooltip Anda sendiri, lebih baik menggunakan beberapa atribut lainnya (katakanlah,data-tip
) daripadatitle
.Anda tidak dapat mengatur tooltip browser default. Tetapi Anda dapat menggunakan javascript untuk membuat tooltips HTML kustom Anda sendiri.
sumber
Ini juga berfungsi dengan atribut apa pun yang ingin Anda tambahkan misalnya:
HTML
CSS
Lihat berhasil di: http://jsfiddle.net/vpYWE/1/
sumber
anything
bukan atribut HTML yang valid. Untuk atribut khusus gunakandata-
atribut.