Используемый вами хак border-radius:50%
предполагает, что <div>
является квадратом до применения закругленных углов, в противном случае он получит овал, а не круг, как вы и заметили. 1003 *
Поэтому, если вы хотите, чтобы круг оставался круглым при расширении содержимого, вам необходимо динамически регулировать высоту в соответствии с шириной. Вам, вероятно, понадобится использовать Javascript для достижения этой цели.
Также обратите внимание, что border-radius
не поддерживается в более старых версиях IE, поэтому пользователи с IE6, IE7 или IE8 вообще не увидят ваш круг. (хотя есть хак для него под названием CSS3Pie )
Конечно, настройка height
будет иметь побочный эффект, заставляя элемент занимать больше места по вертикали. Это может быть не то, что вы хотите; Вы можете хотеть, чтобы круг был одинакового размера независимо от того, что в нем содержится? В этом случае вы должны зафиксировать высоту и ширину круга и задать содержимое position:absolute;
, чтобы оно не влияло на размер его родителя.
Альтернативой использованию border-radius
хака для создания круга может быть использование SVG. SVG - это формат векторной графики, который встроен в большинство браузеров.
Опять же, заметным исключением является IE8 и более ранние версии, но IE поддерживает альтернативный формат, называемый VML. Существуют различные сценарии, которые могут конвертировать между SVG и VML, поэтому вы можете создать кросс-браузерное решение с SVG и Javascript.
Если мы собираемся принять Javascript как часть решения, вы можете просто использовать библиотеку javascript, чтобы нарисовать его в первую очередь. Мое предложение для этого было бы Raphael , который генерирует SVG или VML графику в соответствии с браузером, в котором он запущен.
Надеюсь, это поможет.