Center position:fixed element
Ich würde gerne eine position: fixed;
popup-Fenster zentriert auf dem Bildschirm mit einer dynamischen Breite und Höhe. Ich verwendet margin: 5% auto;
für diese. Ohne position: fixed;
it-Zentren fine horizontal, aber nicht vertikal. Nach dem hinzufügen position: fixed;
, ist es auch gar nicht zentrieren horizontal.
Hier das komplette set:
CSS:
.jqbox_innerhtml {
position: fixed;
width: 500px;
height: 200px;
margin: 5% auto;
padding: 10px;
border: 5px solid #ccc;
background-color: #fff;
}
HTML:
<div class="jqbox_innerhtml">
This should be inside a horizontally
and vertically centered box.
</div>
Wie kann ich die center dieses Feld im Bildschirm mit CSS?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dass Sie im Grunde benötigen, um
top
undleft
zu50%
zur Mitte der linken oberen Ecke des div. Sie müssen auch diemargin-top
undmargin-left
um die negative Hälfte des div-height-und width-Verschiebung der Mitte in Richtung der Mitte des div.So, vorausgesetzt, eine
<!DOCTYPE html>
(standards-Modus), sollte dies tun:Oder, wenn Sie nicht kümmern, über das zentrieren vertikal und alten Browsern wie dem IE6/7 verwenden, dann können Sie stattdessen auch hinzufügen
left: 0
undright: 0
um das element mit einemmargin-left
undmargin-right
vonauto
, so dass das fest positionierte element mit einer festen Breite weiß, wo Links und rechts offsets beginnen. In deinem Fall also:Wieder, das funktioniert nur im IE8+, wenn Sie sich über IE, und diese Zentren nur horizontal, nicht vertikal.
translate
ist unnötig.Hier ist ein moderner Ansatz für horizontal zentrieren eines Elements mit einer Breite dynamisch - es funktioniert in allen modernen Browsern; Unterstützung können hier eingesehen werden.
Aktualisiert-Beispiel
Sowohl für vertikale und horizontale Zentrierung könnten Sie Folgendes verwenden:
Aktualisiert-Beispiel
Möchten Sie vielleicht hinzufügen, in mehr vendor-Präfix-Eigenschaften zu (siehe Beispiele).
transform
wird berechnet. Ich bin jetzt mit einer variation Wird Prescot Antwort statt, mit keine Probleme bisher.Oder fügen Sie einfach
left: 0
undright: 0
auf Ihre original-CSS, das macht es Verhalten sich ähnlich zu einem normalen nicht-festen element und den üblichen auto-margin-Technik funktioniert:Hinweis: Sie benötigen ein gültiges (X)HTML -
DOCTYPE
für die es sich zu Verhalten korrekt im IE (und das sollten Sie natürlich sowieso..!)right
Eigenschaft, wennleft
ist auch eingestellt! ( msdn.microsoft.com/en-us/library/... stellt fest, dassleft
undright
nur "teilweise" Unterstützung im IE7). OK, ich gebe zu, diese Lösung ist nicht gut, wenn die IE7-Unterstützung ist wichtig, aber ein toller trick merken für die Zukunft 🙂left
undright
machtmargin:0 auto
Arbeit?margin: auto
Zentren horizontal eine Feste/absolut positioniertes element nur, wenn Werte vonleft
,right
undwidth
auf dieses element nichtauto
.width:100%;
und einmax-width:1280px;
Fügen Sie einen container wie:
Dann setzen Sie Ihre box in diesem div wird die Arbeit zu tun.
display: inline-block
für diese zu arbeiten. (Einige andere Werte anzeigen könnte ebenfalls funktionieren, wietable
.)margin:auto;
und ändern von Breite zuwidth:50%
oderwidth:400px
. anschließend können die Inhalte direkt text, block-Elemente oder inline-Elemente.Nur hinzufügen:
position: fixed
, das ist, was die Frage ist. Wenn ich falsch bin, bitte Bearbeiten Sie die Antwort, um eine ausführbare code-snippet.position: fixed
, sofern festgelegt, diemax-width
oderwidth
um das element.Diese Lösung erfordert keine Sie zum festlegen der Breite und Höhe, um Ihren popup-div.
http://jsfiddle.net/4Ly4B/33/
Und statt der Berechnung die Größe des popup -, und minus der Hälfte an die Spitze, javascript resizeing der popupContainer, um den gesamten Bildschirm ausfüllt...
(100% Höhe funktioniert nicht, wenn mit display:table-cell; (wich ist erforderlich, um die Mitte etwas vertikal))...
Wie auch immer es funktioniert 🙂
War funktioniert nicht unter IE7.
Geändert
Angefangen zu arbeiten, aber in den übrigen Browsern wird es aufhören zu arbeiten!
So verwendet dieser Weg für IE7 unter
Grundsätzlich können Sie wickeln Sie es in ein anderes
div
und seineposition
zufixed
.CSS:
HTML:
To fix the position verwenden :-
Ich verwendet
vw
(viewport width) undvh
(viewport-Höhe). viewport ist dem gesamten Bildschirm.100vw
ist Ihren Bildschirmen gesamten Breite und100vh
ist insgesamt der Höhe.Eine mögliche Antwort:
Versuchen Sie es mit diesem für den horizontalen Elementen, die nicht center richtig.
width: calc (width: 100% - Breite, was anderes ist aus der Zentrierung es)
Beispielsweise, wenn Ihre Seiten-navigation 200px:
innen es kann jedes element mit diffenet Breite, Höhe oder ohne.
alle zentriert sind.
Die einzige sichere Lösung ist die Verwendung von table align=center, in:
Ich kann nicht glauben, dass Menschen auf der ganzen Welt verschwenden diese reichlich blöde Zeit zu lösen, ein so grundlegendes problem wie zentrieren einer div. css-Lösung funktioniert nicht in allen Browsern, jquery-Lösung ist ein software-rechnerische Lösung und ist nicht eine option für andere Gründe.
Habe ich verschwendet zu viel Zeit immer wieder zu vermeiden, mit Tisch, aber aus Erfahrung sagen, mich zu stoppen, es zu bekämpfen. Benutzen Sie die Tabelle für das zentrieren von div. Arbeitet die ganze Zeit in allen Browsern! Nie sorgen mehr.
position:fixed
.