Di banyak situs web saya melihat tautan yang dimiliki href="#"
. Apa artinya? Untuk apa ini digunakan?
Penggunaan utama tag jangkar - <a></a>
- adalah sebagai hyperlink . Itu pada dasarnya berarti mereka membawa Anda ke suatu tempat. Hyperlink memerlukan href
properti, karena menentukan lokasi.
Hash - di #
dalam hyperlink menentukan id elemen html di mana jendela harus digulir.
href="#some-id"
akan menggulir ke elemen di halaman saat ini seperti <div id="some-id">
.
href="https://site.com/#some-id"
akan pergi ke site.com
dan gulir ke id di halaman itu.
href="#"
tidak menentukan nama id, tetapi memiliki lokasi yang sesuai - bagian atas halaman. Mengklik jangkar dengan href="#"
akan memindahkan posisi gulir ke atas.
Ini adalah perilaku yang diharapkan menurut dokumentasi w3.
Contoh di mana tempat penampung hyperlink masuk akal berada dalam pratinjau templat. Pada demo satu halaman untuk templat, saya sering melihat <a href="#">
sehingga tag anchor adalah hyperlink, tetapi tidak ke mana-mana. Mengapa tidak membiarkan href
properti itu kosong? href
Properti kosong sebenarnya adalah hyperlink ke halaman saat ini. Dengan kata lain, itu akan menyebabkan penyegaran halaman. Seperti yang saya bahas, href="#"
juga merupakan hyperlink, dan menyebabkan scrolling. Oleh karena itu, solusi terbaik untuk placeholder hyperlink sebenarnya href="#!"
. Ide di sini adalah semoga tidak ada elemen pada halaman dengan id="!"
(siapa yang melakukan itu !?) dan karena itu hyperlink tidak merujuk pada apa pun - jadi tidak ada yang terjadi.
Pertanyaan lain yang Anda mungkin bertanya-tanya adalah, "Mengapa tidak tinggalkan saja properti href?". Respons umum yang saya dengar adalah bahwa href
properti diperlukan, jadi "harus" ada di jangkar. Ini salah! The href
properti diperlukan hanya untuk jangkar untuk benar-benar menjadi hyperlink! Baca ini dari w3. Jadi, mengapa tidak tinggalkan saja untuk penampung? Browser merender gaya default untuk elemen dan akan mengubah gaya default tag anchor yang tidak memiliki properti href. Sebaliknya, itu akan dianggap seperti teks biasa. Bahkan mengubah perilaku browser mengenai elemen. Bilah status (bagian bawah layar) tidak akan ditampilkan ketika melayang di atas jangkar tanpa properti href. Yang terbaik adalah menggunakan nilai href placeholder pada jangkar untuk memastikan itu diperlakukan sebagai hyperlink.
Lihat demo ini yang menunjukkan perbedaan gaya dan perilaku.
.click()
metode jQuery pada<div></div>
, itu tidak akan berfungsi. Entah harus berada di jangkar atau Anda harus menggunakantouch
acara.Menempatkan simbol "#" sebagai href untuk sesuatu berarti ia menunjuk bukan ke URL yang berbeda, tetapi lebih ke id atau tag nama lain pada halaman yang sama. Sebagai contoh:
Namun, jika tidak ada id atau nama maka ia pergi "tidak ke mana."
Berikut pertanyaan serupa yang diajukan pada Penanda HTML dengan 'nama' atau 'id'?
sumber
<a href="#">...</a>
tidak "ke mana-mana" itu meninggalkan halaman dan memuatsite.com/#
. Bagaimana mungkin?onclick
pengendali acara diikat ke elemen itu, menyebabkan fungsi javascript disebut yang mengarahkan Anda ke halaman itu.Ini adalah tautan yang menghubungkan ke mana saja pada dasarnya (itu hanya menambahkan "#" ke URL). Ini digunakan untuk sejumlah alasan berbeda. Misalnya, jika Anda menggunakan semacam JavaScript / jQuery dan tidak ingin HTML yang sebenarnya untuk ditautkan di mana saja.
Ini juga digunakan untuk jangkar halaman, yang digunakan untuk mengarahkan ulang ke bagian halaman yang berbeda.
sumber
Sayangnya, penggunaan yang paling umum
<a href="#">
adalah oleh pemrogram malas yang menginginkan elemen kode-javascript non-hyperlink yang dapat diklik yang berperilaku seperti jangkar, tetapi mereka tidak dapat ditambahkan untuk menambahcursor: pointer;
atau:hover
gaya ke kelas untuk elemen non-hyperlink mereka, dan juga tambahan terlalu malas untuk mengaturhref
kejavascript:void(0);
.Masalah dengan ini adalah bahwa satu
<a href="#" onclick="some_function();">
atau lain pasti berakhir dengan kesalahan javascript, dan jangkar dengan kesalahan javascript onclick selalu berakhir setelah ituhref
. Biasanya ini menjadi lompatan yang menyebalkan ke bagian atas halaman, tetapi dalam kasus situs yang menggunakan<base>
,<a href="#">
ditangani sebagai<a href="[base href]/#">
, menghasilkan navigasi yang tidak terduga. Jika ada kesalahan yang dapat dicatat yang dihasilkan, Anda tidak akan melihatnya dalam kasus terakhir kecuali Anda mengaktifkan log yang persisten.Jika elemen jangkar yang digunakan sebagai non-jangkar itu harus memiliki nya
href
set untukjavascript:void(0);
demi anggun degradasi.Saya hanya membuang waktu dua hari untuk men-debug redirect halaman tak terduga acak yang seharusnya hanya me-refresh halaman, dan akhirnya melacaknya ke fungsi yang meningkatkan event klik dari
<a href="#">
. Mengganti#
denganjavascript:void(0);
memperbaikinya.Hal pertama yang saya lakukan hari Senin adalah membersihkan proyek dari semua contoh
<a href="#">
.sumber
<base>
benar - benar membuat perbedaan besar untuk#
. Terima kasih telah menunjukkan!Daftar yang tidak teratur sering dibuat dengan maksud untuk menggunakannya sebagai menu, tetapi
li
item daftar adalah teks. Karenali
item daftar adalah teks, penunjuk tetikus tidak akan menjadi panah, tetapi "kursor I". Pengguna terbiasa melihat jari menunjuk untuk penunjuk mouse ketika sesuatu dapat diklik. Menggunakan tag jangkara
di dalamli
tag menyebabkan pointer mouse berubah menjadi jari yang menunjuk. Jari pengarah jauh lebih baik untuk menggunakan daftar sebagai menu.Jika daftar sedang digunakan untuk menu, dan tidak perlu tautan, maka URL tidak perlu ditunjuk. Tetapi masalahnya adalah jika Anda meninggalkan
href
atribut, teks dalam<a>
tag dilihat sebagai teks, dan oleh karena itu pointer mouse kembali ke kursor-I. Kursor-I mungkin membuat pengguna berpikir bahwa item menu tidak dapat diklik. Karena itu, Anda masih memerlukanhref
, tetapi Anda tidak perlu tautan ke mana pun.Anda bisa menggunakan banyak
div
ataup
tag untuk daftar menu, tetapi penunjuk tetikus juga akan menjadi kursor-I untuk mereka.Anda dapat menggunakan banyak tombol yang ditumpuk satu sama lain untuk daftar menu, tetapi daftar tersebut tampaknya lebih disukai. Dan itu mungkin mengapa
href="#"
yang menunjuk ke tempat digunakan dalam tag jangkar di dalam tag daftar.Anda dapat mengatur gaya pointer di CSS, jadi itu adalah pilihan lain. Ke
href="#"
mana-mana mungkin hanya cara malas untuk mengatur beberapa gaya.sumber
Masalah dengan menggunakan href = "#" untuk tautan kosong adalah ia akan membawa Anda ke bagian atas halaman yang mungkin bukan tindakan yang diinginkan. Untuk menghindari ini, untuk peramban yang lebih lama atau dokumen yang bukan HTML5, gunakan
sumber
Sejauh yang saya tahu itu biasanya tempat penampung untuk tautan yang memiliki beberapa JavaScript yang melekat padanya. Titik utama tautan dilayani dengan mengeksekusi kode JavaScript; browser dengan dukungan JS kemudian abaikan target tautan yang sebenarnya. Jika browser tidak mendukung JS, tanda hash pada dasarnya mengubah tautan menjadi no-op. Lihat juga JavaScript yang tidak mengganggu .
sumber
Seperti yang ditunjukkan beberapa jawaban lain,
a
elemen tersebut membutuhkanhref
atribut dan#
digunakan sebagai pengganti, tetapi juga merupakan artefak sejarah.Dari Jaringan Pengembang Mozilla :
Juga, sesuai spesifikasi HTML5 :
sumber
Atribut href mendefinisikan URL sumber daya suatu tautan. Jika tag anchor tidak memiliki tag href maka tidak akan menjadi hyperlink. Atribut href memiliki nilai-nilai berikut:
sumber