使用border-radius:50%
しているハックは、丸みを帯びた角が適用される前にが正方形であると想定します。<div>
そうでない場合、あなたが指摘したように、円ではなく楕円形になります。
したがって、コンテンツが拡大しても円を円形のままにしておきたい場合は、幅に合わせて高さを動的に調整する必要があります。これを実現するには、おそらくJavascriptを使用する必要があります。
border-radius
また、古いバージョンのIEではサポートされていないため、IE6、IE7、またはIE8を使用しているユーザーにはサークルがまったく表示されないことに注意してください。( CSS3Pieと呼ばれるハックがありますが)
もちろん、を調整するheight
と、要素が垂直方向により多くのスペースを占めるようになるという副作用があります。これはあなたが望むものではないかもしれません。内容に関係なく、円を同じサイズにしたい場合がありますか?この場合、円の高さと幅を固定し、position:absolute;
親のサイズに影響を与えないようにコンテンツを指定する必要があります。
border-radius
ハックを使用して円を作成する代わりに、 SVGを使用することもできます。SVGは、ほとんどのブラウザに組み込まれているベクターグラフィック形式です。
繰り返しになりますが、注目すべき例外はIE8以前ですが、IEはVMLと呼ばれる代替形式をサポートしています。SVGとVMLの間で変換できるさまざまなスクリプトが存在するため、SVGとJavascriptを使用してクロスブラウザーソリューションを作成できます。
Javascriptがソリューションの一部であることを受け入れる場合は、最初にjavascriptライブラリを使用してそれを描画することができます。これについての私の提案は、実行しているブラウザに応じてSVGまたはVMLグラフィックスを生成するRaphaelです。
お役に立てば幸いです。