El border-radius:50%
Hack, den Sie verwenden, geht von der Annahme aus, dass die <div>
quadratisch ist, bevor die abgerundeten Ecken angewendet werden, da sonst ein Oval statt eines Kreises entsteht, genau wie Sie festgestellt haben.
Wenn Sie also wollen, dass der Kreis kreisförmig bleibt, während sich der Inhalt ausdehnt, müssen Sie die Höhe dynamisch an die Breite anpassen. Um dies zu erreichen, müssen Sie wahrscheinlich Javascript verwenden.
Bitte beachten Sie auch, dass border-radius
wird von älteren IE-Versionen nicht unterstützt, so dass Benutzer von IE6, IE7 oder IE8 Ihren Kreis nicht sehen werden. (Allerdings gibt es dafür einen Hack namens CSS3Pie )
Natürlich ist die Anpassung der height
hat den Nebeneffekt, dass das Element vertikal mehr Platz einnimmt. Das ist vielleicht nicht das, was Sie wollen. Vielleicht möchten Sie, dass der Kreis die gleiche Größe hat, unabhängig davon, welchen Inhalt er hat. In diesem Fall sollten Sie die Höhe und Breite des Kreises festlegen und dem Inhalt position:absolute;
um zu verhindern, dass es die Größe seines Elternteils beeinflusst.
Eine Alternative zur Verwendung der border-radius
Hack, um einen Kreis zu erzeugen, wäre die Verwendung von SVG. SVG ist ein Vektorgrafikformat, das in den meisten Browsern eingebettet ist.
Auch hier ist die bemerkenswerte Ausnahme der IE8 und früher, aber IE unterstützt ein alternatives Format namens VML. Es gibt verschiedene Skripte, die zwischen SVG und VML konvertieren können, so dass Sie eine browserübergreifende Lösung mit SVG plus Javascript erstellen können.
Wenn wir akzeptieren, dass Javascript Teil der Lösung ist, könnten Sie einfach eine Javascript-Bibliothek verwenden, um es in erster Linie zu zeichnen. Mein Vorschlag hierfür wäre Raphael das je nach Browser SVG- oder VML-Grafiken erzeugt.
Ich hoffe, das hilft.