12
votes

Comment utiliser une image SVG comme fond?

Je dois faire quelque chose de mal. L'image a été exportée d'illustrateur en tant que SVG et (je ne suis pas sûr de savoir si cela est pertinent ou non), il dispose de certaines données de pixel. Voici mon exemple de jsfiddle .

Notez que vous allez directement à l'image, il apparaît simplement bien: http://ykcreations.com/tv.svg


EDIT: Cela ne fonctionne pas en chrome ou en safari, mais fait dans Firefox. Numéro WebKit?


5 commentaires

On dirait que ça me travaille.


Fonctionne juste bien pour moi ... a pris beaucoup de temps à charger cependant.


Ne travaillez pas pour moi sur Chrome / Ubuntu, mais travailler sur FF / Ubuntu.


Est-il possible qu'il essaie de l'afficher avant le chargement ou quelque chose?


Je vous assure que les dernières versions de Chrome et de Safari Support SVG sans plugins. Cela concerne votre fichier image, voir ma réponse ci-dessous avec un alternatif SVG branché.


4 Réponses :


2
votes

Cela concerne votre image, essayez de brancher les éléments suivants dans votre CSS : xxx

peut-être votre svg est en fait un SVGZ ? SVGZ Les fichiers sont les versions compressées des fichiers svg . Habituellement, vous devez configurer votre serveur pour gérer cela, mais FF peut simplement être en mesure de traiter les versions compressées.

EDIT Voir la réponse de Phrochez ci-dessous (éventuellement ci-dessus au moment où vous le lisez); Il couvre cela et donne une meilleure explication.


4 commentaires

Vous pouvez voir à partir des en-têtes de réponse HTTP que les données ne sont pas gzippées.


L'en-tête indiquerait-il si le fichier était zippé mais non correctement signalé comme zippé? (Je ne demande que parce que je ne connais honnêtement pas ces choses)


Si c'était le cas, alors curl http://www.ykcreations.com/tv.svg devrait entrer des données binaires à venir. Ce n'est pas; Il montre un codage approprié.


Ah, eh bien, votre réponse semble couvrir les deux choses, de toute façon.



9
votes

Il y a un problème avec votre SVG source. Voir ce violon mis à jour pointant vers un fichier SVG différent qui fonctionne correctement: HTPTP://jsfiddle.net/wdw2k/2/ xxx

edit : spécifiquement, le problème apparaît pour que WebKit ne prend pas en charge dans un SVG utilisé comme arrière-plan. Modifier votre fichier minimalement pour modifier le fichier pour référencer un fichier local (non-Data-Uri) et ajouter un , j'ai pu voir À la fois l'image et le cercle Lors de la visualisation du SVG directement en chrome, mais lorsqu'il est utilisé comme image d'arrière-plan, seul le cercle était visible.

Ce bogue sent pertinent.


4 commentaires

Je ne comprends pas bien votre édition. J'ai aussi un fichier SVG qui ne fonctionne pas comme un arrière-plan et je vois qu'il a une grosse morceinte de ..


@Vsync Ce que je disais, c'est que je paraissais dans l'exemple d'être très simple - l'élément n'a pas utilisé de données : uri et n'a pas utilisé de complexe. Contenu - et il avait l'air correct par lui-même mais incorrect comme fond. Ce fut des données prenant en charge la conviction qu'il existe un bogue dans WebKit et non un problème avec le contenu.


Il y a un bug, j'aimerais pouvoir le trouver afin que je puisse l'étendre.


@Vsync Je crois que c'est ce que j'ai référencé: BOGS.WEBKIT.ORG/SHOW_BUG.CGI? ID = 15443



1
votes

Une autre cause possible servant le SVG avec le mauvais type MIME. Le réglage sur 'image / svg + xml' peut résoudre le problème.

Dans les rails, cela peut être fait en ajoutant ce qui suit à config / intialiszers / mime_types.rb:

mime :: type.register 'image / svg + xml' ,: svg



0
votes

J'ai eu un problème Simmilar avec Rendu SVG comme image d'arrière-plan en chrome, mais tout allait bien dans Firefox. J'ai découvert qu'il y avait une erreur de syntaxe dans mes fichiers SVG exportés à partir d'Adobe:

Mauvais Attribut XLink: P>

xlink:href="data:image/png;base64


0 commentaires