Je voudrais définir une couleur d'arrière-plan par défaut pour tout le document SVG, au rouge par exemple.
<svg viewBox="0 0 500 600" style="background: red">/* content */</svg>
La solution ci-dessus fonctionne mais la propriété background de l'attribut style n'est malheureusement pas standard: http://www.w3.org/TR/SVG/styling.html#SVGStylingProperties , et donc elle est supprimée pendant le processus de nettoyage avec SVG Nettoyeur.
Existe-t-il une autre façon de déclarer cette couleur d'arrière-plan?
Réponses:
SVG 1.2 Tiny a viewport-fill Je ne suis pas sûr de l'ampleur de l'implémentation de cette propriété, car la plupart des navigateurs ciblent SVG 1.1 pour le moment. Opera l'implémente FWIW.
Une solution plus multi-navigateur actuellement serait de coller un
<rect>
élément avec une largeur et une hauteur de 100% et fill = "red" comme premier enfant de l'<svg>
élément, par exemple:la source
width="10000%" height="10000%"
peut le corriger. sinon ajoutez quelques zérosviewport-fill
demande d'extraction caniuse abandonnée : github.com/Fyrd/caniuse/issues/2186 Pourquoi pourquoi ont-ils laissé SVG mourir.J'ai trouvé que cela fonctionne dans Safari. SVG ne colore que la couleur d'arrière-plan là où le cadre de délimitation d'un élément couvre. Alors, donnez-lui une bordure (trait) avec une limite de zéro pixel. Il remplit le tout pour vous avec votre couleur d'arrière-plan.
<svg style='stroke-width: 0px; background-color: blue;'> </svg>
la source
C'est la réponse de @Robert Longson, maintenant avec du code (il n'y avait pas de code à l'origine, il a été ajouté plus tard):
Cette réponse utilise:
la source
Permettez-moi de rapporter une solution très simple que j'ai trouvée, qui n'est pas écrite dans les réponses précédentes. Je voulais également définir l'arrière-plan dans un SVG, mais je veux aussi que cela fonctionne dans un fichier SVG autonome.
Eh bien, cette solution est vraiment simple, en fait SVG prend en charge les balises de style, vous pouvez donc faire quelque chose comme
la source
background-color
de l'<svg>
élément fera que IE11 rendra la couleur d'arrière-plan également en dehors de la zone définie avec l'viewBox
attribut. Cela n'a pas d'importance lors de l'utilisationwidth
et desheight
attributs.<svg style"...."></svg>
et<svg><style>...</style></svg>
, en supposant que la<style>
balise se trouve au niveau supérieur? Sinon, alors cette réponse semble être la solution originale de l'OP, reconditionnée sous une syntaxe différente. (Mais peut-être que cette solution survit à SVG Cleaner, alors<svg style="..."></svg>
que non?)Je travaille actuellement sur un fichier comme celui-ci:
Et j'ai essayé de mettre ceci dans
style.css
:Cela fonctionne sur Chromium et Firefox, mais je ne pense pas que ce soit une bonne pratique . La visionneuse d'images EyeOfGnome ne le rend pas et Inkscape utilise un espace de noms spécial pour stocker un tel arrière-plan:
Eh bien, il semble que l'élément racine SVG ne fasse pas partie des éléments pouvant être peints dans les recommandations SVG.
Je suggère donc d'utiliser la solution "rect" fournie par Robert Longson car je suppose que ce n'est pas un simple "hack". Cela semble être la manière standard de définir un arrière-plan avec SVG.
la source
Une autre solution de contournement peut être d'utiliser
<div>
la même taille pour envelopper le fichier<svg>
. Après cela, vous pourrez postuler"background-color"
, et"background-image"
cela affectera lesvg
.la source