javascript - svg 变形而不翻转

标签 javascript svg svg-animate morphing

我一直在尝试找到一种简单且自由的方法来在贝塞尔曲线形状与其镜像副本之间进行变形。因为他们的点数相同,所以我认为这将是一件容易的事。事实并非如此。我尝试了 KUTE 和 SVG morpheus。 Kute 执行了不必要的垂直翻转,Morpheus 执行了不必要的水平翻转 ( codepen here )。唯一能做到这一点的 javascript 库是付费的 MorphSVG 插件。 (codepen here) 很遗憾,我希望将来能找到更便宜的解决方案。如果有人知道任何事情,请告诉我。

 var svgMorpheus = new SVGMorpheus('#icon', {rotation: "none"});
 var icons = ['question', 'answer'];
 var current = 0;

最佳答案

基于我的旧动画的快速破解:http://jsfiddle.net/alkhoo/JwkYm/11/ - 鼠标悬停即可激事件画。

注意:greensock 动画包含 paths 值。

 $(function () {

     //Grab an array of all the main SVG Elements
     var containers = $(".category .item a");

     //Define some vars that we will use later
     var speed = 1000;
     var animation = mina.backout;

     //Loop through all of these containers and insert the SVG's
     containers.each(function (index) {

         //Get each of our SVG tags
         var s = Snap(".animated-overlay.svg-" + index);

         //Define our Paths

         var defaultWhitePath = "M1.8978756799999998,64.59785067199999 C4.5919579200000005,94.29202528 74.7848272,99.01918832 128.25879712,95.43520928 361.0060832,78.08572735999999 468.2360832,8.157339040000004 562.54879712,6.478409280000005 646.3748272,4.004430240000005 663.93195792,95.19048896 664.08987568,93.45505007999999 664.24724128,114.2054704 664.1263182399999,144.17150224 664.1263182399999,166.67625712 443.1668704,166.67625712 222.2168704,166.67625712 1.26631824,166.67625712 1.26631824,165.36156416 -0.8027587199999999,36.217596 1.8898756799999998,64.59746416 z";

         //Define our Hover Paths
         var hoverWhitePath = "M0.6989956799999999,94.82189867199999 C0.6932379199999996,94.83954528000001 15.029627200000007,-2.205931680000006 100.71287712,0.6387292800000068 186.5548832,3.4719673599999936 293.78488319999997,81.96869904 535.00287712,100.48192928 586.6196272000001,104.43659024 660.0332379199999,93.83112896 662.89099568,62.42577008 665.7387612800001,31.0390704 663.55047824,166.25166224 663.55047824,166.27033712000002 442.6004704,166.27033712000002 221.65047040000002,166.27033712000002 0.6904782399999999,166.27033712000002 0.6904782399999999,142.47900416000002 0.6887612800000001,118.58159599999999 0.6909956799999999,94.81490416 z";

         //Load up the default paths in the SVG
         var whitePath = s.path(defaultWhitePath);

         whitePath.attr({
             fill: "#00f"
         });

         //Let's group our paths, it doesn't seem like you can animate the whole group though :(
         var paths = s.group(whitePath);

         //Animate on Mouse Enter
         $(containers[index]).mouseenter(function () {
             whitePath.animate({
                 path: hoverWhitePath
             }, speed, animation);
         });

         //Animate on Mouse Leave, return the paths to the default
         $(containers[index]).mouseleave(function () {
             whitePath.animate({
                 path: defaultWhitePath
             }, speed, animation);
         });



     });

 });
body {
    background: #ddd;
}
.item {
    max-height: 300px;
    background: #ddd;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/snap.svg/0.4.1/snap.svg-min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div class="category">
    <div class="item" style="background-image: url('images/category.jpg');"> <a href="#" title="Category Title">
           
           <svg viewbox="0, 0, 700, 300" preserveAspectRatio="none" class="animated-overlay svg-0">
               
           </svg>
    
        </a>

    </div>
</div>

关于javascript - svg 变形而不翻转,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38286797/

相关文章:

javascript - 带延迟的 svg 文本动画

javascript - 动画每个 ng-repeat 迭代

javascript - 循环每个输入的相对记录并纠正重复记录

javascript - "position: fixed"与包含 svg 元素的 div 一起使用时会导致许多问题

html - 如何自动将内联 SVG 缩放到父容器的宽度和高度?

css - 路径不适合 SVG

jquery - 仅当 div 在视口(viewport)中时如何启动 svg 动画

javascript - 为什么我的 GSP 拉入我的 AngularJS javascript 文件但不执行我的 Controller 功能?

javascript - Angular JS 服务未定义

javascript - 重新启动背景 SVG 动画