javascript - 动态转换 SVG 的强大解决方案

标签 javascript html css svg css-transitions

显然,IE10 不支持 SVG 的 CSS 转换,仅支持像这样的属性转换 (JSFIDDLE):

<svg><rect id="myrect" width="200" height="200"></rect></svg>

setTimeout(function()
{
    var r = document.getElementById("myrect")

    //works in IE
    //r.setAttribute("transform","scale(1.5)")   

    //does not work in IE
    r.style.transform = r.style.WebkitTransform = "scale(1.5)"
},1000);

在支持的情况下,我希望包括一个平滑的过渡:

#myrect { transition: all 1s; }

在我看来,平滑过渡需要 CSS 转换,而 IE 需要属性转换。

那么最好的策略是什么?测试IE,如果IE使用属性转换,否则使用CSS转换?

非常感谢任何想法!

最佳答案

您必须使用 IE 等在 javascript 中制作动画

var scale = 1;

function f()
    {
        var r = document.getElementById("myrect")

        //works in IE
        r.setAttribute("transform","scale(" + scale + ")")

        scale += 0.001;

setTimeout(f, 10);
    };

setTimeout(f, 10);

jsfiddle

这也适用于其他 UA,但您可以改用 SMIL 或 CSS 转换。

关于javascript - 动态转换 SVG 的强大解决方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18878989/

相关文章:

html - 如何将固定宽度的元素放入固定宽度的容器中?

css - 背景位置问题

javascript - 跟踪多个按钮以及每个按钮被点击的次数

javascript - 将集合中的数据以一种格式分组为另一种格式

javascript - 如何在单击按钮时切换所有单选框?

javascript - 使javascript变量等于输入复选框

html - 并排放置两个表 TR

javascript - 如何创建一个以变量为名称的对象?

javascript - 在 Canvas 中调整图像大小以保持分辨率

css - 如何使用 SCSS 定位具有两个类的元素之后?