Ich versuche, ein Div zu erhalten, dessen position:fixed
Mitte auf meiner Seite ausgerichtet ist.
Ich war immer in der Lage, dies mit absolut positionierten Divs mit diesem "Hack" zu tun.
left: 50%; width: 400px; margin-left:-200px
... wobei der Wert für margin-left die halbe Breite des div beträgt.
Dies scheint nicht für Divs mit fester Position zu funktionieren, sondern platziert sie nur mit der Ecke ganz links bei 50% und ignoriert die Deklaration am linken Rand.
Irgendwelche Ideen, wie dies behoben werden kann, damit ich fest positionierte Elemente zentrieren kann?
Und ich werde einen Bonus-M & M einwerfen, wenn Sie mir sagen können, wie Sie absolut positionierte Elemente besser zentrieren können als oben beschrieben.
Antworten:
Koens Antwort zentriert das Element nicht genau.
Der richtige Weg ist,
CCS3 transform
Eigentum zu verwenden . Obwohl es in einigen alten Browsern nicht unterstützt wird . Und wir müssen nicht einmal einen festen oder relativen Wert festlegenwidth
.Arbeitender jsfiddle Vergleich hier .
quelle
left: 50%
verschiebt das Div auf die 50% der Seite. Aber Sie müssen bedenken, dass es es von der linken Seite des Div aus bewegt, daher ist das Div noch nicht zentriert.translate(-50%, 0)
DiestranslateX(-50%)
berücksichtigt im Wesentlichen die aktuelle Breite des Div und verschiebt es um -50% seiner Breite vom tatsächlichen Ort nach links.Für diejenigen, die das gleiche Problem haben, aber ein ansprechendes Design haben, können Sie auch Folgendes verwenden:
Auf diese Weise bleibt Ihr Fix immer
div
auf dem Bildschirm zentriert, auch bei einem ansprechenden Design.quelle
-(75/2)
in diesem Fall)Sie können auch dafür die Flexbox verwenden.
quelle
<center>
die veraltete Erwähnung entfernt und eine moderne Technik wie diedisplay: flex
und einige damit verbundene Eigenschaften verwendet habe.Aus dem obigen Beitrag denke ich, dass der beste Weg ist
width: 100%
margin-left: auto
undmargin-right: auto
, oder machen Sie es für den Tischalign="center"
.Hoffe das wird helfen.
quelle
max-width
s für Elemente mit fester Position zuzulassen . Sie möchten eine feste Seitenleiste, die 30% Ihrermax-width: 1200px
Webseite beansprucht? Dies wird Sie dorthin bringen.Normale Divs sollten
margin-left: auto
und verwendenmargin-right: auto
, aber das funktioniert nicht für feste Divs. Der Weg dahin ähnelt Andrews Antwort , verwendet aber nicht das veraltete<center>
Ding. Geben Sie dem festen Div einfach einen Wrapper.Dadurch wird ein festes Div innerhalb eines Div zentriert, während das Div mit dem Browser reagieren kann. Das Div wird zentriert, wenn genügend Speicherplatz vorhanden ist, kollidiert jedoch mit dem Rand des Browsers, wenn dies nicht der Fall ist. Ähnlich wie ein regulär zentriertes Div reagiert.
quelle
Wenn Sie die Ausrichtung einer festen Position zentrieren möchten, verwenden Sie diese Option sowohl vertikal als auch horizontal
quelle
Wenn Sie wissen, dass die Breite 400px beträgt, ist dies wahrscheinlich der einfachste Weg, dies zu tun.
quelle
Dies sollte das gleiche tun.
quelle
Dies funktioniert, wenn sich das Element wie eine andere Navigationsleiste über die Seite erstrecken soll.
width: calc (width: 100% - width was auch immer sonst nicht zentriert ist)
Zum Beispiel, wenn Ihre seitliche Navigationsleiste 200px ist:
Breite: berechnet (100% - 200 Pixel);
quelle
Mit der Breite ist es ganz einfach: 70%; links: 15%;
Legt die Elementbreite auf 70% des Fensters fest und lässt auf beiden Seiten 15%
quelle
Ich habe Folgendes mit Twitter Bootstrap (v3) verwendet
Das heißt, Sie erstellen ein Element mit voller Breite und fester Position und schieben einfach einen Container hinein. Der Container wird relativ zur vollen Breite zentriert. Sollte sich auch gut verhalten.
quelle
Eine Lösung mit Flexbox; voll ansprechbar:
quelle
Wenn Sie die Wrapper-Methode nicht verwenden möchten. dann können Sie dies tun:
quelle