Ho ispezionato alcuni siti e hanno un cancelletto (#) nell'URL. Che cosa fa?Che cos'è quando un collegamento ha un cancelletto "#" nel segno
<a href="#" >Link name</a>
Ho ispezionato alcuni siti e hanno un cancelletto (#) nell'URL. Che cosa fa?Che cos'è quando un collegamento ha un cancelletto "#" nel segno
<a href="#" >Link name</a>
È un "frammento" o "ancora denominata". È possibile utilizzare per collegare a parte di un documento. In genere quando si collega a una pagina, il browser lo apre nella parte superiore della pagina. Ma ti colleghi a una sezione a metà, puoi usare il frammento per collegarti a quell'intestazione (o qualsiasi altra cosa).
Se non c'è un tag <a name="whatever"/>
all'interno della pagina, il browser si collegherà solo all'inizio della pagina. Se il frammento è vuoto, si collegherà anche alla parte superiore della pagina.
Per un frammento solo<a href="#">Link name</a>
, quindi questo è solo un link alla parte superiore della pagina di corrente.
Spesso si vede quel tipo di collegamento utilizzato in congiunzione con javascript. L'HTML conforme agli standard richiede un attributo href
, ma se hai intenzione di gestire la richiesta con javascript, allora "#" funge da titolare del posto ragionevole.
Questo collega alla pagina stessa. Viene spesso utilizzato con collegamenti che eseguono effettivamente JavaScript.
... solo per aggiungere alcuni suggerimenti utili extra.
È possibile accedervi e modificarlo con document.location.hash
in JavaScript.
Si può indicare una chiamata ancoraggio (per esempio <a name="top"></a>
) o ad un elemento con una corrispondente id (per esempio <div id="top"></div>
).
Vedere uno a sé stante (ad esempio <a href="#" onclick="pop()">popup</a>
) significa in genere un collegamento viene utilizzato per eseguire JavaScript in modo esclusivo. Questa è una cattiva pratica.
Qualsiasi elemento a
deve avere un href
che punta a una risorsa valida. Se uno non esiste, considera l'utilizzo di un altro elemento, ad esempio button
.
Questo è un buon punto a riguardo, non particolarmente buone pratiche ... ma solo perché non è buono non significa che non lo si troverà usato in quel modo per tutto il posto :) –
@alex, se è una cattiva pratica, allora dicci quale sarebbe la migliore pratica * da usare. –
@Kyralessa Era proprio lì nel prossimo paragrafo. Comunque, ho fatto una modifica quindi spero sia più chiara. – alex
#
indica un collegamento a un'ancora.
mi thougt Vorrei anche menzionare un'altra cosa:
Usando '#' come il href per un link che attiva JavaScript è un male perché scorre la pagina verso l'alto - che probabilmente non è ciò che si vuole. Utilizzare invece javascript:void(0)
.
+1 per aver menzionato che facendo clic su questi collegamenti, la pagina viene spostata verso l'alto. –
Non hai più bisogno di un ancoraggio. A partire da HTML5 (e forse HTML 4) qualsiasi elemento con un tag
Non utilizzare 'javascript: void (0)' usa un 'pulsante' se non è un link. – alex
Il simbolo cancelletto (#
) indica di individuare un'ancora sulla pagina. Ad esempio, se si include questo da qualche parte sulla pagina:
<a name="foo"></a>
o, più recentemente:
<div id="foo">*part of page*</div>
e poi si fa clic su un link sulla pagina che ha il href #foo
, si navigherà all'ancora con il nome o div
con l'id foo
.
Tuttavia, se si dispone solo dello href #
, questo verrà visualizzato nella parte superiore della pagina.
+1 Sebbene il termine ufficiale sia un frammento di URL, non un "riferimento all'hash": http://www.w3.org/TR/WD-html40-970708/htmlweb.html#h-4.1.1 –
Sì , L'ho cambiato in "frammento" nella mia risposta, perché è quello che la maggior parte delle persone usa. Non ho mai saputo che avesse un nome "ufficiale" però :) –
Perché i browser lo trattano come "vai in cima alla pagina": tecnicamente hai cambiato pagina. Dopo aver fatto clic sul collegamento, noterai che il # viene effettivamente aggiunto all'URL nella barra degli indirizzi e se fai clic sul pulsante Indietro lo rimuoverà di nuovo. Non direi che è un collegamento a una parte di un documento, più un link a un posto all'interno del documento. Altrimenti, fondamentalmente la stessa cosa che stavo scrivendo ... – animuson