J'ai eu un problème similaire. Mais j'utilisais D3 pour positionner mes éléments, et je voulais que le transformer et transition à traiter par CSS. Il s'agit de mon code original, que j'ai réussi à faire fonctionner dans Chrome 65 :
//...
this.layerGroups.selectAll('.dot')
.data(data)
.enter()
.append('circle')
.attr('transform-origin', (d,i)=> `${valueScale(d.value) * Math.sin( sliceSize * i)}
${valueScale(d.value) * Math.cos( sliceSize * i + Math.PI)}`)
//... etc (set the cx, cy and r below) ...
Cela m'a permis de définir le cx
, cy
et transform-origin
en javascript en utilisant les mêmes données.
MAIS cela n'a pas fonctionné dans Firefox ! Ce que j'ai dû faire, c'est envelopper le circle
dans le g
et translate
en utilisant la même formule de positionnement que ci-dessus. J'ai ensuite ajouté le circle
dans le g
et définir son cx
et cy
à des valeurs 0
. De là, transform: scale(2)
s'étendrait à partir du centre, comme prévu. Le code final ressemblait à ceci.
this.layerGroups.selectAll('.dot')
.data(data)
.enter()
.append('g')
.attrs({
class: d => `dot ${d.metric}`,
transform: (d,i) => `translate(${valueScale(d.value) * Math.sin( sliceSize * i)} ${valueScale(d.value) * Math.cos( sliceSize * i + Math.PI)})`
})
.append('circle')
.attrs({
r: this.opts.dotRadius,
cx: 0,
cy: 0,
})
Après avoir effectué ce changement, j'ai modifié mon CSS pour cibler l'image de l'utilisateur. circle
au lieu de la .dot
pour ajouter le transform: scale(2)
. Je n'ai même pas eu besoin d'utiliser transform-origin
.
NOTES :
-
J'utilise d3-selection-multi
dans le deuxième exemple. Cela me permet de passer un objet à .attrs
au lieu de répéter .attr
pour chaque attribut.
-
Lorsque vous utilisez un littéral de modèle de chaîne, tenez compte des sauts de ligne, comme illustré dans le premier exemple. Ceci inclura une nouvelle ligne dans la sortie et peut casser votre code.
0 votes
Pour information, le problème est censé être résolu depuis la version bêta 3 de Firefox 19, mais j'ai encore des problèmes avec Firefox 22. Liste de bugzilla de Mozilla : bugzilla.mozilla.org/show_bug.cgi?id=828286
0 votes
@CTheDark, pourriez-vous reconsidérer la réponse acceptée pour ceci s'il vous plaît ? Nous avons maintenant une solution plus moderne : stackoverflow.com/a/62720107/4375751