Wie fix einen header auf scroll
Erstelle ich einen header, einmal gescrollt werden, um eine bestimmte Menge von Pixeln, es fixiert und bleibt an Ort und Stelle.
Kann ich das einfach mit css und html oder muss ich das jquery auch?
Habe ich eine demo, so dass Sie verstehen können. Jede Hilfe würde groß sein!
body{
margin:0px;
padding:0px;
}
.clear{
clear:both;
}
.container{
height:2000px;
}
.cover-photo-container{
width:700px;
height: 348px;
margin-bottom: 20px;
background-color:red;
}
.small-box{
width:163px;
height:100px;
border:1px solid blue;
float:left;
}
.sticky-header{
width:700px;
height:50px;
background:orange;
postion:fixed;
}
InformationsquelleAutor der Frage Paul Designer | 2013-10-03
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie einige JS zu tun, scroll-Ereignisse. Der beste Weg, dies zu tun ist, um eine neue CSS-Klasse für die fixe position, die Sie erhalten, zugeordnet zu den entsprechenden div beim scrollen geht vorbei an einem bestimmten Punkt.
HTML
CSS
jQuery
Beispiel Geige: http://jsfiddle.net/gxRC9/501/
EDIT: Erweitertes Beispiel
Wenn der Auslöser ist unbekannt, aber sollte werden, wenn die sticky-element an der Spitze der Bildschirm
offset().top
verwendet werden kann.Erweitertes Beispiel Geige: http://jsfiddle.net/gxRC9/502/
InformationsquelleAutor der Antwort Coop
Habe ich geändert, die Coop Antwort. Bitte überprüfen Sie die Beispiel FIDDLE
Hier meine änderungen:
InformationsquelleAutor der Antwort Mobeen Abdullah
Ich weiß, Coop hat diese Frage bereits beantwortet, aber hier ist eine version, die auch Strecken, wo im Dokument das div-Element, anstatt auf einem statischen Wert:
http://jsfiddle.net/gxRC9/16/
Javascript
CSS
InformationsquelleAutor der Antwort Rich
Coop Antwort ist ausgezeichnet.
Aber es hängt davon ab, jQuery, hier ist eine version, die keine Abhängigkeiten:
HTML
CSS
JS
(Dies verwendet eyelidlessness Antwort für das finden von offsets in Vanilla JS.)
Beispiel
https://jsbin.com/walabebita/edit?html,css,js,output
InformationsquelleAutor der Antwort RubenSandwich
Nur Gebäude auf Reiche Antwortdie verwendet offset.
Ich geändert wie folgt:
$sticky
im Reich Beispiel, es war nicht etwas zu tun,Habe ich verschoben, der offset check-in eine separate Funktion, und nannte es
auf Dokument fertig, sowie auf Blättern also, wenn die Seite aktualisiert mit der
scrollen Sie auf halbem Weg unten auf der Seite, es ändert, direkt, ohne zu warten, für ein Blättern auslösen
InformationsquelleAutor der Antwort crdunst
Coops Antwort ist eine gute, einfache Lösung, die jedoch, sobald Sie die Feste Klasse die Seite wird, die viel kürzer und Inhalt "springt", und wenn eine Seite hat eine Länge, wo das scroll-Abstand ist kleiner als die Höhe des header-element, es wird angezeigt, um zu springen und lassen Sie nicht sehen, der unten auf der Seite.
Die Antwort, die ich fand, war, fügen Sie eine spacer-div-Element über dem element, das wird behoben (nav-element in meinem Fall), und legen Sie es auf die gleiche Höhe wie die nav-element, und legen Sie es auf display none.
Beim hinzufügen der .Feste Klasse auf der nav Karte die .nav-spacer-div, und wenn es zu entfernen, zu verstecken. Da die Höhe der Seite, werden die änderungen sofort habe ich die Dauer auf 0 gesetzt.
HTML
CSS
JavaScript
InformationsquelleAutor der Antwort Craig Jacobs
Funktioniert es perfekt.
InformationsquelleAutor der Antwort arjun
Die gewählte Lösung nicht zu dem passte gut in meine Seite. So ist dies eine erweiterte version, die funktioniert mit bootstrap.
Die javascript -
Die CSS -
Und die HTML -
InformationsquelleAutor der Antwort Daniel
Oder einfach fügen Sie ein
span
tag mit der Höhe der festen header Satz als seine Höhe, dann fügen Sie es neben dem sticky-header:InformationsquelleAutor der Antwort user3721605
Hoffentlich ist dies ein Stück von einer alternativen Lösung wird als wertvoll für jemand anderen, wie es bei mir war.
Lage:
In eine HTML5-Seite hatte ich ein Menü, das war ein nav-element innerhalb einer überschrift (nicht DER header, aber einen header in einem anderen element).
Ich wollte die navigation auf stick nach oben, sobald ein Benutzer gescrollt, aber vorher der Kopf war absolut positioniert (so hätte ich es overlay etwas anderes etwas).
Die oben genannten Lösungen nie ausgelöst wird, eine Veränderung da .offsetTop war nicht zu ändern, da dies war ein absolut positioniertes element. Zusätzlich werden die .scrollTop-Eigenschaft wurde einfach die Spitze des obersten Elements... das heißt 0 und würde es immer 0 sein.
Alle tests, die ich durchgeführt unter Verwendung dieser beiden (und gleichzeitig mit getBoundingClientRect Ergebnisse) würde mir nicht sagen, wenn die Obere Navigationsleiste immer gescrollt werden, um den oberen Rand der sichtbaren Seite (wieder, wie berichtet, in der Konsole, Sie blieben die gleichen zahlen beim scrollen aufgetreten ist).
Lösung
Die Lösung war für mich die Verwendung
Den Wert der pageTop Eigenschaft spiegelt den sichtbaren Bereich des Bildschirms, daher erlauben Sie mir, zu verfolgen, wo ein element ist in Bezug auf die Grenzen des sichtbaren Bereichs.
Dies erlaubt eine einfache Funktion zugewiesen, das scroll-Ereignis des Fensters zu erkennen, wenn die Obere Navigationsleiste durchschnitten, die Spitze der sichtbaren Fläche auftragen und das styling zu machen, stick an die Spitze.
Wohl unnötig zu sagen, immer wenn ich bin den Umgang mit scrollen ich erwarte, dass diese Lösung verwenden, um programmgesteuert reagieren, um die Bewegung der Elemente wird gescrollt.
Hoffe es hilft jemand anderem.
InformationsquelleAutor der Antwort MER