Winkel-6 - CSS - KLEBRIG-Header
Ich habe 3 Elemente : 1 toolbar, 1 Karte , eine andere Symbolleiste.
die Elemente sind untereinander
Möchte ich, dass die zweite Symbolleiste Aufenthalt unter der map-element (auf 400px an der Spitze), aber wenn ich nach unten scrollen, meine zweite Symbolleiste wird gestoppt, 50px von oben und wird fix unter den ersten.
Vielen Dank für Ihre Hilfe
//Component.html
<mat-toolbar color="primary" [ngStyle]="{'height':'50px'}" class="fixed-header" >
</mat-toolbar>
<div class="custom-popup" id="frugalmap" ></div>
<mat-toolbar color="warn" class="mat-elevation-z5">
</mat-toolbar>
//Komponente.css
.fixed-header {
position: fixed;
z-index:999;
}
#frugalmap {
height: 300px;
width: 100%;
margin-top:50px;
}
.mat-elevation-z5 {
position: relative;
z-index: 2;
}
- Ich möchte meine Karte zwischen meinen 2 Symbolleisten, und ich möchte nur, wenn ich nach unten scrollen, dass der zweite Symbolleiste wird fix unter den ersten. Wissen Sie das ? vielen Dank für Eure Hilfe
Du musst angemeldet sein, um einen Kommentar abzugeben.
Bevor ich Ihre Frage beantworten, Sie kann betrachten:
z-index: 100000000
.!important
nur, wenn es keine andere Wahl.Da können wir nicht schreiben, Eckig-code via StackOverflow die snippets, die ich schrieb den code mit Stackblitz - https://stackblitz.com/edit/angular-ii5tnn
Machen, eine position, die klebrig, sowie, verwenden Sie einfach
position: sticky
mit zusätzlichentop
oderbottom
Regel (in diesem Fall oben). Zum Beispiel:Diese Weise
mat-toolbar
bleibt an seiner position, bis wir es passieren.In meinem Beispiel habe ich:
mat-toolbar
mit[color="primary"]
und setzen Sie es fest über CSS.#frugelmap
mit benutzerdefinierten Höhe, nur um es zu zeigen.mat-toolbar
mit[color="warn"]
- und das sticky-Regeln (sehen Sie unten)#add-spacing
mit viel lorem ipsum nur zeigen das sticky-Effekt.Den folgenden CSS-Regeln:
Zu vermeiden, die browser-support-Anliegen der
position: sticky
können Sie leicht erreichen dies, indem SiengClass
toggle sticky-Verhalten:component.html
usign
HostListener
zu verfolgen, scroll-position, wie Sie, sollten Sie nicht verwenden, JS event-handler direkt in den Winkel:Komponente.ts
schließlich das hinzufügen von Stil für unsere custom class
sticky
.Komponente.css
Stackblitz Demo
Da die andere Antwort stützen sich meist auf CSS nicht in allen Browsern verfügbar werde ich mir erlauben, zu werben für mein lib Winkel-sticky-Dinge.
Es hat eine Funktion, die aufgerufen wird, 'boundary Elements' und Sie können ihn in Aktion zu sehen in dem oben genannten link. Was Sie tun, ist im Grunde Sie schneiden Sie Ihre Seite in Abschnitte (was Sie in der Regel schon haben) und dann sagen Sie ein element zu klebrig sein, innerhalb der Grenzen des übergeordneten Elements.
Können Sie hier in Aktion sehen:
Installieren Sie einfach die lib hinzufügen mein code und ersetzt das div mit der
stickyThing
mit einer Matte-Symbolleiste. Das ist im Grunde es.Ich konnte nicht verwenden Sie den code, der Ihre Frage, weil ich nicht haben, um alle Ihre code. Also schrieb ich Ihnen ein Beispiel von dem, was Sie tun möchten, mit Sie zweiten Symbolleiste.
Mein code ist nicht in eckige, sondern es hat die gleiche css-styling und ein Javascript-event-handler zum hinzufügen/entfernen einer Klasse zu beheben, die zweite Symbolleiste von oben. Ersetzen Sie einfach die Elemente mit Ihren eigenen Elementen Klassennamen.
dass Sie können verwenden t
JS:
CSS:
HTML:
position: sticky
- developer.mozilla.org/en-US/docs/Web/CSS/position. Auf diese Weise, Sie brauchen nicht zu verwenden, JS zu erreichen, die klebrige Wirkung.