Vertikal und horizontal zentriert Text im Kreis in CSS (wie iPhone Benachrichtigungsabzeichen)
Ich bin auf der Suche nach einem Weg, um ein cross-browser-iphone-like-Button in CSS3. Ich würde natürlich gerne verwenden ein div, aber alternative Lösungen wäre in Ordnung. Der wichtige Faktor ist, dass es sein muss horizontal und vertikal zentriert in allen Browsern.
Eine interessante design-Problem, über diese Meldungen ist, dass Sie nicht haben eine bestimmte Breite (die Höhe ist fest) - Sie sollten in der Lage sein zu handhaben [im ascii-Zeichnung] (1) und (1000), wo (1000) ist nicht eine perfekt Runde Kreis, sondern sieht eher aus wie eine Kapsel.
BEARBEITEN: Zusätzliche Einschränkungen (von Steven):
- Kein JavaScript
- Keine mangeln der display-Eigenschaft table-cell, die ist von zweifelhaftem support-status
InformationsquelleAutor der Frage Matt | 2011-01-26
Du musst angemeldet sein, um einen Kommentar abzugeben.
Horizontale Zentrierung ist einfach:
text-align: center;
. Vertikales zentrieren von text innerhalb eines Elements kann getan werden durch einstellen vonline-height
gleich der Behälterhöhe, das hat aber feine Unterschiede zwischen den Browsern. Auf kleine Elemente, wie eine Benachrichtigung Abzeichen, diese sind stärker ausgeprägt.Besser ist, um
line-height
gleichfont-size
(oder etwas kleiner) und nutzen Polsterung. Sie müssen passen Sie Ihre Höhe zu empfangen.Hier ist ein CSS-only, single
<div>
Lösung, sieht ziemlich iPhone-like. Sie erweitern mit Inhalt.Demo: http://jsfiddle.net/ThinkingStiff/mLW47/
Ausgabe:
CSS:
HTML:
InformationsquelleAutor der Antwort ThinkingStiff
Wenn Sie content mit Höhe unbekannt, aber Sie wissen, die Höhe der container. Die folgende Lösung funktioniert sehr gut.
HTML
CSS
BEISPIEL
http://jsfiddle.net/thenewconfection/eYtVN/
Einer gotcha für newby ' s zu display: inline-block; [span] und [p] haben keine html-Leerzeichen, so dass der span dann nicht nehmen jeden Raum. Auch ich habe in den CSS-hack für display inline-block für IE. Hoffe, das jemand hilft!
InformationsquelleAutor der Antwort Richard Herries
Interessante Frage! Zwar gibt es viele Führungen horizontal und vertikal zentrieren einer div, eine herrische Behandlung des Themas, wo das zentrierte div ein unpredetermined Breite ist Auffällig abwesend.
Let ' s gelten einige grundlegende Einschränkungen:
table-cell
, die zweifelhaften status der UnterstützungGegeben, mein Einstieg in den Kampf ist die Nutzung der
inline-block
Anzeige-Eigenschaft auf horizontal zentrieren die Spanne, innerhalb eines absolut positionierten div-und die vorbestimmte Höhe, vertikal zentriert innerhalb des übergeordneten Containers in der traditionellentop: 50%; margin-top: -123px
Mode.Markup:
div > div > span
CSS:
Quelle: http://jsfiddle.net/38EFb/
Einer alternativen Lösung, die nicht erforderlich ist, überflüssige Markierungen aber sehr wahrscheinlich produziert mehr Probleme als es löst, ist die Verwendung der line-height Eigenschaft. Tun Sie das nicht. Aber es ist hier als ein akademischer Hinweis: http://jsfiddle.net/gucwW/
InformationsquelleAutor der Antwort Steven Xu
Hier ist ein Beispiel von flach-Abzeichen, die gut spielen mit zurb foundation css-framework
Hinweis: Sie müssen möglicherweise passen Sie die Höhe für verschiedene Schriftarten.
http://jsfiddle.net/jamesharrington/xqr5nx1o/
Magic sauce!
InformationsquelleAutor der Antwort James Harrington
Hervorragende alternative:
Demo: http://www.codebasehero.com/files/notification-menu/demo/index.html
Download & Doc: http://www.codebasehero.com/2011/07/jquery-notification-menu/
InformationsquelleAutor der Antwort Sliq
Sorry, um diese seine eigene Antwort, aber ich bin ein newbie und kann nicht herausfinden, wie der Kommentar an der richtigen Stelle unter die Antwort, die ich bin, zu kommentieren. Anyways: Richard Herries ' s Antwort hat einen Fehler.
Ich glaube nicht, dass es einen außergewöhnlichen Anwendungsfall zu wollen-center ein großes "x" in ein div zu dienen, als eine enge Kiste. Aber wenn die Schriftgröße Ansätze der div Abmessungen nicht vertikal zentrieren in Safari, und sehr sichtbar, hat mehr Platz an der Spitze als an der Unterseite.
Demonstration: http://jsfiddle.net/5WQXF/
InformationsquelleAutor der Antwort Raymond Uppier-Püpschrute