| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115 |
- <!DOCTYPE html>
- <html lang="zh-CN">
- <head>
- <meta charset="UTF-8">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <title>SVG Attributes - Animal.js</title>
- <link rel="stylesheet" href="../demo.css">
- <style>
- .demo-visual {
- padding: 26px 30px;
- background: #151515;
- display: grid;
- grid-template-columns: 1fr 280px;
- gap: 16px;
- }
- .stage {
- background: rgba(0,0,0,0.25);
- border: 1px solid #262626;
- border-radius: 12px;
- padding: 14px;
- overflow: hidden;
- min-height: 240px;
- display: grid;
- place-items: center;
- }
- .panel {
- background: rgba(0,0,0,0.18);
- border: 1px solid #262626;
- border-radius: 12px;
- padding: 14px;
- display: flex;
- flex-direction: column;
- gap: 12px;
- }
- svg { width: 100%; height: 100%; max-height: 280px; }
- .circle {
- fill: rgba(255,159,67,0.2);
- stroke: var(--accent-color);
- stroke-width: 2;
- }
- .circle.blue {
- fill: rgba(48,133,214,0.2);
- stroke: #3085d6;
- }
- </style>
- </head>
- <body>
- <div class="container">
- <div class="page-top">
- <div class="crumb">ANIMATION › SVG</div>
- <div class="since">SINCE 1.0.0</div>
- </div>
- <h1>SVG 属性动画 (Attributes)</h1>
- <p class="description">直接通过属性名动画 SVG 特有属性,如 <code class="inline">r</code>, <code class="inline">cx</code>, <code class="inline">cy</code>, <code class="inline">width</code>, <code class="inline">rx</code> 等。</p>
- <div class="box-container">
- <div class="box-header">
- <div class="box-title">SVG Attributes code example</div>
- <div class="box-right">
- <!-- Code copy button omitted for brevity in this generator -->
- </div>
- </div>
-
- <div id="js-code" class="code-view active">
- <span class="fun">xjs</span><span class="punc">(</span><span class="str">'#c1'</span><span class="punc">)</span>.<span class="fun">animate</span><span class="punc">({</span>
- r<span class="punc">:</span> <span class="punc">[</span><span class="num">20</span><span class="punc">,</span> <span class="num">50</span><span class="punc">]</span><span class="punc">,</span>
- cx<span class="punc">:</span> <span class="punc">[</span><span class="num">100</span><span class="punc">,</span> <span class="num">150</span><span class="punc">]</span><span class="punc">,</span>
- duration<span class="punc">:</span> <span class="num">1000</span><span class="punc">,</span>
- direction<span class="punc">:</span> <span class="str">'alternate'</span><span class="punc">,</span>
- loop<span class="punc">:</span> <span class="kwd">true</span>
- <span class="punc">}</span><span class="punc">)</span><span class="punc">;</span>
- </div>
- <div class="demo-visual">
- <div class="stage">
- <svg viewBox="0 0 320 200">
- <circle id="c1" class="circle" cx="100" cy="100" r="20" />
- <circle id="c2" class="circle blue" cx="220" cy="100" r="30" />
- </svg>
- </div>
- <div class="panel">
- <button class="play-btn" onclick="runDemo()">REPLAY</button>
- </div>
- </div>
- </div>
- <script src="../page_utils.js"></script>
- <script src="../../xjs.js"></script>
- <script>
- function runDemo() {
- xjs('#c1').animate({
- r: [20, 50],
- cx: [100, 160],
- duration: 1200,
- direction: 'alternate',
- loop: true,
- easing: 'ease-in-out'
- });
-
- xjs('#c2').animate({
- r: [30, 10],
- cy: [100, 150],
- duration: 1200,
- direction: 'alternate',
- loop: true,
- easing: 'ease-in-out',
- delay: 100
- });
- }
- setTimeout(runDemo, 320);
- </script>
- </div>
- </body>
- </html>
|