2009-09-13 8 views

risposta

9

Non esiste un modo semplice per farlo in puro html \ css. È possibile usando js, ​​ottenendo la posizione superiore dell'elemento e impostando la posizione superiore della pagina sulla posizione di quell'elemento meno la metà dell'altezza della pagina.

2

Determina quale parte della tua pagina desideri effettivamente in alto e posiziona l'ancora lì. Non sarai in grado di cambiare il modo in cui i browser interpretano le ancore - almeno non senza sconvolgere gli utenti.

+0

A seconda della larghezza della finestra del browser e del modo in cui la pagina scorre, questo metodo potrebbe causare l'ancoraggio effettivo al di sotto del viewport.Vorrei andare con la soluzione javascript, riconoscendo che i browser senza javascript dovranno solo occuparsi senza la funzione di fantasia. –

0

Vorrei provare a mettere un margine negativo (o altro metodo di posizionamento) uguale alla metà dell'altezza della pagina sul tag di ancoraggio di destinazione.

1

Poiché "il centro della pagina" è relativo alla dimensione della schermata e della finestra dell'utente in un dato momento, è necessario utilizzare Javascript per ottenere ciò, poiché non vi è alcun modo in puro HTML/CSS per ottenere la larghezza dello schermo verticale.

+4

larghezza dello schermo verticale, altezza dello schermo a.k.a. – LarsH

0

Firefox supporta l'impostazione di una proprietà padding-top sull'ancora denominata. Da lì, puoi impostare un cookie tramite javascript che contiene le dimensioni del browser e regolare il padding-top di conseguenza sul lato server. Per l'utente finale, sembrerebbe il suo puro html/css, ma noam è corretto in quanto è necessario un pochino di JS per ottenere le dimensioni del browser, dal momento che non ti dà questa informazione senza un po 'di coercizione.

7

html:

<a id="anchor">NEWS</a> 

css:

#anchor{ 
position: relative; 
padding-top: 100px; //(whatever distance from the top of the page you want) 
} 

funzionato bene per me

+0

Eccellente! Non potrebbe essere più semplice. – fbiazi

+0

Non funziona con Chrome – elcsiga

8

ho trovato una soluzione Anchor Links With A Fixed Header pubblicato da Phillip, è un web designer. Phillip ha aggiunto un nuovo intervallo EMPTY come posizione di ancoraggio.

<span class="anchor" id="section1"></span> 
<div class="section"></div> 

quindi inserire il seguente codice css

.anchor{ 
    display: block; 
    height: 115px; /*same height as header*/ 
    margin-top: -115px; /*same height as header*/ 
    visibility: hidden; 
} 

Grazie, Filippo!

3

se si vuole, senza spazio vuoto fare in questo modo:

<h2 id="jump_tag" style="padding-top: 500pt; margin-top: -500pt;"></h2>

ma, avrai ancora di regolare l'altezza da JavaScript

+2

il suo grazie di lavoro – Inderjeet

1

La mia soluzione è: luogo uno stile <span class="anchor" id="X"> poi la classe "anchor" come:

.anchor { 
position:absolute; 
transform:translateY(-50vh); 
} 

grazie al "-50vh" scorre l'ancora nel mezzo dello schermo.

controllare https://www.w3schools.com/cssref/css_units.asp per ulteriori informazioni.

Problemi correlati