Ketika seseorang ingin merujuk ke beberapa bagian dari halaman web dengan metode " http://example.com/#foo
", harus digunakan
<h1><a name="foo"/>Foo Title</h1>
atau
<h1 id="foo">Foo Title</h1>
Mereka berdua bekerja, tetapi apakah mereka sama, atau apakah mereka memiliki perbedaan semantik?
html
hyperlink
fragment-identifier
Henrik Paul
sumber
sumber
http://example.com#foo
(jadi tanpa / sebelum #)http://example.com#foo
danhttp://example.com/#foo
setara seperti yang didefinisikan dalam salah satu RFC di URI.Jawaban:
Menurut spesifikasi HTML 5, 5.9.8 Menavigasi ke pengidentifikasi fragmen :
Jadi, itu akan mencari
id="foo"
, dan kemudian akan mengikutiname="foo"
Sunting: Seperti yang ditunjukkan oleh @hsivonen, di HTML5
a
elemen tidak memiliki atribut nama. Namun, aturan di atas masih berlaku untuk elemen bernama lainnya.sumber
<h1 id="foo">Foo Title</h1>
bekerja bahkan di IE6 dan merupakan bagian dari spesifikasi HTML 4.01name="foo"
danid="foo"
(terlepas dari urutannya dalam halaman), Chrome dan Firefox akan melompat keid
, tetapi IE (diuji pada 11) dan Edge akan melompat kename
Anda tidak boleh menggunakan
<h1><a name="foo"/>Foo Title</h1>
HTML dalamtext/html
arti apa pun , karena sintaks elemen XML kosong tidak didukung ditext/html
. Namun,<h1><a name="foo">Foo Title</a></h1>
tidak masalah di HTML4. Itu tidak valid dalam HTML5 seperti saat ini dirancang.<h1 id="foo">Foo Title</h1>
OK di HTML4 dan HTML5. Ini tidak akan berfungsi di Netscape 4, tetapi Anda mungkin akan menggunakan selusin fitur lain yang tidak berfungsi di Netscape 4.sumber
id
s sepertiname
anchor dalam hal fragmen URL dan kompatibilitas:target
pemilih CSS . Diuji: Chrome 6, Firefox 1.5, IE6, Opera 8.02, Safari 3.1.2, Netscape 7.2, Lynx 2.24, dan browser seluler: Android 2.2, Chrome 26, Dolphin 9.3, Firefox 19, IE10, Safari 4, dan Opera Mini 5.1.Saya harus mengatakan jika Anda akan menghubungkan ke area itu di halaman ... seperti page.html # foo dan Foo Title bukan tautan yang harus Anda gunakan:
Jika Anda malah meletakkan
<a>
referensi di sekitarnya, tajuk Anda akan dipengaruhi oleh<a>
CSS tertentu di dalam situs Anda. Ini hanya markup tambahan, dan Anda seharusnya tidak membutuhkannya. Saya sangat merekomendasikan menempatkan id pada informasi utama, tidak hanya itu lebih baik dibentuk, tetapi juga akan memungkinkan Anda untuk mengatasi objek tersebut dalam Javascript atau CSS.sumber
Wikipedia banyak menggunakan fitur ini seperti ini:
Dan Wikipedia bekerja untuk semua orang, jadi saya akan merasa aman menggunakan formulir ini.
Juga jangan lupa, Anda dapat menggunakan ini tidak hanya dengan span tetapi dengan divs atau bahkan sel tabel, dan kemudian Anda memiliki akses ke: target pseudo-class pada elemen. Berhati-hatilah untuk tidak mengubah lebar, seperti dengan teks tebal, karena memindahkan konten, yang mengganggu.
Bernama jangkar - suara saya adalah untuk menghindari:
sumber
a {color:red}
mendesainnya, itu akan memberi warna pada tautan <a href> DAN fragmen <a name> Anda. Anda dapat menyiasatinya dengan kelas semua:link {color:red]}
atau penyeleksi atributa:not([href]) {color:red;}
<a name="heading1"></a> ... document.html#heading1
tanpa mengatur ID, karena ID mungkin berbenturan dengan ID lain pada halaman. Sayang sekali mereka tidak memasukkanname
atribut dalam HTML5.adalah apa yang harus digunakan. Jangan gunakan jangkar kecuali jika Anda menginginkan tautan.
sumber
Menuju pengguna JavaScript: semua ID menjadi variabel global di bawah jendela .
Baru saja menciptakan JS global:
Nilai
window.foo
akan menjadiHTMLElement
untukh1
.Kecuali Anda dapat menjamin semua nilai yang digunakan dalam
id
atribut aman, Anda mungkin lebih suka berpegang teguh padaname
:sumber
window
. Misalnya,<div id="open"></div>
tidak akan menimpa fungsiwindow.open
.Tidak ada perbedaan semantik; tren dalam standar adalah ke arah penggunaan
id
daripadaname
. Namun, ada beberapa perbedaan yang mungkin membuat seseorang lebih sukaname
dalam beberapa kasus. Spesifikasi HTML 4.01 menawarkan petunjuk berikut :Gunakan
id
atauname
? Penulis harus mempertimbangkan masalah-masalah berikut ketika memutuskan apakah akan menggunakanid
atauname
untuk nama jangkar:sumber
id
jangkar untuk bekerja di Safari untuk iOS 5, jadi bukan hanya browser yang sudah "sangat tua" di '09. Saya harus menambahkanname
agar situs saya berfungsi dengan baik di iPad. Ini mungkin sudah diperbaiki sekarang, saya tidak memiliki perangkat iOS 6 untuk diperiksa.id
jangkar tampaknya bekerja secara universal. Jika contoh sederhana ini tidak berfungsi di ponsel Anda, saya akan memeriksa pengaturan aksesibilitas perangkat. (@deathApril Situs seluler Wikipedia memiliki Javascript yang secara efektif menyebabkan fragmen URL diabaikan.)Metode ID tidak akan berfungsi pada browser lama, metode anchor name akan ditinggalkan dalam versi HTML yang lebih baru ... Saya akan menggunakan id.
sumber
Saya memiliki halaman web yang terdiri dari sejumlah wadah div yang ditumpuk secara vertikal, identik dalam format dan hanya berbeda dalam nomor seri. Saya ingin menyembunyikan nama jangkar di bagian atas setiap div, jadi solusi yang paling ekonomis ternyata menyertakan jangkar sebagai id dalam tag div pembuka, yaitu,
sumber
Sampel kedua memberikan ID unik ke elemen yang dimaksud. Elemen ini kemudian dapat dimanipulasi atau diakses menggunakan DHTML.
Yang pertama, di sisi lain, menetapkan lokasi bernama di dalam dokumen, mirip dengan bookmark. Terlampir pada "jangkar", itu sangat masuk akal.
sumber
Hanya pengamatan tentang markup Bentuk markup dalam versi HTML sebelumnya menyediakan titik jangkar. Bentuk markup di HTML5 menggunakan atribut id, sementara sebagian besar setara, memerlukan elemen untuk diidentifikasi, hampir semua yang biasanya diharapkan mengandung konten.
Rentang atau div kosong dapat digunakan, misalnya, tetapi penggunaan ini terlihat dan berbau merosot.
Satu pemikiran adalah menggunakan elemen wbr untuk tujuan ini. Wbr memiliki model konten kosong dan hanya menyatakan bahwa pemutusan baris dimungkinkan; ini masih menggunakan tag markup yang sedikit serampangan, tetapi jauh lebih sedikit daripada divisi dokumen serampangan atau rentang teks kosong.
sumber
wbr
: w3.org/TR/html-markup/wbr.html Gunakan<wbr id="foo" />
alih-alih<a name="foo"></a>
Dalam html 5,
id=""
atribut mendefinisikan pengidentifikasi unik untuk suatu elemen, yang juga merupakan jangkar untuk tautan fragmen. Dalam standar html sebelumnya,name=""
atribut<a>
elemen mendefinisikan jangkar untuk tautan fragmen. Saya merekomendasikan sesuatu seperti:<a name="foo" id="foo"></a><h1>Foo Title</h1>
Karena dukungan untuk
id=""
atributnya agak berbintik-bintik (walaupun rilis terbaru dari semua browser utama mendukungnya, rilis yang tidak lebih dari beberapa tahun [Dan yang terbaik adalah untuk tidak memecahkan sesuatu jika tidak ada alasan yang bagus untuk]). Itu kompatibel, & itu tidak menata apa pun yang ada di elemen tautan, karena penutup </a> masih di luar elemen, tetapi masih berlaku di semua standar saat ini.Pastikan atribut
name=""
dan elemennya sama.id=""
<a>
sumber
name
atribut pada tag anchor yang diperlukan; menempatkan atribut padahN
atauspan
tidak berfungsi.Bagaimana dengan menggunakan atribut nama untuk browser lama dan atribut id ke browser baru. Kedua opsi akan digunakan dan metode mundur akan diterapkan secara default !!!
sumber
Seluruh konsep "named anchor" menggunakan atribut nama, menurut definisi. Anda harus tetap menggunakan nama, tetapi atribut ID mungkin berguna untuk beberapa situasi javascript.
Seperti dalam komentar, Anda selalu dapat menggunakan keduanya untuk melindungi nilai dari taruhan Anda.
sumber