Wie kann ich einem div automatisch gesetzt, es eigne Breite?
Wie kann ich ein DIV-Breite Verhalten sich, wie wenn float:left
gesetzt ist, aber ohne einen float? width:auto
nicht scheinen, es zu tun (in chrome).
Ich versuche, so etwas wie den folgenden zu arbeiten...
.center
{
margin-left: auto;
margin-right: auto;
width: auto;
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
Lösung mit inline-block
Könnten Sie versuchen
display: inline-block
und sehen, ob das in Ihrer situation funktioniert. Allerdings werden Sie nicht in der Lage sein, um es mitmargin-left: auto
&margin-right: auto
weil diese Technik erfordert eine Breite Wert.Wenn möglich, verwenden Sie
display: inline-block
- und set -text-align: center
auf container.Lösung mit Flexbox - + div-container
Die ursprüngliche Antwort oben wurde geschrieben im Jahr 2011, vor flexbox implementiert wurde. Sie können einen ähnlichen Effekt erzielen
Lösung ohne div-container
Es ist ein weiterer Weg, dies zu tun, ohne ein übergeordnetes element.
inline-block
um die div-Breite passen zu Ihrem Inhalt.position: relative
undleft: 50%
an-position den linken Rand auf 50% des enthaltenden Elements.transform: translateX(-50%)
die "shift" - dem element auf der linken Seite von der Hälfte seiner eigenen Breite.text-align
aber wenn möglich würde ich eher nicht haben, hinzufügen einer anderen Ebene der Verschachtelung. Kennen Sie noch andere Möglichkeiten, zum zentrieren einer div von unbekannt Breite?Für diejenigen von Euch, die noch kommen über dieses Problem, heutzutage kann man handhaben mit:
Hier ist eine neue Geige auf der Grundlage der akzeptierten Antwort: http://jsfiddle.net/j33qL8pa/1/
Ich denke, das funktioniert heutzutage:
<div>
s sind block-Elemente. Sie nehmen die volle Breite Ihrer Container. Zeitraum. Wie<body>
oder<html>
Ihre Regel oben ist im wesentlichen dies:
div { width:100%; margin:0 auto; }
als 100% ist Ihr auto Wert.inline-block
funktionieren würde, aber es wird nicht funktionieren, genau wie ein echterinline-block
element.Im Grunde...man kann es nicht ohne eine Breite, Positionierung.
Wenn Sie gehen die inline-block-Strecke, geben Sie diese ein, Lesen...können Sie am Ende kämpfen einige unerwartete Schlachten mit Ihren CSS-Erwartungen.
http://www.brunildo.org/test/InlineBlockLayout.html (link gefunden in der Nähe der Unterseite der folgenden msdn-Seite)
http://msdn.microsoft.com/en-us/library/ms530751%28v=vs.85%29.aspx