Wie verwenden von CSS position klebrig zu halten, eine Seitenleiste sichtbar mit Bootstrap 4
Ich habe zwei Spalten-layout wie dieses:
<div class="row">
<div class="col-xs-8 content">
</div>
<div class="col-xs-4">
</div>
</div>
Wenn ich die position:sticky
auf die sidebar-Spalte, bekomme ich die klebrige Verhalten der sidebar: https://codepen.io/marcanuy/pen/YWYZEp
CSS:
.sticky {
position: sticky;
top: 10px;
}
HTML:
<div class="row">
<div class="col-xs-8 content">
</div>
<div class="col-xs-4 sticky">
</div>
</div>
Aber wenn ich die sticky
Eigenschaft nur der Menü, die sich in der Seitenleiste, so dass die Verwandte Artikel Abschnitt scrollt normal und bekommt die sticky Verhalten mit der Menü div, es funktioniert nicht:
<div class="row">
<div class="col-xs-8 content">
</div>
<div class="col-xs-4">
<div class="menu sticky">
</div>
</div>
</div>
Dies ist der screencast das erste Beispiel das scrollen über die ganze sidebar mit einer klebrigen Verhalten, und dann ändern Sie die klebrige Eigenschaft, um das Menü, das nicht funktioniert:
Bootstrap-4 empfiehlt die sticky Eigenschaft als fiel die Unterstützung für das Anbringen jQuery-plugin:
Fiel das Affix jQuery-plugin. Wir empfehlen die Verwendung von position: sticky polyfill statt.
Habe ich es getestet in:
-
Firefox 47.0 mit
css.sticky.enabled=“true”
unterabout:config
-
Chrome 50.0.2661.94 (64-bit) mit
experimental Web Platform features
aktiviertchrome://flags
(Dies ist kein Duplikat von Wie man einen sticky-sidebar im Bootstrap? da, dass man mit BS anbringen kann)
- Sind Sie versuchen, so etwas wie das - codepen.io/nagasai/pen/NAXgXQ
- Nein, ich will das sticky-Effekt hier beschrieben: developer.mozilla.org/en/docs/Web/CSS/position Statt der Briefe, die sidebar sollte mit einer relativen position und wechseln Sie dann zu einem fest ein.
- also kein jQuery oder javascript?
- Kein javascript, nur mit der nativen browser -
position:sticky
unterstützen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
In die stabile Bootstrap 4.0.0 release, dies geschieht mit Hilfe der
sticky-top
Klasse...Demo
Diese Werke auch in der Höhe des header/navbar, content und footer sind dynamische/unbekannt.
https://www.codeply.com/go/QJogUAHIyg
Ich löste aktivieren
flexbox
. Nach dem anheben ein Problem in der Bootstrap-s Github repository bekam ich eine Antwort von einer Bootstrap -Mitglied:Polyfill Erklärung.
Müssen Sie den JS-polyfill, um es zu benutzen. Die polyfills empfohlen durch den link auf der Bootstrap-Seite sind
Hier ist eine aktualisierte codepen: https://codepen.io/anon/pen/zBpNRk
Ich enthalten die erforderlichen polyfill (ich habe stickyfill) und bezeichnet es mit
Der Bibliothek vorgeschlagen, Sie verwenden diese für Ihre css -
und schließlich hatte Sie die
div
Reihenfolge Durcheinander. Sie müssen diediv
mit der klebrigen Klasse außerhalb einer ganzen Reihe so füllte ich den rest der Zeile mit einem anderen<div class="col-xs-6"></div>
ist leer.position:sticky
nativ wie in der Frage.Die Antwort von @wrldbt arbeitet bis zu bootstrap-4 alpha 5 alpha 6 die
-xs
infix wurde fallen gelassen und die Gitter sind neu geschrieben worden.Ich etwas zusammen, ein bisschen sauberer, die Arbeit mit der aktuellen version von bootstrap & auch einen sticky footer mit flexbox.
https://codepen.io/cornex/pen/MJOOeb