【问题标题】:How to reset a svg coordinates on clicking a second time in Snap.svg如何在 Snap.svg 中再次单击时重置 svg 坐标
【发布时间】:2013-12-09 05:41:09
【问题描述】:

我想创建一个图标,当单击它并再次单击该按钮时,它会变成一个关闭按钮,它会再次变成原始图标。到目前为止,我已经设法完成了代码的第一部分。我知道我可以使用 if else 条件,但我不知道要检查什么。如果您正在寻找 jsfiddle,我很抱歉,因为 snap.svg 还没有 cdn。

 <span class="bars" data-icon-name="bars">
          <svg id="svg"></svg> 
 </span>
 <script type="text/javascript">
    var Paper = Snap('#svg'); 
    var linepaths = Paper.line(20, 20, 100, 20);
    var linepaths1 = Paper.line(20, 33, 100, 33);
    var linepaths3 = Paper.line(20, 46, 100, 46);
    Paper.attr({
        stroke:'#fff',
        strokeWidth: 7
    });        
    Paper.click(
       function (){
       linepaths.animate({x1:20,y1:20,x2:75,y2:75},500);                              
       linepaths1.animate({x1:20,y1:75,x2:75,y2:20},500); 
       linepaths3.animate({x1:0,y1:0,x2:0,y2:0},1);  
       linepaths3.attr({
        stroke:'#2ecc71',
        strokeWidth: 7
         });   
    });
    </script> 

【问题讨论】:

    标签: javascript svg snap.svg


    【解决方案1】:

    我猜你可以做一个基本的切换,这取决于你希望它如何工作..

    Paper.click( function() { if( toggle ) {
                                buttonOn();
                                toggle = false;
                            } else { 
                                buttonOff(); 
                                toggle = true; } 
                        } );
    
    function buttonOn() {
               linepaths.animate({x1:20,y1:20,x2:75,y2:75},500);                              
               linepaths1.animate({x1:20,y1:75,x2:75,y2:20},500); 
               linepaths3.animate({x1:0,y1:0,x2:0,y2:0},1);  
               linepaths3.attr({
                stroke:'#2ecc71',
                strokeWidth: 7
               });
    };
    
     function buttonOff() {
        linepaths.animate({x1:20,y1:20,x2:100,y2:20},500);                              
               linepaths1.animate({x1:20,y1:33,x2:100,y2:33},500); 
               linepaths3.animate({x1:20,y1:46,x2:100,y2:46},1);  
               linepaths3.attr({
                stroke:'#2ecc71',
                strokeWidth: 7
               });
    };
    

    jsfiddle http://jsfiddle.net/2UZr2/5/

    【讨论】:

    • 谢谢,它有点马车,但这是我想做的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-24
    • 1970-01-01
    • 2021-08-24
    • 1970-01-01
    相关资源
    最近更新 更多