Saya ingin mewarnai latar belakang svg text
seperti background-color
di css
Saya hanya dapat menemukan dokumentasi fill
, yang mewarnai teks itu sendiri
Apakah itu mungkin?
css
svg
background-color
Nick Ginanto
sumber
sumber
Jawaban:
Tidak, ini tidak mungkin, elemen SVG tidak memiliki
background-...
atribut presentasi .Untuk mensimulasikan efek ini Anda bisa menggambar persegi panjang di belakang atribut teks dengan
fill="green"
atau sesuatu yang serupa (filter). Menggunakan JavaScript, Anda dapat melakukan hal berikut:sumber
Anda bisa menggunakan filter untuk menghasilkan latar belakang.
sumber
operator="xor"
kefeComposite
untuk mencegah teks buram. @RobertLongson @teran @paulmelnikow @billSolusi yang saya gunakan adalah:
Item teks duplikat sedang ditempatkan, dengan atribut stroke dan stroke-width. Stroke harus sesuai dengan warna latar belakang, dan lebar guratan harus cukup besar untuk membuat "percikan" untuk menulis teks yang sebenarnya.
Sedikit peretasan dan ada potensi masalah, tetapi berhasil untuk saya!
sumber
Tidak, Anda tidak dapat menambahkan warna latar belakang ke elemen SVG. Anda dapat melakukannya secara terprogram dengan d3 .
sumber
Alih-alih menggunakan
<text>
tag,<foreignObject>
tag dapat digunakan, yang memungkinkan konten XHTML dengan CSS.sumber
Jawaban oleh Robert Longson (@RobertLongson) dengan modifikasi:
dan kami tidak memiliki bluring dan tidak ada "getBBox" yang berat :) Padding disediakan oleh spasi putih dalam elemen teks dengan filter. Ini berhasil untuk saya
sumber
ini adalah peretasan favorit saya (tidak yakin itu akan berhasil). Ini merujuk pada elemen yang belum ditampilkan, dan berfungsi dengan baik
sumber
Anda dapat menggabungkan filter dengan teks.
sumber
Bagi mereka yang bertanya-tanya bagaimana cara menerapkan padding ke elemen teks ketika memiliki latar belakang seperti pada jawaban Robert , lakukan hal berikut:
Dalam contoh di atas, posisi x dan y filter dapat digunakan sebagaimana
transform: translate(-10%, -10%)
mestinya, dan nilai lebar dan tinggi dapat dibaca sebagai120%
dan120%
. Jadi kami membuat latar belakang 20% lebih besar, dan mengimbangi -10%, jadi latar belakang sekarang 10% lebih besar di setiap sisi teks.sumber
Jawaban sebelumnya mengandalkan penggandaan teks dan kekurangan spasi kosong.
Dengan menggunakan
atop
dan
saya bisa mendapatkan hasil yang saya inginkan.Contoh ini juga menyertakan panah, kasus penggunaan umum untuk label teks SVG:
sumber
Anda dapat menambahkan gaya ke teks Anda:
Putih, dalam contoh ini. Tidak bekerja di IE :)
sumber