路径元素上的GreenSock TimelineMax在Safari和Firefox中不起作用

伊丽莎白·哈默尔(Elisabeth Hamel)

我正在尝试为我在JavaScript / jQuery中创建并附加的几个路径元素设置动画。然后,我使用时间轴对这些元素进行一个动画处理(具有不同的值,因此我不能使用交错)。最后,我不想播放完整的时间表,而只是其中的一部分。

这在Chrome浏览器中可以正常工作,但在Safari和Firefox中却不能,我不知道为什么。

这是一个CodePen:http ://codepen.io/elisabeth_hamel/pen/kXqOmw

编辑: CodePen已更新,现在可以使用。

这是代码:

的HTML

<svg xmlns='http://www.w3.org/2000/svg' width='20' height='10' viewBox='0 0 2 1' preserveAspectRatio='xMinYMid meet'></svg>

的CSS

svg{
    width: 100%;
    position: absolute;
    top: 0;
    bottom: 0;
    left: 60px;
    margin: auto;
    overflow: visible;
    z-index: 1;
    .up{
        -webkit-transform: translate3d(0, 40px, 0);
        transform: translate3d(0, 40px, 0);
    }
    .down{
        -webkit-transform: translate3d(0, 40px, 0);
        transform: translate3d(0, -40px, 0);
    }
}

JS

$(function(){
    var trianglesTimeline = new TimelineMax({paused: true, smoothChildTiming: true});

    function setAnimations(){
        var nbTriangles, i = 0, svg = '', random = 1, thisPath;

        nbTriangles = ($(window).width() - 60)/9 | 0;
        for(i; i<nbTriangles; i++){
            random = (Math.random()*(2.5-0.5) + 0.5).toFixed(1);
            if(i%2 === 0){
                svg += "<path fill='#000' d='M0 0H2 L1 1Z' class='down' data-op='"+random+"' data-x='"+i+"' style='opacity:0'/>";
            }else{
                svg += "<path fill='#000' d='M0 1H2 L1 0Z' class='up' data-op='"+random+"' data-x='"+i+"' style='opacity:0'/>";
            }
        }
        $('svg').html(svg);

        i = 0;
        for(i; i<nbTriangles; i++){
            thisPath = $('path').eq(i);
            TweenMax.set(thisPath, {x: thisPath.data('x')}, 0);
            trianglesTimeline.to(thisPath, 0.3, {opacity: thisPath.data('op'), y: '0px', delay: 0.04*i}, 0);
        }
        trianglesTimeline.tweenTo( trianglesTimeline.duration() * 0.1 );
    }

    setAnimations();
});

任何帮助,将不胜感激!

伊丽莎白·哈默尔(Elisabeth Hamel)

好的,原来CSS规则转换规则覆盖了TweenMax对路径元素设置的转换。我不知道为什么!

因此,我用内联转换替换了这些类。如果有人感兴趣,这是新的工作代码:

的CSS

svg{
    width: 100%;
    position: absolute;
    top: 0;
    bottom: 0;
    left: 60px;
    margin: auto;
    overflow: visible;
    z-index: 1;
}

JS

$(function(){

    var trianglesTimeline = new TimelineMax({paused: true, smoothChildTiming: true});

    function setAnimations(){
        var nbTriangles, i = 0, svg = '', random = 1, thisPath;

        nbTriangles = ($(window).width() - 60)/9 | 0;
        for(i; i<nbTriangles; i++){
            random = (Math.random()*(2.5-0.5) + 0.5).toFixed(1);
            if(i%2 === 0){
                svg += "<path fill='#000' d='M0 0H2 L1 1Z' transform='translate("+i+", 40)' data-op='"+random+"' style='opacity:0'/>";
            }else{
                svg += "<path fill='#000' d='M0 1H2 L1 0Z' transform='translate("+i+", -40)' data-op='"+random+"' style='opacity:0'/>";
            }
        }
        $('svg').html(svg);

        i = 0;
        for(i; i<nbTriangles; i++){
            thisPath = $('path').eq(i);
            trianglesTimeline.to(thisPath, 0.3, {opacity: thisPath.data('op'), y: '0px', delay: 0.04*i}, 0);
        }
        trianglesTimeline.tweenTo( trianglesTimeline.duration() * 0.1 );
    }

    setAnimations();
 });

编辑

为了使其在IE中起作用,我进行了一些其他修改:

$(function(){
    function makeSVG(tag, attrs){
        var el = document.createElementNS('http://www.w3.org/2000/svg', tag), k;
        for(k in attrs){
            el.setAttribute(k, attrs[k]);
        }
        return el;
    }

    var trianglesTimeline = new TimelineMax({paused: true, smoothChildTiming: true});

    function setAnimations(){
        var nbTriangles, i = 0, svg = '', random = 1, thisPath, y, d;

        nbTriangles = ($(window).width() - 60)/9 | 0;
        for(i; i<nbTriangles; i++){
            random = (Math.random()*(2.5-0.5) + 0.5).toFixed(1);
            if(i%2 === 0){
                y = 40;
                d = 'M0 0H2 L1 1Z';
            }else{
                y = -40;
                d = 'M0 1H2 L1 0Z';
            }
            svg = makeSVG('path', {fill: '#000', d: d, transform:'translate('+i+', '+y+')', 'data-op': random, style: 'opacity:0'});
            $('svg').append(svg);
        }

        i = 0;
        for(i; i<nbTriangles; i++){
            thisPath = $('path').eq(i);
            trianglesTimeline.to(thisPath, 0.3, {opacity: thisPath.data('op'), y: '0px', delay: 0.04*i}, 0);
        }
        trianglesTimeline.tweenTo( trianglesTimeline.duration() * 0.1 );
    }

    setAnimations();
});    

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

