Saya ingin mengatur warna latar belakang default untuk seluruh dokumen SVG, menjadi merah misalnya.
<svg viewBox="0 0 500 600" style="background: red">/* content */</svg>
Solusi di atas berfungsi tetapi properti latar belakang atribut style sayangnya bukan yang standar: http://www.w3.org/TR/SVG/styling.html#SVGStylingProperties , dan itu dihapus saat proses pembersihan dengan SVG Pembersih.
Apakah ada cara lain untuk mendeklarasikan warna latar belakang ini?
Jawaban:
SVG 1.2 Tiny memiliki viewport-fill. Saya tidak yakin seberapa luas penerapan properti ini karena sebagian besar browser menargetkan SVG 1.1 saat ini. Opera mengimplementasikannya FWIW.
Solusi lintas-browser yang lebih saat ini adalah menempel
<rect>
elemen dengan lebar dan tinggi 100% dan mengisi = "merah" sebagai anak pertama dari<svg>
elemen, misalnya:sumber
width="10000%" height="10000%"
dapat memperbaikinya. jika tidak maka tambahkan beberapa nolviewport-fill
Permintaan tarik caniuse yang diabaikan : github.com/Fyrd/caniuse/issues/2186 Mengapa mengapa mereka membiarkan SVG mati.Menemukan ini berfungsi di Safari. SVG hanya warna dengan warna latar di mana kotak pembatas elemen mencakup. Jadi, berikan batas (garis luar) dengan batas nol piksel. Ini mengisi semuanya untuk Anda dengan warna latar belakang Anda.
<svg style='stroke-width: 0px; background-color: blue;'> </svg>
sumber
Ini adalah jawaban dari @Robert Longson, sekarang dengan kode (awalnya tidak ada kode, ditambahkan kemudian):
Jawaban ini menggunakan:
sumber
Izinkan saya melaporkan solusi yang sangat sederhana yang saya temukan, yang tidak tertulis dalam jawaban sebelumnya. Saya juga ingin mengatur latar belakang dalam SVG, tetapi saya juga ingin ini berfungsi dalam file SVG mandiri.
Nah, solusi ini sangat sederhana, sebenarnya SVG mendukung tag gaya, sehingga Anda dapat melakukan sesuatu seperti
sumber
background-color
dari<svg>
elemen akan membuat IE11 membuat warna latar belakang juga di luar area yang ditetapkan denganviewBox
atribut. Ini tidak masalah saat menggunakanwidth
danheight
atribut.<svg style"...."></svg>
dan<svg><style>...</style></svg>
, dengan asumsi<style>
tag berada di tingkat atas? Jika tidak, maka jawaban ini sepertinya solusi asli OP, dikemas ulang di bawah sintaks yang berbeda. (Tapi mungkin solusi ini selamat dari SVG Cleaner, sementara<svg style="..."></svg>
tidak?)Saat ini saya sedang mengerjakan file seperti ini:
Dan saya mencoba memasukkan ini ke
style.css
:Ini berfungsi pada Chromium dan Firefox, tapi saya pikir itu bukan praktik yang baik . EyeOfGnome image viewer tidak membuatnya, dan Inkscape menggunakan namespace khusus untuk menyimpan latar belakang seperti itu:
Nah, tampaknya elemen root SVG bukan bagian dari elemen yang dapat dilukis dalam rekomendasi SVG.
Jadi saya menyarankan untuk menggunakan solusi "rect" yang disediakan oleh Robert Longson karena saya kira itu bukan "hack" sederhana. Tampaknya menjadi cara standar untuk mengatur latar belakang dengan SVG.
sumber
Solusi lain mungkin menggunakan
<div>
ukuran yang sama untuk membungkus<svg>
. Setelah itu, Anda akan dapat mendaftar"background-color"
, dan"background-image"
itu akan memengaruhisvg
.sumber