Envoyé par : Fabrice
Date : 19/08/2006 15:12
Bonjour à tous, j'ai donc decidé de passer un peu de temps à jouer avec XUL et SVG ;) plus exactement je souhaite me faire quelques petits widget en SVG. Je commence par une horloge simple. Je laisse ici volontairement de coté le javascript qui annime les aiguilles car mon probleme est ailleurs. Donc mon horloge est constituée d'un cercle bordé de noir et rempli d'un degradé d'orange, de trois aiguilles ;) et d'un petit cercle noir au centre pour masquer le point de rotation des aiguilles. Je précise de suite que ce SVG fonctionne très bien seul de son coté. Mon probleme est que je souhaite en faire un XBL et que le dégradé orange n'est pas rendu :( mon analyse du probleme est qu'il y a un probleme de conflit entre namespace. En effet dans le <bindings> j'ai xmlns= "http://www.mozilla.org/xbl" et dans <svg:svg> j'ai xmlns= "http://www.w3.org/2000/svg" ... y a t'il une solution à mon problème ?
voici mon code horloge.xml
<?xml version="1.0"?>
<bindings
xmlns= "http://www.mozilla.org/xbl"
xmlns:xbl= "http://www.mozilla.org/xbl"
xmlns:html="http://www.w3.org/1999/xhtml"
xmlns:xul= "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<binding id="horloge">
<content>
<svg:svg
xmlns:dc= "http://purl.org/dc/elements/1.1/"
xmlns:cc= "http://web.resource.org/cc/"
xmlns:rdf= "http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg= "http://www.w3.org/2000/svg"
xmlns= "http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
width= "140"
height= "140">
<svg:defs>
<svg:linearGradient id="orange">
<svg:stop
style= "stop-color:#ffc000;stop-opacity:1;"
offset="0"/>
<svg:stop
style= "stop-color:#ffff00;stop-opacity:1;"
offset="1"/>
</svg:linearGradient>
</svg:defs>
<svg:circle
cx= "70"
cy= "70"
r= "60"
style="stroke-width: 5; stroke: black; fill: url(#orange);"/>
<svg:g transform="translate(70,70) rotate(-90)">
<svg:line
id= "heure"
x1= "0"
y1= "0"
x2= "0"
y2= "30"
style="stroke: #1a0c80;stroke-width: 6px;"/>
<svg:line
id= "minute"
x1= "0"
y1= "0"
x2= "0"
y2= "40"
style="stroke: #1a0c80;stroke-width: 4px;"/>
<svg:line
id= "seconde"
x1= "0"
y1= "0"
x2= "0"
y2= "50"
style="stroke: #ffac66;stroke-width: 2px;"/>
</svg:g>
<svg:circle
cx= "70"
cy= "70"
r= "5"
style="stroke: black; fill: black;"/>
</svg:svg>
</content>
</binding>
</bindings>
La solution toute simple est de se passer de dégradé... mais bon. Si vous avez autre chose.
Fabrice
Envoyé par : thefab
Date : 19/08/2006 16:49
le dégradé orange n'est pas rendu
Uniquement le dégradé qui ne fonctionne pas, le reste fonctionne ?
<svg:svg> j'ai xmlns="http://www.w3.org/2000/svg"
Tu n'as pas besoin de mettre d'xmlns puisque tu n'as aucun élément non-préfixé. Si tout les éléments SVG sont préfixé svg: alors le seul espace de noms dont tu as besoin est xmlns:svg="http://www.w3.org/2000/svg"
Envoyé par : Fabrice
Date : 19/08/2006 20:04
Oui juste le dégradé. Le reste s'affiche très bien... je cherche toujours...
Envoyé par : thefab
Date : 21/08/2006 20:15
Alors ce n'est pas un problème d'espaces de noms, c'est que l'id #orange n'est pas pris en compte dans l'attribut style, mais fonctionne dans l'attribut fill !
Remplaces:
style="...; fill: url(#orange);"
Par:
fill="url(#orange);"
Fabrice
Envoyé par : Fabrice
Date : 21/08/2006 21:36
Alors là chapeau bas ! Merci c'est impec... fallait la trouver celle-la. ma p'tite pendule devrait gagner en esthetisme.
Merci encore,
Fabrice
Il n'est plus possible de poster des messages dans ce forum.
Copyright © 2003-2013 association xulfr, 2013-2016 Laurent Jouanneau - Informations légales.
Mozilla® est une marque déposée de la fondation Mozilla.
Mozilla.org™, Firefox™, Thunderbird™, Mozilla Suite™ et XUL™
sont des marques de la fondation Mozilla.