Border-radius dalam persentase (%) dan piksel (px) atau em
124
Jika saya menggunakan piksel atau nilai em untuk radius-batas, radius tepi selalu berupa busur lingkaran atau bentuk pil bahkan jika nilainya lebih besar dari sisi terbesar elemen.
Saat saya menggunakan persentase , jari-jari tepi berbentuk elips dan dimulai di tengah setiap sisi elemen yang menghasilkan bentuk oval atau elips :
Pertama, Anda perlu memahami bahwa properti border-radius memiliki 2 nilai. Nilai-nilai ini adalah jari-jari pada sumbu X / Y dari seperempat elips yang menentukan bentuk sudut.
Jika hanya satu dari nilai yang ditetapkan maka nilai kedua sama dengan yang pertama. Begitu border-radius: xpula dengan border-radius:x/x;.
Persentase: Mengacu pada dimensi yang sesuai dari kotak perbatasan.
Jadi border-radius:50%;tentukan raddi elips dengan cara ini:
jari-jari pada sumbu X adalah 50% dari lebar kontainer
jari-jari pada sumbu Y adalah 50% dari tinggi kontainer
Pixel dan unit lainnya
Menggunakan satu nilai selain persentase untuk radius perbatasan (em, in, viewport related units, cm ...) akan selalu menghasilkan elips dengan jari-jari X / Y yang sama. Dengan kata lain, lingkaran .
Saat Anda mengatur border-radius:999px;jari-jari lingkaran harus 999px. Tetapi aturan lain diterapkan ketika kurva tumpang tindih mengurangi jari-jari lingkaran menjadi setengah ukuran sisi terkecil. Jadi dalam contoh Anda, itu sama dengan setengah tinggi elemen: 50px.
Untuk contoh ini (dengan elemen ukuran tetap) Anda bisa mendapatkan hasil yang sama dengan piksel dan persentase. Karena elemennya 230px x 100px, border-radius: 50%;setara dengan border-radius:115px/50px;(50% dari kedua sisi):
div {display: inline-block;background: teal;width:230px;height:100px;padding:40px10px;box-sizing: border-box;font-family: courier;font-size:0.8em;color:#fff;}.percent {border-radius:50%;}.pixels {border-radius:115px/50px;}
Jawaban yang sangat bagus. Sangat disayangkan bahwa nilai radius persentase dihitung secara terpisah untuk lebar dan tinggi. Artinya saya tidak bisa mendapatkan sudut melingkar yang berskala dengan ukuran objek, tanpa mengetahui rasio aspek objek. Bukankah lebih baik jika persentase diterapkan pada dimensi objek yang lebih besar?
Chris Dennis
4
@Ini tidak benar. Seperti yang dikatakan OP, Anda cukup menggunakan border-radius: 999px;. Dengan begitu Anda mendapatkan sudut melingkar dan memastikan bahwa ukurannya sesuai dengan elemen Anda
Gust van de Wal
9
Tapi saya mungkin tidak ingin ujung setengah lingkaran ke kotak. Saya ingin menentukan radius-x sebagai, katakanlah, 10% dari lebar kotak dan radius-y sama dengan radius-x.
Chris Dennis
4
Hei, apakah Anda melakukan posting yang dijawab sendiri seperti ini? Saya akan menghargai membaca itu.
Menyerahkan
3
Tetapi yang benar-benar berfungsi dengan persentase adalah: border-radius: 50%/100%(Diuji di Chrome 60 + 61)
denns
6
Bagilah nilai pertama dengan% yang Anda inginkan .. jadi jika Anda menginginkan radius-batas 50%, tulis:
border-radius:25%/50%;
atau contoh lain:
border-radius:15%/30%;
Anda dapat dengan mudah melakukan matematika di js atau SASS.
Bukankah itu hanya 25% dari lebar dan 50% dari tinggi? Itu tidak sama dengan 50% tinggi di kedua arah X dan Y.
mpen
apa sintaks ini! berhasil! Saya tidak pernah tahu itu ada, itu bagus!
Uri Kutner
Ini hanya matematika bro
CyberJ
1
Saya tidak tahu jenis matematika apa yang Anda lakukan, tapi ini bukan "hanya matematika". Ini adalah singkatan yang didefinisikan secara khusus untuk radius-batas yang tidak ada hubungannya sama sekali dengan pembagian aritmatika. w3.org/TR/css-backgrounds-3/#border-radius
border-radius: 999px;
. Dengan begitu Anda mendapatkan sudut melingkar dan memastikan bahwa ukurannya sesuai dengan elemen Andaborder-radius: 50%/100%
(Diuji di Chrome 60 + 61)Bagilah nilai pertama dengan% yang Anda inginkan .. jadi jika Anda menginginkan radius-batas 50%, tulis:
atau contoh lain:
Anda dapat dengan mudah melakukan matematika di js atau SASS.
sumber