2012-04-06 20 views
1

<div id='pageheader'> mit folgender CSS Gegeben:Verhindern eines festen Header aus seinem Versteck Text mit CSS

#pageheader { position: fixed; top: 0px; width: 100%; height: 35px; } 
body { margin-top: 35px; } 

ich einen Header haben, die am oberen Rand der Seite fixiert bleibt. Das Problem ist, wenn der Benutzer auf einen Link zu einem anderen Teil der gleichen Seite klickt, erscheint das Ziel der Verknüpfung unter die Kopfzeile. Ich bin mir nicht sicher, wie ich das verhindern kann.

Bearbeiten: Ich endete mit JQuery, um interne Links ein reibungsloses Scroll zu geben, die dieses Problem behoben.

$("span.sect1, span.sect2").click(function(){ 
    var target = '#' + $(this).find("a").attr('href').match(/#(.*)$/)[1];  
    var position = $(target).offset(); 
    $('html, body').animate({scrollTop: (position.top -40)}, "slow"); 
}); 
$("a.xref").click(function(){ 
    var target = '#' + $(this).attr('href').match(/#(.*)$/)[1];  
    var position = $(target).offset(); 
    $('html, body').animate({scrollTop: (position.top -40)}, "slow"); 
}); 

Antwort

0

Wo bevor Sie haben könnten:

<h1 id="target">Get here with #target</h1> 

Try this:

<h1><a id="target" style="position: relative; top: -35px;"></a>Get here with #target</h1> 
+0

Leider muss ich eine Lösung, die mit CSS arbeitet. Der HTML-Code wird aus docbook XML generiert, und die Links sind zu IDs, nicht zu versteckten Ankern. – Scribblemacher

+0

Nun, Sie könnten das CSS auf die 'h1' anwenden:' position: relative; oben: -35px; padding-top: 35px; ' –

+0

Während das funktioniert, ändert diese Technik auch andere Teile des Seitenlayouts. Zum Beispiel haben einige Header eine Hintergrundfarbe und erstrecken sich über die Seite, und wenn sie den Abstand ändern, erhöht sich ihre sichtbare Höhe. Es ist auch schwierig für mich, alle Objekte auf der Seite vorauszusehen, die das Ziel eines Links sein könnten. – Scribblemacher

Verwandte Themen