Ini adalah CSS:
div {
width: 0;
height: 0;
border: 180px solid red;
border-radius: 180px;
}
Bagaimana cara menghasilkan lingkaran di bawah ini?
Misalkan, jika lebar persegi panjang adalah 180 piksel dan tinggi adalah 180 piksel maka akan muncul seperti ini:
Setelah menerapkan batas-radius 30 piksel akan muncul seperti ini:
Persegi panjang menjadi lebih kecil, yaitu hampir akan menghilang jika ukuran jari-jari meningkat.
Jadi, bagaimana perbatasan dengan 180 piksel height/width-> 0px
menjadi lingkaran dengan jari-jari 180 piksel?
html
css
css-shapes
Navin Rauniyar
sumber
sumber
circle
dengan perbatasan ??? kita dapat dengan mudah membuatcircle
denganwidth
danheight
jadi mengapa kita lakukan denganborder
Jawaban:
Mari kita rumuskan itu menjadi dua pertanyaan:
Di mana
width
danheight
benar - benar berlaku?Mari kita lihat area-area dari kotak yang khas ( sumber ):
The
height
danwidth
berlaku hanya pada konten, jika model kotak yang benar sedang digunakan (tidak ada quirks mode, tidak ada Internet Explorer tua).Di mana
border-radius
berlaku?Ini
border-radius
berlaku di tepi perbatasan. Jika tidak ada bantalan atau pembatas, itu akan secara langsung mempengaruhi tepi konten Anda, yang menghasilkan contoh ketiga Anda.Apa artinya ini untuk radius-lingkaran / lingkaran kita?
Ini berarti bahwa aturan CSS Anda menghasilkan kotak yang hanya terdiri dari perbatasan. Aturan Anda menyatakan bahwa batas ini harus memiliki lebar maksimum 180 piksel di setiap sisi, sementara di sisi lain batas tersebut harus memiliki jari-jari maksimum dengan ukuran yang sama:
Dalam gambar, konten aktual elemen Anda (titik hitam kecil) benar-benar tidak ada. Jika Anda tidak menerapkannya,
border-radius
Anda akan berakhir dengan kotak hijau. Theborder-radius
memberi Anda lingkaran biru.Semakin mudah untuk dipahami jika Anda menerapkan
border-radius
hanya ke dua sudut :Karena dalam contoh Anda ukuran dan jari-jari untuk semua sudut / batas sama dengan Anda mendapatkan lingkaran.
Sumber lebih lanjut
Referensi
Demonstrasi
border-radius
pengaruhnya terhadap perbatasan (anggap kotak biru batin sebagai kotak isi, perbatasan hitam dalam sebagai perbatasan padding, ruang kosong sebagai padding dan perbatasan merah raksasa sebagai, yah, berbatasan). Persimpangan antara kotak dalam dan batas merah biasanya akan mempengaruhi tepi konten.Tampilkan cuplikan kode
sumber
border-radius
(perubahan apa yang diharapkan dalam penulisan ulang css3- kotak?).circle
dengan perbatasan ??? kita dapat dengan mudah membuatcircle
denganwidth
danheight
jadi mengapa kita lakukan denganborder
height/width-> 0px
menjadi lingkaran dengan jari-jari 180px?" . Saya hanya menjawab pertanyaan itu. Ada cara lain untuk membuat lingkaran, tetapi OP hanya tertarik dengan cara kerja metode khusus ini.overflow
keluarga properti) sekarang tinggal di modulnya sendiri, css-overflow-3, tapi itu belum tercermin dalam UGD. Anda akan melihat banyak masalah di ED, tetapi saya membayangkan itu bukan daftar lengkap: dev.w3.org/csswg/css3-boxDemo
Mari kita periksa pertanyaannya dengan cara lain dengan demonstrasi gambar ini:
Mari kita lihat dulu bagaimana radius perbatasan dihasilkan?
Untuk menghasilkan radius diperlukan dua sisi perbatasan. Jika Anda mengatur radius batas menjadi 50 piksel maka akan butuh 25 piksel dari satu sisi dan 25 piksel dari sisi lain.
Dan mengambil 25 piksel dari setiap sisi yang akan dihasilkannya seperti ini:
Sekarang lihat berapa banyak yang bisa diperlukan untuk menggunakan persegi di satu sudut?
Ini dapat memakan waktu hingga 180 piksel dari atas dan 180 piksel dari kanan. Maka akan menghasilkan seperti ini:
Dan lihat ini bagaimana hasilnya jika kita menetapkan nilai radius yang tidak sama?
Misalkan, jika Anda menerapkan radius perbatasan hanya ke dua sudut secara tidak merata:
sudut kanan atas hingga 180 piksel
sudut kanan bawah hingga 100 piksel
Maka akan butuh
kanan atas: 90 piksel dari atas dan 90 piksel dari kanan
kanan bawah: 50 piksel dari kanan dan 50 piksel dari bawah
Maka akan menghasilkan seperti ini
Seberapa jauh batas maksimum yang bisa diambil persegi untuk diterapkan di semua sisi? Dan lihat bagaimana cara menghasilkan lingkaran?
Ini dapat memakan waktu hingga setengah dari ukuran batas, yaitu 180 piksel / 2 = 90 piksel. Maka akan menghasilkan lingkaran seperti ini
Mengapa hanya butuh setengah dari lapangan untuk diterapkan di semua sisi?
Karena semua sudut harus menetapkan nilai radius mereka secara merata.
Mengambil bagian yang sama dari perbatasannya, itu menghasilkan lingkaran.
sumber
Perbatasan adalah kotak luar dari konten apa pun dan jika Anda menerapkan radius di atasnya, itu hanya akan menghasilkan tepi melingkar.
sumber
Saya pikir itu awalnya membuat persegi panjang dengan
height and width = 180px
dan kemudian membuat kurva dengan jari-jari yang diberikan seperti30px
dengan setiap sudut. Jadi setborder
dengan diberikanradius
.sumber
Keduanya
.a
dan.b
akan memberikan hasil yang identik.Q. Mengapa saya menggunakan
width: 360px; height: 360px;
?A.
border: 180px solid red;
dalam.a
karya-karya sepertiborder-width: 180px 180px 180px 180px; /* Top Right Bottom Left */
.Semoga biola ini membantu Anda memahami konsepnya.
sumber