Saya ingin membuat lingkaran bertitik dengan CSS dan membuatnya dengan proses berikut.
Meskipun lingkaran putus-putus dapat ditampilkan oleh proses ini, Kesenjangan antara ujung dan awal garis putus-putus menjadi sempit, dan celah itu tidak seragam.
.c {
width: 500px;
height: 500px;
border-width: 15px;
border-style: dashed;
border-radius: 600px;
}
<div class="c"></div>
Apakah ada cara untuk membuat celah seragam? dapatkah kita juga mengontrol jarak antara garis putus-putus?
Jika itu tidak mungkin dengan CSS saja, kami sedang mempertimbangkan untuk menggunakan JavaScript atau yang serupa.
javascript
html
css
Temani Afif
sumber
sumber
Jawaban:
Berikut ini adalah versi optimal dari
conic-gradient()
solusi di mana Anda dapat dengan mudah mengontrol jumlah tanda hubung dan jarak di antaranyaTampilkan cuplikan kode
Kami memiliki transparansi penuh
mask
Tampilkan cuplikan kode
Untuk membuat hal-hal lucu kita bahkan dapat mempertimbangkan warna yang lebih kompleks pada garis:
Tampilkan cuplikan kode
Anda tentu ingin beberapa konten di dalamnya jadi lebih baik menerapkan mask / latar belakang pada elemen semu untuk menghindari menutupi konten:
Tampilkan cuplikan kode
Pertanyaan terkait untuk mendapatkan lebih banyak gagasan CSS untuk mencapai hasil yang serupa: Diagram Pie Hanya CSS - Bagaimana cara menambahkan spasi / padding antar irisan? . Anda akan menemukan lebih banyak cara yang didukung daripada
conic-gradient()
(sebenarnya itu tidak bekerja di Firefox) tetapi Anda diharuskan untuk menggunakan banyak kode tidak seperti solusi di atas di mana hanya satu elemen yang diperlukan.Menggunakan SVG Anda juga perlu perhitungan untuk memastikan Anda memiliki spasi yang seragam:
Dengan variabel CSS kita dapat membuatnya lebih mudah tetapi tidak didukung di semua browser (sebenarnya itu tidak berfungsi di Firefox)
Tampilkan cuplikan kode
Kami juga dapat dengan mudah menggunakan SVG sebagai latar belakang untuk membuat segalanya lebih fleksibel:
Tampilkan cuplikan kode
Ketika digunakan sebagai latar belakang, Anda perlu mengatur nilai secara manual sehingga Anda akan membutuhkan latar belakang yang berbeda setiap kali. Kami hanya bisa membuat warna mudah diubah dengan menggunakan SVG sebagai mask;
Tampilkan cuplikan kode
sumber
conic-gradient()
ataurepeating-conic-gradient()
. Jadi, ini mungkin pendekatan yang layak di masa depan, tetapi itu bukan sesuatu yang dapat digunakan saat ini, jika fungsionalitas lintas-browser diinginkan.Gunakan
stroke-dasharray
dengan SVG.Atau Anda dapat menggunakan
radial-gradient()
,repeating-conic-gradient()
fungsi tanpa Firefox.sumber
conic-gradient
menjadi jaggy karena beberapa alasan ...