Хакът 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, за да го начертаете на първо място. Моето предложение за това би било Raphael, който генерира SVG или VML графики в зависимост от браузъра, който изпълнява.
Надявам се това да помогне.
person
Spudley
schedule
08.07.2011