• svg基础知识梳理--动画篇


    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>Document</title>
    </head>
    <body>
        <svg xmlns="http://www.w3.org/2000/svg" 
            style="border:1px solid red;background: #222256;"
            width="1000" height="600"
            >
        <rect x="100" y="100" width="100" height="100" fill="red">
            <animate
            attributeType="XML"
            attributeName="x"
            from="100"
            to="300"
            dur="3s"
            fill="freeze"
            repeatCount="3"
            ></animate>
            <!--动画可以叠加 freeze停止到最后的状态;repeatCount重复次数-->
            <animate
            attributeType="XML"
            attributeName="fill"
            from="red"
            to="yellow"
            dur="3s"
            fill="freeze"
            ></animate>
        </rect>
        </svg>
    </body>
    </html>

    左右循环

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>Document</title>
    </head>
    <body>
        <svg xmlns="http://www.w3.org/2000/svg" 
            style="border:1px solid red;background: #222256;"
            width="1000" height="600"
            >
            <!--begin="0;goleft.end + 1s" 表示进入页面渲染的时候就开始执行,在goleft执行完毕之后在等1s在执行-->
        <rect x="100" y="100" width="100" height="100" fill="red">
            <animate
            id="goright"
            begin="0;goleft.end + 1s"
            attributeType="XML"
            attributeName="x"
            from="100"
            to="300"
            dur="2s"
            fill="freeze"
            ></animate>
            <animate
            id="goleft"
            begin="goright.end + 1s"
            attributeType="XML"
            attributeName="x"
            from="300"
            to="100"
            dur="3s"
            fill="freeze"
            ></animate>
            <!--动画可以叠加 freeze停止到最后的状态;repeatCount重复次数-->
            <animate
            attributeType="XML"
            attributeName="fill"
            from="red"
            to="yellow"
            dur="3s"
            fill="freeze"
            ></animate>
        </rect>
        </svg>
    </body>
    </html>

     

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>Document</title>
    </head>
    <body>
        <svg xmlns="http://www.w3.org/2000/svg" 
            style="border:1px solid red;background: #222256;"
            width="800" height="800"
            viewBox="-400 -400 800 800"
            >
            <!--  viewBox 使用 负数 设置原点为中心位置 -->
        <rect x="0" y="0" width="100" height="100" fill="red">
            <animateTransform
            id="rotate"
            attributeName="transform"
            attributeType="XML"
            type="rotate"
            from="0"
            to="360"
            dur="3s"
            fill="freeze"
            ></animateTransform>
            
        </rect>
        </svg>
    </body>
    </html>

    两个动画效果时

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>Document</title>
    </head>
    <body>
        <svg xmlns="http://www.w3.org/2000/svg" 
            style="border:1px solid red;background: #222256;"
            width="800" height="800"
            viewBox="-400 -400 800 800"
            >
            <!--  viewBox 使用 负数 设置原点为中心位置 -->
        <rect x="0" y="0" width="100" height="100" fill="red">
            <animateTransform
            id="rotate"
            attributeName="transform"
            attributeType="XML"
            type="rotate"
            from="0"
            to="360"
            dur="3s"
            fill="freeze"
            additive="sum"
            ></animateTransform>
            <!--支持两个动画效果的时候要增加属性 additive="sum" -->
            <animateTransform
            id="scale"
            attributeName="transform"
            attributeType="XML"
            type="scale"
            from="1"
            to="2"
            dur="3s"
            fill="freeze"
            additive="sum"
            ></animateTransform>
        </rect>
        </svg>
    </body>
    </html>

     

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>Document</title>
    </head>
    <body>
        <svg xmlns="http://www.w3.org/2000/svg" 
            style="border:1px solid red;background: #222256;"
            width="800" height="800"
            viewBox="-400 -400 800 800"
            >
        <rect x="-25" y="-25" width="50" height="50" fill="red">
            <animateMotion
                dur="3s"
                rotate="auto"
            >
            <mpath xlink:href="#motion-path"></mpath>
            </animateMotion>
        </rect>
            <path id="motion-path"
            d="M -100 0 L 100 100 A 150 150 0 1 0 0 -100"
            stroke="#fff"
            fill="none"
            ></path>
        </svg>
    </body>
    </html>

     使用js控制动画

  • 相关阅读:
    2020-02-26 今天学了啥?
    2020-02-25 今天学了啥?
    CSS选择器世界
    2019.12.21---今天学了啥?
    2019.12.20--今天学了啥?
    2019.12.19----今天学了啥?
    重拾算法之复杂度分析(大O表示法)
    es6之后,真的不需要知道原型链了吗?
    你真的了解FastClick吗?
    JavaScript中的对象与原型—你不知道的JavaScript上卷读书笔记(四)
  • 原文地址:https://www.cnblogs.com/xiaozhumaopao/p/12155208.html
Copyright © 2020-2023  润新知