svg更改路径在Firefox和Safari中不起作用

来自分类Dev

SVG <use>上的动画在FireFox和Safari中不起作用

来自分类Dev

剪切路径在Firefox和IE中不起作用

来自分类Dev

:伪元素在Safari中不起作用

来自分类Dev

:伪元素在Safari中不起作用

来自分类Dev

将左和上的div元素定位到FireFox中的内容不起作用

来自分类Dev

SVG SMIL路径动画在Safari中不起作用

来自分类Dev

中心的HTML对齐图例元素在Internet Explo和FireFox中不起作用

来自分类Dev

模式上的滚动条在 Firefox 和 IE 中不起作用

来自分类Dev

Rails 4.1.8上的LiveReload在Chrome或Safari中不起作用

来自分类Dev

Rails 4.1.8上的LiveReload在Chrome或Safari中不起作用

来自分类Dev

jQuery scrollTop()在Firefox中的'body'元素上不起作用

来自分类Dev

javascript()onclick隐藏元素-在Firefox中不起作用

来自分类Dev

3d元素在Firefox中不起作用

来自分类Dev

javascript()onclick隐藏元素-在Firefox中不起作用

来自分类Dev

HTML 图片元素在 Edge 或 Firefox 中不起作用

来自分类Dev

Firefox 插件中的 jQuery 元素选择不起作用

来自分类Dev

jQuery和Greensock动画-使用classname为屏幕上的所有元素设置动画

来自分类Dev

选项元素上的background-color在Firefox 49.0.1中不起作用

来自分类Dev

CSS过渡:不透明度和可见性过渡在Firefox上不起作用(可在Chrome / Safari上运行)

来自分类Dev

jpm的默认Firefox路径不起作用

来自分类Dev

jpm的默认Firefox路径不起作用

来自分类Dev

Javascriptcalculate()函数在Firefox和Safari中不起作用

来自分类Dev

删除路径中带点的元素不起作用

来自分类Dev

Firefox ::伪元素后不起作用

来自分类Dev

宽度和高度在SVG <use>元素中不起作用

来自分类Dev

BxSlider Firefox 上的链接不起作用

来自分类Dev

CSS'transform:scale()'属性在iOS Safari和iOS Chrome上也不起作用

来自分类Dev

CSS的'transform:scale()'属性在iOS Safari和iOS Chrome上也不起作用

Related 相关文章

  1. 1

    svg更改路径在Firefox和Safari中不起作用

  2. 2

    SVG <use>上的动画在FireFox和Safari中不起作用

  3. 3

    剪切路径在Firefox和IE中不起作用

  4. 4

    :伪元素在Safari中不起作用

  5. 5

    :伪元素在Safari中不起作用

  6. 6

    将左和上的div元素定位到FireFox中的内容不起作用

  7. 7

    SVG SMIL路径动画在Safari中不起作用

  8. 8

    中心的HTML对齐图例元素在Internet Explo和FireFox中不起作用

  9. 9

    模式上的滚动条在 Firefox 和 IE 中不起作用

  10. 10

    Rails 4.1.8上的LiveReload在Chrome或Safari中不起作用

  11. 11

    Rails 4.1.8上的LiveReload在Chrome或Safari中不起作用

  12. 12

    jQuery scrollTop()在Firefox中的'body'元素上不起作用

  13. 13

    javascript()onclick隐藏元素-在Firefox中不起作用

  14. 14

    3d元素在Firefox中不起作用

  15. 15

    javascript()onclick隐藏元素-在Firefox中不起作用

  16. 16

    HTML 图片元素在 Edge 或 Firefox 中不起作用

  17. 17

    Firefox 插件中的 jQuery 元素选择不起作用

  18. 18

    jQuery和Greensock动画-使用classname为屏幕上的所有元素设置动画

  19. 19

    选项元素上的background-color在Firefox 49.0.1中不起作用

  20. 20

    CSS过渡:不透明度和可见性过渡在Firefox上不起作用(可在Chrome / Safari上运行)

  21. 21

    jpm的默认Firefox路径不起作用

  22. 22

    jpm的默认Firefox路径不起作用

  23. 23

    Javascriptcalculate()函数在Firefox和Safari中不起作用

  24. 24

    删除路径中带点的元素不起作用

  25. 25

    Firefox ::伪元素后不起作用

  26. 26

    宽度和高度在SVG <use>元素中不起作用

  27. 27

    BxSlider Firefox 上的链接不起作用

  28. 28

    CSS'transform:scale()'属性在iOS Safari和iOS Chrome上也不起作用

  29. 29

    CSS的'transform:scale()'属性在iOS Safari和iOS Chrome上也不起作用

热门标签

归档