Son zamanlarda bir web tasarımı için, sabit bir daire sorununda ortalanmış ve bilinmeyen metin miktarını çözmek zorunda kaldım ve burada daire / metin kombinasyonlarına bakan diğer insanlar için çözümü paylaşacağımı düşündüm.
Asıl mesele metinti, genellikle dairenin sınırlarını kıracaktı. Bunu çözmek için 4 div kullandım. Dairenin maksimum (sabit) sınırlarını belirten bir dikdörtgen konteyner. İçinde genişliği ve yüksekliği% 100 olarak ayarlanmış daireyi çizen div olurdu, böylece ebeveynin boyutunu değiştirmek gerçek dairenin boyutunu değiştirir. Bunun içinde,% 'leri kullanarak herhangi bir metnin daireden çıkmasını önleyen bir metin sınır alanı oluşturacak olan başka bir dikdörtgen div olurdu (çoğunlukla) Son olarak metin ve dikey merkezleme için gerçek div.
Kod olarak daha mantıklı:
/* Main Container - this controls the size of the circle */
.circle_container
{
width : 128px;
height : 128px;
margin : 0;
padding : 0;
/* border : 1px solid red; */
}
/* Circle Main draws the actual circle */
.circle_main
{
width : 100%;
height : 100%;
border-radius : 50%;
border : 2px solid black; /* can alter thickness and colour of circle on this line */
margin : 0;
padding : 0;
}
/* Circle Text Container - constrains text area to within the circle */
.circle_text_container
{
/* area constraints */
width : 70%;
height : 70%;
max-width : 70%;
max-height : 70%;
margin : 0;
padding : 0;
/* some position nudging to center the text area */
position : relative;
left : 15%;
top : 15%;
/* preserve 3d prevents blurring sometimes caused by the text centering in the next class */
transform-style : preserve-3d;
/*border : 1px solid green;*/
}
/* Circle Text - the appearance of the text within the circle plus vertical centering */
.circle_text
{
/* change font/size/etc here */
font: 11px "Tahoma", Arial, Serif;
text-align : center;
/* vertical centering technique */
position : relative;
top : 50%;
transform : translateY(-50%);
}
<div class="circle_container">
<div class="circle_main">
<div class="circle_text_container">
<div class = "circle_text">
Here is an example of some text in my circle.
</div>
</div>
</div>
</div>
Nasıl kısıtlandığını görmek için konteyner div'lerindeki kenarlık renklerini açabilirsiniz.
Dikkat edilmesi gerekenler: Çok fazla metin koyarsanız veya çok uzun sözcükler / kesintisiz metinler kullanırsanız dairenin sınırlarını yine de kırabilirsiniz. Tamamen bilinmeyen metinler (kullanıcı girişi gibi) için hala iyi bir seçim değildir, ancak depolamanız gereken en büyük metnin ne olduğunu ve daire boyutunuzu ve yazı tipi boyutlarınızı buna göre ayarladığınız zaman en iyi sonucu verir. Metin konteyneri div'ı herhangi bir taşmayı gizleyecek şekilde ayarlayabilirsiniz, ancak bu sadece "kırık" görünebilir ve tasarımınızda gerçekte maksimum boyutu hesaplamanın yerini tutmaz.
Umarım bu birisi için yararlıdır! HTML / CSS benim ana disiplinim değil, bu yüzden geliştirilebileceğinden eminim!