Köşeleri kaydırıcılarla ayarla, dört köşeyi ayrı ayrı ya da tek seferde yuvarlat, eliptik köşelere geç ve px ile % arasında anında karşılaştır. Canlı önizleme gerçek kutu ölçüleriyle çalışır, çıktı da her zaman yazılabilecek en kısa doğru biçimde gelir.
px her köşede sabit bir uzunluktur, kutu büyüdükçe değişmez.
border-radius bir kısayoldur ve arkasında dört ayrı özellik durur: border-top-left-radius, border-top-right-radius, border-bottom-right-radius ve border-bottom-left-radius. Kısayola yazdığın değerler de tam bu sırayla, yani sol üst köşeden başlayıp saat yönünde okunur. Buradaki en yaygın yanılgı, değerlerin margin ve padding’teki gibi üst, sağ, alt, sol diye okunduğunu sanmaktır. border-radius kenarları değil köşeleri sayar.
Kaç değer yazdığına göre eksik kalan köşeler karşısındakinden kopyalanır. Tek değer yazarsan dört köşe de aynı olur. İki değer yazarsan birincisi sol üst ile sağ alta, ikincisi sağ üst ile sol alta gider. Üç değer yazarsan sırayla sol üst, sonra sağ üst ile sol alt, sonra sağ alt belirlenir. Dört değer yazdığında ise her köşe tek tek tanımlanmış olur.
| Yazım | Sol üst | Sağ üst | Sağ alt | Sol alt |
|---|---|---|---|---|
| 8px | 8px | 8px | 8px | 8px |
| 8px 24px | 8px | 24px | 8px | 24px |
| 8px 24px 4px | 8px | 24px | 4px | 24px |
| 8px 24px 4px 16px | 8px | 24px | 4px | 16px |
| 40px / 12px | 40px yatay, 12px dikey | 40px yatay, 12px dikey | 40px yatay, 12px dikey | 40px yatay, 12px dikey |
Varsayılan olarak her köşe bir çeyrek dairedir, çünkü yatay ve dikey yarıçap eşittir. Yazıma bir eğik çizgi eklediğinde değerler ikiye ayrılır: çizginin solundakiler yatay yarıçapları, sağındakiler dikey yarıçapları belirler. Böylece her köşe çeyrek daire değil çeyrek elips olur ve toplamda sekiz sayıyı ayrı ayrı kontrol edersin.
Organik, damla görünümlü şekillerin hepsi bu yazımla yapılır. Dört değerli kısa biçim tek başına böyle bir şey üretemez, çünkü her köşeyi simetrik bir yay olmaya zorlar. Eğik çizginin iki tarafı birbirinden bağımsız kısaltılabilir: 50% / 30% 70% geçerli bir yazımdır, solda tek değer dört köşeye, sağda iki değer köşe çiftlerine dağılır.
px sabit bir uzunluktur. 12px’lik bir köşe, kutu ister 100 ister 1000 piksel genişlikte olsun aynı kalır. Tasarım sistemlerinin ve bileşen kütüphanelerinin neredeyse tamamı bu yüzden px kullanır: aynı görsel dil her ölçüde korunur ve bileşen esnerken köşe şekil değiştirmez.
Yüzde ise kutunun kendi ölçüsüne bağlıdır. En çok gözden kaçan nokta şudur: yatay yarıçap kutunun genişliğinin yüzdesi, dikey yarıçap ise yüksekliğinin yüzdesidir. Kutu kare olduğu sürece ikisi aynı sayıyı verir ve köşe daire gibi görünür. Kutu 320x80 olduğunda yüzde 20 yatayda 64 piksel, dikeyde 16 piksel eder ve köşe belirgin biçimde yassılaşır. Aracın önizleme kutusunun genişliğini ve yüksekliğini ayrı ayrı değiştirebilmesinin sebebi tam olarak budur: yüzdeli bir köşeyi yalnızca kare kutuda test edersen sürprizi ancak üretimde görürsün.
Bir düğmeyi ya da etiketi tam hap biçimine sokmak isteyince ilk akla gelen değer yüzde 50 oluyor, ama bu yanlış sonuç verir. Yüzde 50 yatayda genişliğin yarısını, dikeyde yüksekliğin yarısını yarıçap yapar; kutu geniş ve alçaksa ortaya hap değil, iki ucu sivrilmiş bir elips çıkar.
Doğru kalıp, kutudan güvenle büyük bir piksel değeri yazmaktır: 9999px. Tarayıcı yarıçaplar kutuya sığmadığında hepsini aynı oranda küçültür, sonuçta yarıçap kutunun yüksekliğinin tam yarısında durur ve uçlar kusursuz yarım daire olur. 999px ya da 100vmax da aynı işi görür; önemli olan sayının kendisi değil, kutudan büyük olmasıdır.
Bir kenar üzerindeki iki yarıçapın toplamı o kenarın uzunluğunu aşarsa şekil kendi kendini keserdi. Şartname bunu önlemek için net bir kural koyar: tarayıcı her kenar için kenar uzunluğunun o kenardaki iki yarıçapın toplamına oranını hesaplar, bu oranların en küçüğünü bulur ve değer birden küçükse tüm yarıçapları o katsayıyla çarpar.
Kritik ayrıntı, ölçeklemenin tek bir köşeye değil hepsine birden uygulanmasıdır. Yani bir köşeye aşırı büyük bir değer verdiğinde yalnızca o köşe değil, şeklin bütün köşeleri küçülür. 9999px kalıbının her kutu ölçüsünde tutarlı çalışmasının sebebi de bu kuraldır.
border-radius yalnızca elemanın kendi arka planını ve kenarlığını kırpar. İçerideki çocuk elemanlar, mutlak konumlanmış katmanlar ya da bir video köşeden taşmaya devam eder. Bunları da kırpmak istiyorsan kapsayıcıya overflow: hidden vermen gerekir, ama bunun bedeli vardır: aynı kutuda box-shadow dışarı taşamaz, position: sticky çalışmayı bırakabilir ve açılır menüler kapsayıcının içinde kesilir.
Arka planın nereye kadar uzanacağını background-clip belirler. Varsayılan border-box arka planı kenarlığın altına kadar götürür, dolayısıyla yarı saydam bir kenarlık kullanıyorsan arka plan kenarlığın içinden görünür. padding-box bunu keser. Kenarlık kalınlıkları bir köşede eşit değilse tarayıcı iki kalınlık arasında yumuşak bir geçiş çizer, bu yüzden köşedeki eğri beklediğinden farklı durabilir.
İç içe kutularda ise küçük bir hesap gerekir: iç kutunun yarıçapı, dış yarıçaptan iç boşluk kadar küçük olmalıdır. Dış kutu 16px yarıçaplı ve 8px iç boşluğa sahipse içteki kutuya 8px vermek iki eğriyi eş merkezli tutar. İkisine de 16px verirsen iç köşe dış köşeden daha yuvarlak görünür ve aradaki boşluk köşelerde garip biçimde açılır.
iOS simgelerinin ve son yıllarda pek çok arayüzün kullandığı squircle aslında bir süperelipstir. Düz kenardan eğriye geçiş ani değil süreklidir; gözün yumuşak omuz olarak algıladığı şey buradan gelir. border-radius ise her köşeye bir daire ya da elips yayı yerleştirir, dolayısıyla kenarla eğrinin birleştiği noktada eğrilik birden sıçrar. Yan yana koyduğunda fark küçüktür ama gözle seçilir.
Bugüne kadarki çözümler SVG yolu, clip-path ya da maske kullanmak oldu. CSS tarafında ise corner-shape özelliği üzerinde çalışılıyor: corner-shape: superellipse(...) yazıldığında köşenin daire değil süperelips yayı olması hedefleniyor. Tarayıcı desteği daha yeni yayılmaya başladığı için üretimde en pratik yol hâlâ eliptik yarıçaplarla yaklaşık bir sonuç almak.
Köşeleri ayarladıktan sonra aynı kutunun arka planıyla da oynamak istersen CSS gradyan oluşturucu ile ürettiğin gradyanı buradaki önizlemeye taşıyıp iki ayarı birlikte görebilirsin.
Tek kaydırıcıyla dört köşeyi birden ayarla, ya da köşeleri ayrı ayrı ayarla seçeneğini açıp sol üstten sol alta her köşeye kendi değerini ver. px ile yüzde arasında geçiş yaptığında değerler yeni birimin sınırına göre kırpılır.
Sekiz değerli yazımı açtığında her köşe yatay ve dikey yarıçapını ayrı alır, yani çeyrek daire yerine çeyrek elips olur. Damla görünümlü organik şekiller ancak bu yazımla çıkar.
Genişliği ve yüksekliği kaydırıcılarla değiştir, dolguyu düz renk, gradyan veya görsel yap. Yüzdeli bir köşenin kare olmayan bir kutuda nasıl yassılaştığını ancak burada görebilirsin.
Yuvarlak kart, hap, daire, squircle, yaprak ve blob ayarları tek tıkla tüm durumu değiştirir. Çıktı her zaman en kısa doğru biçimde yazılır; CSS satırını ya da Tailwind sınıfını kendi düğmesiyle kopyala.
Sol üst köşeden başlayıp saat yönünde: sol üst, sağ üst, sağ alt, sol alt. Eksik bıraktığın köşeler karşısındakinden kopyalanır, yani iki değer yazarsan birincisi sol üst ile sağ alta, ikincisi sağ üst ile sol alta gider. margin ve padding’teki üst, sağ, alt, sol sırasıyla karıştırmamak gerekir; border-radius kenarları değil köşeleri sayar.
border-radius: 50% yazmak yeterli, ama yalnızca kutu kare ise. Genişlik ile yükseklik eşit değilse yüzde 50 sana daire değil elips verir, çünkü yatay yarıçap genişliğe, dikey yarıçap yüksekliğe göre hesaplanır. Önce kutuya aspect-ratio: 1 ya da eşit genişlik ve yükseklik ver, sonra yüzde 50 uygula.
9999px. Yüzde 50 geniş ve alçak bir düğmede iki ucu sivrilmiş bir elips üretir. Çok büyük bir piksel değeri yazdığındaysa tarayıcı, yarıçaplar kutuya sığmadığı için hepsini aynı oranda küçültür ve yarıçap tam olarak yüksekliğin yarısında durur. Sonuç, düğme ne kadar uzarsa uzasın kusursuz yarım daire uçlardır.
Eğik çizgi yazımı ikiye böler: solundaki değerler köşelerin yatay yarıçaplarını, sağındakiler dikey yarıçaplarını belirler. Her iki taraf da bir ile dört değer alabildiği için toplamda sekiz sayıyı kontrol edebilirsin. Köşeler böylece çeyrek daire değil çeyrek elips olur; damla görünümlü organik şekiller yalnızca bu yazımla yapılabilir.
border-radius yalnızca elemanın kendi arka planını ve kenarlığını kırpar, çocuk elemanlarını değil. Görseli de kırpmak için ya görselin kendisine aynı yarıçapı ver ya da kapsayıcıya overflow: hidden ekle. İkincisini seçerken dikkat et: aynı kutuda box-shadow dışarı taşayamaz ve position: sticky çalışmayabilir.
Araç, değeri rounded-[...] biçiminde bir Tailwind arbitrary value satırı olarak da verir ve boşlukları alt çizgiye çevirir. Aynı köşe değerini birden çok bileşende kullanacaksan bunu tailwind.config dosyasındaki borderRadius bölümüne adlandırarak eklemek hem daha okunur hem de sonradan değiştirmesi daha kolay olur.
Klasik border-radius ile hayır. Squircle bir süperelipstir ve kenardan eğriye geçişi süreklidir; border-radius ise köşeye daire veya elips yayı koyduğu için geçişte eğrilik sıçrar. Eliptik yarıçaplarla gözle ayırt edilmesi zor bir yaklaşım elde edebilirsin. Tam sonuç için bugün SVG yolu, clip-path veya maske gerekiyor; CSS tarafında corner-shape ve superellipse() üzerinde çalışılıyor ama tarayıcı desteği henüz yeni.