Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/409.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 进入视口时播放SVG-浏览器支持?_Javascript_Html_Css_Svg - Fatal编程技术网

Javascript 进入视口时播放SVG-浏览器支持?

Javascript 进入视口时播放SVG-浏览器支持?,javascript,html,css,svg,Javascript,Html,Css,Svg,我有以下脚本,在SVG滚动到视图时播放它们(我在页面上有几个SVG)。这是完美的,但只适用于Firefox!这是正确的方法还是有更好的代码可以在其他浏览器上使用?理想情况下,如果它不能在IE上工作,并且我也希望如此,那么SVG将看起来像一个图像,而不是动画。但我希望它能在所有其他浏览器中工作 <div id="arrow-2id" class="arrow-2 leftarrows"> <!--START ARRO

我有以下脚本,在SVG滚动到视图时播放它们(我在页面上有几个SVG)。这是完美的,但只适用于Firefox!这是正确的方法还是有更好的代码可以在其他浏览器上使用?理想情况下,如果它不能在IE上工作,并且我也希望如此,那么SVG将看起来像一个图像,而不是动画。但我希望它能在所有其他浏览器中工作

<div id="arrow-2id" class="arrow-2 leftarrows">
            <!--START ARROW 2-->
                <svg id="arrow2svg" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 265.009 303.044">
                <script type="text/javascript">
    
                var diva2 = document.getElementById("arrow-2id");
                
                window.addEventListener("scroll", function() {
                  if (document.documentElement.scrollTop >= diva2.offsetTop - -500) {
                    diva2.classList.add("play");
                  }
                  
                 }
                );
                </script>
                
                <mask id="arrow2-mask1" maskUnits="userSpaceOnUse">
                <path d="M272.304,11.13c-85-31.5-421.5,178.5-175,268.5"/>
                </mask>
                
                <mask id="arrow2-mask2" maskUnits="userSpaceOnUse">
                <path d="M-3.696,293.63
                    c130.667-12.167,130.667,23.5,58.5-89.5"/>
                </mask>
                
                <path mask="url(#arrow2-mask1)" fill="#42A8FC" d="M74.443,277.599c-22.03-9.911-41.892-24.317-56.394-41.811c-32.086-38.702-16.961-81.441,14.377-119.45
                    c8.258-9.874,27.106-28.748,31.125-32.337C95.94,55.065,133.39,29.76,173.667,13.682c21.596-8.622,49.867-18.374,71.02-11.181
                    c10.227,3.479,20.322,12.379,20.322,14.696c-0.002,2.317-8.945-0.005-10.693-0.368c-5.762-1.199-13.512-0.332-19.262,0.301
                    c-22.932,2.51-47.227,13.269-68.383,23.897c-60.319,27.104-104.662,75.694-105.099,75.646
                    c-12.522,12.951-23.527,26.688-32.052,40.988c-32.137,53.904,3.738,93.021,50.723,109.687
                    C91.345,270.88,88.917,283.693,74.443,277.599z"/>
                    
                    <path mask="url(#arrow2-mask2)" fill="#42A8FC" d="M74.443,277.599c-20.021,1.14-40.042,2.28-60.062,3.422c-16.744,0.952-18.679,22.91-2.629,21.996
                    c30.077-1.713,60.152-3.425,90.23-5.14c8.539-0.484,17.633-7.912,13.074-16.089c-13.158-23.591-26.316-47.181-39.471-70.771
                    c-6.476-11.604-30.8-2.861-23.525,10.185c8.394,15.048,19.787,31.097,28.182,46.146c5.811,8.531,5.436,9.656,5.436,9.656
                    L74.443,277.599z"/>
                
                </svg>
                
                <style>
                
                    
                .play #arrow2-mask1 path {
                    fill: none;
                    stroke: white;
                    stroke-width: 29;
                    stroke-dasharray: 478.362 478.362;
                    stroke-dashoffset: 0;
                    animation: brush2a 2s linear ;
                    animation-fill-mode: forwards;
                }
                .play #arrow2-mask2 path {
                    fill: none;
                    stroke: white;
                    stroke-width: 29;
                    stroke-dasharray: 203.128 203.128;
                    stroke-dashoffset: 0;
                    animation: brush2b 2s linear ;
                    animation-fill-mode: forwards;
                }
                @keyframes brush2a {
                      0% { stroke-dashoffset: 478.362; }
                     25% { stroke-dashoffset: 478.362; }
                     75% { stroke-dashoffset: 0; }
                    100% { stroke-dashoffset: 0; }
                }
                @keyframes brush2b {
                      0% { stroke-dashoffset: 203.128; }
                     80% { stroke-dashoffset: 203.128; }
                    100% { stroke-dashoffset: 0; }
                }
                </style>
                <!--END ARROW 2-->
                </div>

var diva2=document.getElementById(“箭头-2id”);
addEventListener(“滚动”,函数(){
if(document.documentElement.scrollTop>=diva2.offsetTop--500){
第2部分。类列表。添加(“播放”);
}
}
);
.播放箭头2-mask1路径{
填充:无;
笔画:白色;
笔画宽度:29;
行程:478.362 478.362;
笔划偏移:0;
动画:线性;
动画填充模式:正向;
}
.播放箭头2-mask2路径{
填充:无;
笔画:白色;
笔画宽度:29;
笔划数组:203.128 203.128;
笔划偏移:0;
动画:线性;
动画填充模式:正向;
}
@关键帧笔刷2a{
0%{stroke dashoffset:478.362;}
25%{偏移量:478.362;}
75%{stroke dashoffset:0;}
100%{stroke dashoffset:0;}
}
@关键帧笔刷2b{
0%{stroke dashoffset:203.128;}
80%{stroke dashoffset:203.128;}
100%{stroke dashoffset:0;}
}

我想知道这是否是因为脚本在SVG内部。我尝试将脚本移到SVG外部,但似乎没有任何区别。我没有看到代码问题。动画在chrome和edge中工作,事件处理程序正在绑定。所以这可能与您没有在这里显示的代码有关。