2012-02-19 55 views
2

我用下面的linearGradient元工作:为的LinearGradient SVG表达坐标

<linearGradient 
    inkscape:collect="always" 
    xlink:href="#linearGradient8704" 
    id="linearGradient8774" 
    gradientUnits="userSpaceOnUse" 
    x1="45%" 
    y1="45%" 
    x2="55%" 
    y2="55%" /> 

是否有可能以某种方式使用基本表达式的x/y坐标?我希望能够做这样的事情:

x1="50% - 20px", 
y1="50% - 20px", 
+1

您可能需要更新问题,以澄清您需要在CSS背景图片中使用它,因为这会排除在svg中使用javascript。并且您的目标浏览器是任天堂Wii上的Opera。 – 2012-04-25 13:12:20

回答

1

有你为什么要去做这样一个具体的原因是什么?不要偏离你的原始问题,但我内部的编码器尖叫使用不同单位的表达式是错误的。是否有可能将其中一个值转换为其他单位使用JavaScript?喜欢的东西:

var new_x1 = (window.innerWidth/2) + 20; 
document.getElementById('linearGradient8774').setAttribute('x1', new_x1 + 'px'); 
+0

我正在尝试更好地近似插入效果。你可以在http://graphicdesign.stackexchange.com/questions/6028/svg-downward-inner-bevel看到我的原始问题。我正在制作Nintendo Wii的网络界面图形,它不支持CSS3,但支持DIV元素的SVG背景图像。我需要一个动态调整大小的盒子,但固定的边框半径(完成)以及与这些固定大小的角落相匹配的边框渐变,效果看起来很好。我对SVG不太了解......我可以在SVG文档中使用JS吗?或者JS运行在托管SVG的页面上? – Brad 2012-04-25 00:33:00

+0

你实际上可以做到这两点。如果你有一个控制svg的页面,我会建议添加一些脚本,否则,你可以将脚本标签(或外部文件)嵌入到svg中。 (见这里,靠近顶部:http://pilat.free.fr/english/routines/js_dom.htm) – Jlange 2012-04-25 16:36:51

1

在演示文稿(如CSS定义的),则可能成为可以使用计算()表达式属性在未来,但它没有任何SVG规范的一部分,而据我所知,没有实现在支持这一点的那一刻。

如果您使用内联svg和javascript来计算所需的值,然后将svgs放在需要使用CSS的位置,您可能可以得到此工作。