.centered {
position: fixed;
top: 50%;
left: 50%;
/* bring your own prefixes */
transform: translate(-50%, -50%);
}
bisher die eleganteste Lösung … funktioniert auf allen Kartons aller Größen und Proportionen und es ist keine Anpassung erforderlich. Ist es Cross-Browser-kompatibel?
– Gautam
1. Dezember 2016 um 5:11 Uhr
Dies hat einen seltsamen Effekt auf die Größe des Elements und den darin enthaltenen Inhalt. Zum Beispiel nimmt das Element ohne left:50% so viel Platz in der Breite wie nötig ein, aber mit left:50% erhält es auf magische Weise eine Größe und teilt den Inhalt in mehrere Zeilen auf.
– mjs
31. Mai 2017 um 17:51 Uhr
Empfehlen Sie auch das Hinzufügen von a z-index: 20 (oder jeder Wert größer als 1 sollte ausreichen), um sicherzustellen, dass er über anderen Inhalten auf dem Bildschirm angezeigt wird).
– Jeremy Moritz
29. Januar um 23:16 Uhr
Veränderung position:absolute zu position: fixed und Sie sollten gut gehen!
Wenn Sie Position – absolut sagen, ist das Referenz-Div das übergeordnete Div, das eine Position hat – Relativ. Wenn Sie jedoch position -fixed sagen, ist die Referenz das Fenster des Browsers. was Sie in Ihrem Fall wollen.
Im Fall von IE6 müssen Sie vermutlich CSS-Ausdrücke verwenden
Außer in IE6 und mobilen Browsern.
– Merkator
16. Dezember 2010 um 17:00 Uhr
es muss in allen Browsern funktionieren, Javascript-Lösung wird akzeptiert
– Frager
16. Dezember 2010 um 18:10 Uhr
um den ie6 braucht man sich keine sorgen zu machen… er gilt schon lange als tot
– Kasturi
16. Dezember 2010 um 18:31 Uhr
Überprüfen Sie die einfache und effektivste Lösung von @ 13209dy unten. Konnte bisher keine bessere Lösung dafür finden
– Gautam
1. Dezember 2016 um 5:13 Uhr
Grundlegender Codierer
Wenn Sie die Position Ihres Elements nicht auf ändern möchten fixedhier ist eine Lösung, bei der Sie Ihr Element behalten absolut.
Da CSS calc() wird jetzt von allen Browsern unterstützt, hier eine Lösung mit calc().
War mir dessen nicht bewusst und war genau das, was ich für diesen Fall brauchte – toller Vorschlag @Robert Hahn.
– Kyleturner
3. Dezember 2015 um 15:36 Uhr
Perfekt, wenn Sie Ihr absolutes Element noch brauchen. Tolle Antwort!
– Drazen Bjelovuk
4. April 2018 um 19:52 Uhr
Kann jemand erklären, wie die Berechnung das erreicht, was OP verlangt? Tolle Lösung.
– Code_12
10. Oktober 2018 um 5:50 Uhr
vanowm
Ein etwas komplexerer Weg ist die Verwendung mehrerer Umkartons. Diese Methode funktioniert gut mit oder ohne fest codierte Breite/Höhe des mittleren Kästchens (Hintergrundfarben wurden hinzugefügt, um zu zeigen, was jedes Kästchen tut):
/* content of this box will be centered horizontally */
.boxH
{
background-color: rgba(0, 127, 255, 0.2);
width: 100%;
height: 100%;
position: absolute;
top: 0;
left: 0;
display: flex;
flex-direction: column;
align-items: center;
}
/* content of this box will be centered vertically */
.boxV
{
background-color: rgba(255, 0, 0, 0.2);
height: 100%;
display: flex;
flex-direction: row;
align-items: center;
}
/* content of this box will be centered horizontally and vertically */
.boxM
{
background-color: lightblue;
padding: 3em;
}
<div>
some text in the background
</div>
<div class="boxH">
<div class="boxV">
<div class="boxM">
this div is in the middle
</div>
</div>
</div>
Es zentriert die div durch Erhöhung der margin an allen Seiten, um den gesamten Bildschirm auszufüllen.
EDIT: Ich habe herausgefunden, dass es eine Abkürzung für gibt top,right,bottom,left das ist inset. Es wurde in den wichtigsten Browsern implementiert und Sie können die Kompatibilität mit anderen Browsern sehen hier
Um ein Div absolut auf einem Bildschirm zu zentrieren:
Dies ist eine Variation der Antwort von Kenneth Bregat. Es unterhält absolute Positionierung statt fixed, und es löst Probleme mit dem Textumbruch, die in einigen Antworten erwähnt werden. Vergessen Sie nicht, dass die Eltern brauchen relative Positionierung.