Div ancres de défilement trop loin
Je suis en utilisant une statique de la barre en haut de mon site, à propos de 20px de hauteur. Lorsque je clique sur un lien vers une ancre(pour ceux qui ne le savent pas, la navigation sur wikipédia fonctionne comme ça. Cliquez sur un titre et le navigateur va vers le bas) de la partie de le texte disparaît derrière la barre du haut.
Est-il un moyen pour arrêter cela? Je ne suis pas dans une position où je peux utiliser un iFrame. Onlything je pense est de le faire défiler en arrière un peu à chaque fois, mais est-il une autre voie? Un peu de CSS réglage de manipuler le corps ou quelque chose?
- Le code sera utile.
- Je vous laisse le iframe hors de question, cela fait plus de confusion.
- "Est-il une autre voie?" Oui, l'utilisation de JavaScript pour modifier le navigateur par défaut de comportement. Par défaut, le point d'ancrage n'est pas trouve dans la vue assez loin.
- Double Possible de le Fixe en-tête de page les chevauchements dans les pages ancres
Vous devez vous connecter pour publier un commentaire.
Pour corriger cela avec CSS, vous pouvez ajouter un rembourrage pour les Éléments que vous souhaitez passer à:
Exemple
Alternativement, vous pouvez ajouter une bordure:
CSS:
HTML:
Cependant, ce n'est pas toujours le cas.
Pour une solution d'activer javascript, vous pouvez utiliser une cliquez sur l'événement attaché à l'ancrage des éléments qui permet de faire défiler un montant corrigé de pixels comme suit:
JS:
CSS:
HTML:
Vous pouvez simplement utiliser CSS sans javascript.
Donner votre point d'ancrage d'une classe:
Vous pouvez ensuite la position de l'ancre d'un décalage supérieur ou inférieur à celui où il apparaît sur la page, en en faisant un élément de bloc et relativement positionnement. -250px sera la position de l'ancre jusqu'250px
Par Jan voir la compensation d'une ancre html pour ajuster l'en-tête fixe
display: block
était le problème. J'ai essayé de faire une chose semblable, mais le navigateur ne tiendrait pas compte de la relative offset, et j'ai fini aveca[name] {position: absolute; height: 150px; margin-top: -150px;}
.CSS uniquement: c'est un peu sale, mais
:target {padding-top: 20px;}
serait de travailler si vous créez un lien vers un élément de type block (je suppose que vous faites, puisque votre question, dit-div). Toutefois, il ne pourrait pas l'air si bon lorsque vous faites défiler manuellement par la suite. Exemple http://dabblet.com/gist/3121729Encore, je pense que l'aide d'un peu de JavaScript pour corriger ce serait plus agréable.
J'ai eu le même problème. Voici un jQuery solution
html, body
est la compatibilité du navigateur stackoverflow.com/a/19738288/722796Essayer avec
window.scrollBy(xnum,ynum);
xnum: le nombre de pixels à défiler, le long de l'axe des x (horizontal)
ynum: le nombre de pixels à défiler, le long de l'axe des y (vertical)
Par exemple: http://www.w3schools.com/js/tryit.asp?filename=try_dom_window_scrollby