Erstellen Sie eine variable Höhe "fixiert" - header in CSS mit scrollbaren Inhalt
Ich möchte erstellen Sie eine Kopfzeile auf der Seite, bewegt sich nicht, wenn Sie die Seite scrollen.
Das scheint einfach, fügen Sie einfach "position: fixed" für den Stil, aber der Inhalt erscheint unterhalb der Kopfzeile, da die Kopfzeile ist "entfernt aus dem Fluss". Also die Lösung, die ich denke, ist das hinzufügen von "margin-top: Höhe" auf den Inhalt.
Was ist der beste Weg, um dieses Problem zu lösen, wenn die Höhe des headers ist variabel?
Ich habe eine Geige, die das problem veranschaulicht:
http://jsfiddle.net/waterlooalex/j4Z8F/2/
Angabe Ihrer browser-Fenster ist nicht zu groß, der content-text-scroll unten das 'hello world header', das problem ist, dass die erste Zeile der text "Lorem ipsum..." ist ausgeblendet. Ich habe einige auskommentieren javascript, die Werke rund um das Thema.
- Sie wollen also einen header, der Aufenthalt auf der Oberseite der Seite und sich nicht bewegen? Warum nicht einfach machen es einem
div
und style es wie ein header? Scheint der einfachste Weg - Ich bin mir nicht sicher, ob ich verstehe. Ich verwende ein div, siehe fiddle-link oben.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Könnte man hinzufügen, eine zweite Kopie der header div das ist nicht fest und verwenden Sie so etwas wie
visibility:hidden
auf Sie. So ist es schiebt den content nach unten, um die genaue Stelle, die Sie brauchen, aber ohne Verwendung von JavaScript. Ein bisschen hackish aber ich versuchte es in Ihrer fiddle und es funktioniert.visibility:hidden
?Lösen können Sie dieses mit flexbox layout-Modell, wie in der folgenden demo.
Beachten Sie, dass ich Hinzugefügt habe
display:flex
zu<body>
für demo-Zwecke, idealerweise sollten Sie geben es einem mehr bestimmten übergeordneten element.CSS:
HTML:
Diesem javascript wird die variable Höhe eines festen header und legen Sie den oberen Rand des content-flow unter. Einfach anrufen onload
Habe ich immer einen Rand auf der Oberseite der Inhalt jedoch hoch der header ist, wie mein Kopf normalerweise nicht ändern müssen Höhe.
Wenn Ihr header hat ändern die Höhe dann gehen zu müssen, gehen Sie für die JavaScript zu umgehen, fürchte ich. Wird aus der Strömung bedeutet, dass der rest der Seite wird normal weiter zu tragen und JavaScript haben, um Schritt zu helfen.
Um dies zu beheben, ich landete hinzufügen eines 'dummy' - div in meiner Inhalte.
Dieses div die gleiche Höhe hat wie der header-div, damit schiebt den content nach unten genau genug, um die richtige offset.
Dies ist die gleiche Antwort wie oben von @curtisdf, aber er schlägt vor, machen eine Kopie von deinem header, ich bin darauf hindeutet, wodurch ein leeres div mit gleicher Höhe.
Da gibt es viele Gründe, die Höhe ändern kann (Fenster Größe ändern, content ändern, ...) landete ich mit https://github.com/marcj/css-element-queries/blob/master/src/ResizeSensor.js halten der Höhe aus dem dummy-div in sync mit dem echten header:
Beachten Sie, dass ich den Verweis auf die real-header (mich.Zusammenfassung) und den dummy (mich.summaryDummy), weil der aurelia.io ' s ref-Implementierung, aber Sie bekommen einen Verweis auf deine divs mit JQuery oder über die ID.