Wie kann ich center float-Elemente?
Ich bin der Implementierung der Paginierung, und es muss zentriert werden. Das problem ist, dass die links angezeigt werden müssen, als block, so müssen Sie zu schwebte. Aber dann text-align: center;
nicht an Ihnen arbeiten. Ich konnte es erreichen, indem der wrapper-div padding von Links, aber mit jeder Seite wird es eine unterschiedliche Anzahl von Seiten, so dass es nicht funktionieren würde. Hier ist mein code:
CSS:
.pagination {
text-align: center;
}
.pagination a {
display: block;
width: 30px;
height: 30px;
float: left;
margin-left: 3px;
background: url(/images/structure/pagination-button.png);
}
.pagination a.last {
width: 90px;
background: url(/images/structure/pagination-button-last.png);
}
.pagination a.first {
width: 60px;
background: url(/images/structure/pagination-button-first.png);
}
HTML:
<div class='pagination'>
<a class='first' href='#'>First</a>
<a href='#'>1</a>
<a href='#'>2</a>
<a href='#'>3</a>
<a class='last' href='#'>Last</a>
</div>
<!-- end: .pagination -->
Auf die Idee kommen, das, was ich will:
- Der ganze Zweck der float-Eigenschaft ist die position, die ein element auf der linken oder rechten Seite des Containers.
- Gut, ich brauchte, um zu definieren Breite und Höhe für den link-Elemente, die nur auf block-Elemente, aber wenn Sie die links-block, breiteten Sie auf neue Zeile, jeder, das ist, warum ich Sie schwebte.
- Alternative Lösung, wenn Sie nicht wollen / können nicht, verwenden Sie inline-block. stackoverflow.com/questions/1232096/...
- Ich glaube, diese Frage verdient moderator die Aufmerksamkeit als aktuelle Titel und die Antworten sind irreführend. Die Frage ist nicht, über schwimmende Inhalt in der Mitte, aber über das zentrieren von Inhalten. Floating bedeutet, dass die non-floating Geschwister Inhalte sollten füllen Sie die verbleibenden Lücken auf und das ist eindeutig weder angestrebt noch erreicht.
- wenn Sie denken, dass, vorschlagen, ein edit statt der Flagge, die es für die mods. Jeder kann Bearbeiten diese Fragen, so Bearbeiten Sie die Frage und schreiben Sie eine detaillierte Erklärung im edit-Grund. Dies ist etwas, was jeder Benutzer tun kann, es nicht zu tun. Es ist nichts falsch mit der Frage oder der Antworten, die erfordert, dass der moderator eingreifen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Entfernen
float
s, und mitinline-block
beheben Ihre Probleme:(entfernen Sie die Zeilen, beginnend mit
-
und fügen Sie die Zeilen beginnend mit+
.)CSS:
HTML:
inline-block
funktioniert cross-browser, auch auf IE6, solange das element ist ursprünglich ein inline-element.Zitat von quirksmode:
diese oft wirksam ersetzen kann schwimmt:
Aus der W3C-spec:
Seit vielen Jahren nutze ich einen alten trick, den ich gelernt, im blog, tut mir Leid, ich erinnere mich nicht den Namen zu geben, ihm Kredite.
Sowieso zu center floating elements sollte das funktionieren:
Benötigen Sie eine Struktur wie diese:
CSS:
HTML:
der trick ist die Angabe float left, um den Container ändern Sie die Breite abhängig vom Inhalt. Als ist eine Sache der position:relative und left 50% und -50% auf die beiden Behälter.
Die gute Sache ist, dass das cross-browser-und sollte von IE7+.
margin: 0 auto;
macht einen besseren job in diesem Fallfloat: left;
war nicht notwendig, auf.main-container
und.fixer-container
.overflow: hidden;
Zentrierung schwimmt ist einfach. Verwenden Sie einfach den Stil für container:
ändern Sie die Marge für floating-Elemente:
oder
und lasse den rest wie er ist.
Es ist für mich die beste Lösung, um Dinge anzuzeigen, wie Menüs oder Paginierung.
Stärken:
cross-browser für alle Elemente (Blöcke, Listen-Elemente etc.)
Einfachheit
Schwächen:
@arnaud576875 Mit inline-block Elemente gut funktionieren wird (cross-browser), in diesem Fall die Paginierung enthält nur Anker (inline), keine Liste-Elemente oder divs:
Stärken:
Weknesses:
Lücken zwischen inline-block-Elemente - es funktioniert auf die gleiche Weise wie ein Leerzeichen zwischen den Wörtern. Es kann dazu führen, dass einige Probleme der Berechnung der Breite des container-und styling-Margen. Lücken, die Breite nicht konstant ist, aber es ist browser-spezifisch (4-5px).
Um loszuwerden, diese Lücken möchte ich hinzufügen arnaud576875 code (nicht vollständig getestet):
.Paginierung{ word-spacing: -1em; }
.pagination a{ word-spacing: .1em; }
es funktioniert nicht in IE6/7 auf block und list-Elemente Elemente
display: table
trick meinen Tag gerettet, danke!!!Legen Sie Ihre container
width
impx
und hinzufügen:Referenz.
Mit Flex
CSS:
HTML:
Ich denke, der beste Weg ist, mit
margin
stattdisplay
.I. e.:
Überprüfen Sie das Ergebnis und code:
http://cssdeck.com/labs/d9d6ydif
IE7 nicht weiß
inline-block
.Sie müssen hinzufügen:
Fügen Sie diese, um Ihr styling
*Wenn Ihr container die Breite von 50px 25px setzen, wenn es 10em setzen 5em.
Können Sie auch dies tun, indem Sie ändern
.pagination
durch Austausch "text-align: center" mit zwei bis drei Zeilen css für die Links, verwandeln und, je nach Umständen, Lage.CSS:
HTML:
Schritt 1
erstellen Sie zwei oder mehrere div ' s, die Sie möchten, und geben Sie eine bestimmte Breite wie 100px für jeden treiben dann nach Links oder rechts
Schritt 2
dann warp diese beiden DIVS in einem weiteren div-Element und geben Sie die Breite von 200px. dieser div anwenden, Marge auto.
boom es funktioniert ziemlich gut. überprüfen Sie den obigen Beispiel.
Nur hinzufügen
in mein css-Menü von
habe die Zentrierung trick zu