2009-09-13 27 views

Respuesta

9

No hay una forma directa de hacerlo en html \ css puro. Es posible, aunque usando js, ​​obtener la ubicación superior del elemento y establecer la posición superior de la página en la posición de ese elemento menos la mitad de la altura de la página.

2

Determine qué parte de la página realmente desea en la parte superior y coloque allí el anclaje. No podrá cambiar la forma en que los navegadores interpretan los anclajes, al menos no sin molestar a los usuarios.

+0

Según el ancho de la ventana del navegador y la forma en que fluye la página, este método podría hacer que el delimitador real esté debajo de la ventana gráfica.Me gustaría ir con la solución javascript, reconociendo que los navegadores sin javascript simplemente tendrán que tratar sin la característica elegante. –

0

Intentaré poner un margen negativo (u otro método de posicionamiento) igual a la mitad de la altura de página en la etiqueta de anclaje de destino.

1

Dado que "medio de la página" es relativo al tamaño de la pantalla y ventana del usuario en un momento dado, tendrá que usar Javascript para lograr esto, ya que no hay forma en HTML/CSS puro de obtener el ancho de la pantalla vertical.

+4

ancho de pantalla vertical, altura de pantalla a.k.a. – LarsH

0

Firefox admite la configuración de una propiedad de relleno en el ancla nombrada. A partir de ahí, puede establecer una cookie a través de javascript que contenga las dimensiones del navegador, y ajustar su relleno superior en el lado del servidor. Para el usuario final, se vería como su html/css puro, pero el noam es correcto en cuanto a que se necesita un poquito de JS para obtener las dimensiones del navegador, ya que no proporciona esta información sin una pequeña coacción.

7

html:

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

css:

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

funcionó bien para mí

+0

¡Excelente! No podría ser más simple. – fbiazi

+0

No funciona con Chrome – elcsiga

8

he encontrado una solución Anchor Links With A Fixed Header Publicado por Phillip, que es un diseñador de páginas web. Phillip agregó un nuevo tramo VACÍO como posición de anclaje.

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

a continuación, poner el siguiente código CSS

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

Gracias, Phillip!

3

si quieres sin espacio en blanco hacerlo de esta manera:

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

pero, usted todavía tiene que regular la altura de JavaScript

+2

funciona graciasx – Inderjeet

1

Mi solución es: colocar un estilo <span class="anchor" id="X"> entonces la clase "ancla" como:

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

gracias al "-50vh" se desplazará el ancla en el medio de la pantalla.

verifique https://www.w3schools.com/cssref/css_units.asp para obtener más información.

Cuestiones relacionadas