Yükseklik / genişlik> 0 piksel olan 180 piksel kenarlık, 180 piksel yarıçaplı bir daire haline nasıl gelir?
Bunu iki soruya dönüştürelim:
Nerede width
ve height
gerçekten başvurmak?
Tipik bir kutunun ( kaynak ) alanlarına bir göz atalım :
height
Ve width
doğru kutu modeli (hayır tuhaflıklar modu, hiçbir eski Internet Explorer) kullanılıyorsa, yalnızca içeriğine uygulanır.
Nerede border-radius
geçerlidir?
border-radius
Çerçeve-kenarında uygulanır. Dolgu veya kenarlık yoksa, içerik kenarınızı doğrudan etkiler, bu da üçüncü örneğinizle sonuçlanır.
Bu sınır yarıçapımız / dairemiz için ne anlama geliyor?
Bu, CSS kurallarınızın yalnızca kenarlıktan oluşan bir kutu ile sonuçlandığı anlamına gelir. Kurallarınız, bu kenarlığın her iki tarafta maksimum 180 piksel genişliğinde olması gerektiğini, diğer yandan aynı boyutta maksimum yarıçapa sahip olması gerektiğini belirtiyor:
Resimde, öğenizin gerçek içeriği (küçük siyah nokta) gerçekten mevcut değil. Eğer hiç uygulamadıysanız border-radius
yeşil kutu ile sonuçlanırsınız. border-radius
Sana mavi daireyi verir.
Sadece border-radius
iki köşeye uygularsanız anlaşılması kolaylaşır :
#silly-circle{
width:0; height:0;
border: 180px solid red;
border-top-left-radius: 180px;
border-top-right-radius: 180px;
}
Örneğinizde tüm köşeler / kenarlıklar için boyut ve yarıçap eşit olduğundan bir daire elde edersiniz.
Diğer kaynaklar
Referanslar
Gösteriler
- Lütfen aşağıdaki demoyu açın, bu
border-radius
da kenarlığın nasıl etkilendiğini gösterir (içerik kutusu olarak iç mavi kutuyu, dolgu sınırı olarak iç siyah sınırı, dolgu olarak boş alanı ve dev kırmızı kenarlığı, sınırı). İç kutu ile kırmızı kenarlık arasındaki kesişimler genellikle içerik kenarını etkiler.
var all = $('#TopLeft, #TopRight, #BottomRight, #BottomLeft');
all.on('change keyup', function() {
$('#box').css('border' + this.id + 'Radius', (this.value || 0) + "%");
$('#' + this.id + 'Text').val(this.value + "%");
});
$('#total').on('change keyup', function() {
$('#box').css('borderRadius', (this.value || 0) + "%");
$('#' + this.id + 'Text').val(this.value + "%");
all.val(this.value);
all.each(function(){$('#' + this.id + 'Text').val(this.value + "%");})
});
#box {
margin:auto;
width: 32px;
height: 32px;
border: 100px solid red;
padding: 32px;
transition: border-radius 1s ease;
-moz-transition: border-radius 1s ease;
-webkit-transition: border-radius 1s ease;
-o-transition: border-radius 1s ease;
-ms-transition: border-radius 1s ease;
}
#chooser{margin:auto;}
#innerBox {
width: 100%;
height: 100%;
border: 1px solid blue;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="box">
<div id="innerBox"></div>
</div>
<table id="chooser">
<tr>
<td><label for="total">Total</label></td>
<td><input id="total" value="0" type="range" min="0" max="100" step="1" /></td>
<td><input readonly id="totalText" value="0" type="text" /></td>
</tr>
<tr>
<td><label for="TopLeft">Top-Left</label></td>
<td><input id="TopLeft" value="0" type="range" min="0" max="100" step="1" /></td>
<td><input readonly id="TopLeftText" value="0" type="text" /></td>
</tr>
<tr>
<td><label for="TopRight">Top right</label></td>
<td><input id="TopRight" value="0" type="range" min="0" max="100" step="1" /></td>
<td><input readonly id="TopRightText" value="0" type="text" /></td>
</tr>
<tr>
<td><label for="BottomRight">Bottom right</label></td>
<td><input id="BottomRight" value="0" type="range" min="0" max="100" step="1" /></td>
<td><input readonly id="BottomRightText" value="0" type="text" /></td>
</tr>
<tr>
<td><label for="BottomLeft">Bottom left</label></td>
<td><input id="BottomLeft" value="0" type="range" min="0" max="100" step="1" /></td>
<td><input readonly id="BottomLeftText" value="0" type="text" /></td>
</tr>
<caption><code>border-radius</code> values. All values are in percent.</caption>
</table>
<p>This demo uses a box with a <code>width/height</code> of 32px, a <code>padding</code> of 32px, and a <code>border</code> of 100px.</p>