Birçok web sitesinde sahip olduğum bağlantıları görüyorum href="#"
. Bunun anlamı ne? Ne için kullanılır?
Birçok web sitesinde sahip olduğum bağlantıları görüyorum href="#"
. Bunun anlamı ne? Ne için kullanılır?
Yanıtlar:
Bağlantı etiketlerinin ana kullanımı - <a></a>
- köprülerdir . Bu temelde sizi bir yere götürdükleri anlamına gelir. Köprüler href
özelliği gerektirir , çünkü bir konum belirtir.
#
Köprü içindeki bir karma - pencerenin kaydırılması gereken bir html öğesi kimliği belirtir.
href="#some-id"
geçerli sayfadaki bir öğeye kaydırır <div id="some-id">
.
href="https://stackoverflow.com//site.com/#some-id"
site.com
o sayfadaki kimliğe gider ve
href="#"
bir kimlik adı belirtmez, ancak sayfanın üst kısmında karşılık gelen bir konuma sahiptir. Bir tutturucuyla tıklamak href="#"
kaydırma konumunu en üste taşır.
Bu, w3 belgelerine göre beklenen davranıştır .
Köprü yer tutucusunun mantıklı olduğu bir örnek şablon önizlemeleri içindedir. Şablonlar için tek sayfa demolarında <a href="#">
, bağlantı etiketinin bir köprü olduğunu, ancak hiçbir yere gitmediğini sık sık gördüm . href
Mülkü neden boş bırakmıyorsunuz ? Boş bir href
özellik aslında geçerli sayfanın köprüsüdür. Başka bir deyişle, sayfanın yenilenmesine neden olur. Bahsettiğim gibi, href="#"
aynı zamanda bir köprüdür ve kaydırmaya neden olur. Bu nedenle, köprü yer tutucular için en iyi çözüm aslında href="#!"
buradaki fikir, umarım sayfada id="!"
(kim yapar !?) ile bir öğe olmadığı ve köprü hiçbir şey ifade etmez - bu yüzden hiçbir şey olmaz.
Merak edebileceğiniz başka bir soru, "Neden sadece href özelliğini kapalı bırakmak değil?". Ben duydum ortak bir yanıt href
özelliği gerekli olduğunu, bu yüzden çapa "mevcut" olmalıdır. Bu yanlış! href
Mülkiyet aslında bir köprü olmak için bir çapa sadece gereklidir! Bunu w3'ten okuyun. Öyleyse, neden sadece yer tutucular için bırakmıyoruz? Tarayıcılar, öğeler için varsayılan stilleri oluşturur ve href özelliğine sahip olmayan bir tutturma etiketinin varsayılan stilini değiştirir. Bunun yerine, normal metin gibi kabul edilecektir. Tarayıcının öğeyle ilgili davranışını bile değiştirir. Href özelliği olmayan bir tutturucunun üzerine getirildiğinde durum çubuğu (ekranın altında) görüntülenmez. Köprü olarak işlem görmesini sağlamak için bir tutturucuda yer tutucu href değeri kullanmak en iyisidir.
Stil ve davranış farklılıklarını gösteren bu demoya bakın .
.click()
yöntemini bir üzerinde kullanmak istiyorsunuz <div></div>
, işe yaramayacak. Ya bir çapa üzerinde olmalı ya da touch
olayları kullanmalısınız .
"#" Sembolünü bir şey için href olarak koymak, farklı bir URL'ye değil, aynı sayfadaki başka bir kimliğe veya ad etiketine işaret ettiği anlamına gelir. Örneğin:
<a href="#bottomOfPage">Click to go to the bottom of the page</a>
blah blah
blah blah
...
<a id="bottomOfPage"></a>
Ancak, herhangi bir kimlik veya ad yoksa, "hiçbir yere" gider.
İşte benzer başka bir soru 'name' veya 'id' olan HTML Bağlantıları mı?
<a href="#">...</a>
"hiçbir yere gitmiyordu" sayfadan ayrılıp yükleniyordu site.com/#
. Bu nasıl mümkün olabilir?
onclick
olay işleyicisinin bağlı olması, sizi o sayfaya yönlendiren bir javascript işlevinin çağrılmasına neden olmasıdır.
Aslında hiçbir yere bağlantı veren bir bağlantıdır (sadece URL'ye "#" ekler). Bir dizi farklı nedenden dolayı kullanılır. Örneğin, bir çeşit JavaScript / jQuery kullanıyorsanız ve gerçek HTML'nin herhangi bir yere bağlanmasını istemiyorsanız.
Ayrıca, sayfanın farklı bir bölümüne yönlendirmek için kullanılan sayfa çapaları için de kullanılır.
Ne yazık ki, en yaygın kullanımı, <a href="#">
çapa gibi davranabilen ve köprü olmayan öğeleri için bir sınıfa eklenecek cursor: pointer;
veya :hover
stil ekleyemeyecek şekilde eklenebilir ve ayrıca eklenebilir olan köprülü olmayan javascript kodlu öğeler isteyen tembel programcılar tarafından kullanılır. ayarlamak href
için çok tembel javascript:void(0);
.
Bu sorun, bir <a href="#" onclick="some_function();">
veya başka bir kaçınılmaz olarak bir javascript hatası ile sonuçlanır ve bir onclick javascript hatası ile bir çapa her zaman onun sonuna kadar sona erer href
. Normalde bu sayfanın üstüne sinir bozucu bir sıçrama olmak kadar biter, ama kullanan sitelerin durumunda <base>
, <a href="#">
olarak ele alınır <a href="[base href]/#">
beklenmedik bir navigasyon sonuçlanan. Herhangi bir günlüğe kaydedilebilir hata oluşturuluyorsa, kalıcı günlükleri etkinleştirmediğiniz sürece bunları ikinci durumda görmezsiniz.
Bir tespit elemanı ise olan olmayan bir çapa olarak kullanıldığında, gereken onun bilgisi href
için set javascript:void(0);
uğruna zarif degradasyon.
Sadece iki gün, sadece sayfayı yenilemeliydim ve sonunda bir tıklama olayını yükselten bir işleve kadar izlenen rastgele beklenmedik bir sayfa yönlendirme hata ayıklama harcadım <a href="#">
. Değiştirilmesi #
ile javascript:void(0);
düzeltildi.
Pazartesi yaptığım ilk şey, tüm örneklerin projesini temizlemektir <a href="#">
.
<base>
gerçekten büyük bir fark yaratır #
. İşaret ettiğiniz için teşekkürler!
Sırasız listeler genellikle bunları menü olarak kullanmak amacıyla oluşturulur, ancak bir li
liste öğesi metindir. Liste li
öğesi metin olduğundan, fare işaretçisi bir ok değil, bir "I imleci" olacaktır. Kullanıcılar bir şey tıklanabilir olduğunda fare işaretçisi için bir işaret parmağı görmeye alışkındır. Etiketin a
içinde bir tutturma etiketi kullanmak li
fare işaretçisinin işaret parmağına dönüşmesine neden olur. İşaret parmağı listeyi bir menü olarak kullanmak için çok daha iyidir.
<ul id="menu">
<li><a href="#">Menu Item 1</a></li>
<li><a href="#">Menu Item 2</a></li>
<li><a href="#">Menu Item 3</a></li>
<li><a href="#">Menu Item 4</a></li>
</ul>
Liste bir menü için kullanılıyorsa ve bir bağlantıya ihtiyaç duymuyorsa, bir URL'nin atanması gerekmez. Ancak sorun, href
özniteliği dışarıda bırakırsanız , <a>
etiketteki metnin metin olarak görülmesi ve bu nedenle fare işaretçisinin I-imlecine geri dönmesidir. I-imleci kullanıcının menü öğesinin tıklanabilir olmadığını düşünmesini sağlayabilir. Bu nedenle, hala bir ihtiyacınız var href
, ancak hiçbir yere bağlantıya ihtiyacınız yok.
Bir menü listesi için çok sayıda div
veya p
etiket kullanabilirsiniz , ancak fare işaretçisi onlar için bir I imleci de olacaktır.
Bir menü listesi için üst üste yığılmış çok sayıda düğme kullanabilirsiniz, ancak liste tercih edilir gibi görünüyor. Muhtemelen href="#"
bu hiçbir yere işaret etmiyor liste etiketlerinin içindeki bağlantı etiketlerinde kullanılır.
İşaretçi stilini CSS'de ayarlayabilirsiniz, bu başka bir seçenektir. href="#"
Hiçbir yere sadece bazı stil ayarlamak için tembel yol olabilir.
Boş bir bağlantı için href = "#" kullanmayla ilgili sorun, sizi sayfanın en üstüne, istenen eylem olmayabilir. Bundan kaçınmak için, eski tarayıcılar veya HTML5 olmayan dokümanlar için şunu kullanın:
<a href="javascript:void(0)">Goes Nowhere</a>
Bildiğim kadarıyla, genellikle bazı JavaScript ekli bağlantılar için bir yer tutucudur. Bağlantının ana noktası JavaScript kodu çalıştırılarak sunulur; JS desteğine sahip tarayıcılar gerçek bağlantı hedefini yoksayar. Tarayıcı JS'yi desteklemiyorsa, karma işareti bağlantıyı esasen no-op durumuna dönüştürür. Ayrıca göze batmayan JavaScript'e de bakın .
Diğer cevapların bazılarının belirttiği gibi, a
öğe bir href
özellik gerektirir ve #
yer tutucu olarak kullanılır, ancak aynı zamanda tarihsel bir eserdir.
Gönderen Mozilla Geliştirici Ağı :
href
Bu, köprü metni kaynak bağlantısını tanımlayan bağlantılar için gereken tek öznitelikti, ancak artık HTML5'te gerekli değil. Bu özelliğin atlanması bir yer tutucu bağlantısı oluşturur. Href özelliği, bir URL veya bir URL parçası olan bağlantı hedefini belirtir. URL parçası, geçerli belgedeki dahili hedef konumu (ID) belirten bir karma işaretinden (#) önce gelen addır.
Ayrıca, HTML5 spesifikasyonlarına göre :
A öğesinin href özelliği yoksa, öğe, yalnızca öğenin içeriğinden oluşan, alakalı olması durumunda, bir bağlantının başka türlü yerleştirilebileceği yer tutucusunu temsil eder.
Href özelliği, bir bağlantının kaynağının URL'sini tanımlar. Bağlantı etiketi href etiketine sahip değilse köprü olmaz. Href niteliği aşağıdaki değerlere sahiptir:
1. Absolute path: move to another site like href="http://www.google.com"
2. Relative path: move to another page within the site like herf ="defaultpage.aspx"
3. Move to an element with a specified id within the page like href="#bottom"
4. href="javascript:void(0)", it does not move anywhere.
5. href="#" , it does not move anywhere but scroll on the top of the current page.
6. href= "" , it will load the current page but some browsers causes forbidden errors.
Note: When we do not need to specified any url inside a anchor tag then use
<a href="javascript:void(0)">Test1</a>