La question se pose parce que le navigateur fera le moins de défilement nécessaire pour amener l'élément ancré dans la vue. Ainsi, si elle est désactivée à droite de la zone visible, lorsque vous cliquez sur l'étiquette d'ancrage, elle défile simplement assez loin vers la droite pour révéler l'élément entier.
Vous pouvez corriger ce comportement avec javascript si c'est une option. Vous ne serez pas en mesure de le centrer sur #anchor
cliquez avec CSS droit.
Voici une "solution" utilisant jQuery. J'ai "solution" entre guillemets, car il peut introduire plus de problèmes que vous voulez. Par exemple, sans autre JS le bouton retour ne fonctionnera pas pour aller au lien précédent. Mais ceci centre l'article donné votre code d'échantillon.
ajouter ceci à la page ci-dessus avant la lié balise de fermeture <head>
:
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
<script type="text/javascript">
$(function(){
$("a[href^=#]").click(function(e){
var id = $(this).attr('href').substr(1),
$target = $('*[name=' + id + '] img'),
$window = $(window),
offset = $target.offset();
var left = offset.left - ($window.width()/2) + ($target.width()/2);
var top = offset.top - ($window.height()/2) + ($target.height()/2);
$('html,body').scrollTop(top).scrollLeft(left);
e.preventDefault(); // Keep the browser from trying
});
});
</script>
Il trouvera tous a
tags avec des liens internes (commence href avec #
). Puis il trouve la cible qui a ce nom, et attrape la balise img
enfant. Ensuite, il obtient les dimensions de l'élément img
et l'élément window
. Est-ce que certains éléments mathématiques avec les éléments img
sont décalés et le font défiler au centre.
Que diriez-vous d'une URL? –
vous pouvez utiliser un service comme pastebin pour coller le code –
http://www.cslack.com/test.html –