前提・実現したいこと
現在jsonで受け取ったdataをjqueryで取得し、svgアニメーション
を使って棒グラフに描画したいと考えています。
anime.js
を使用してアニメーションを実現しようとしているのですが、うまくいかずに困っています。
よろしければアドバイス等いただけますでしょうか。
グラフに関しては、以下画像内グラフの赤い部分(灰色の部分は固定)に取得したデータを反映させ、
ボックスの高さと相対的に高さを動的に変更させたいと考えています。
グラフに反映させるデータは以下サンプルコードscriptファイル内のsampleData.list.valを反映させたいと考えています。
情報が少ない中大変恐縮ですが、早急に動かす必要がでてきたため質問させていただきました。
どうぞ、よろしくお願いいたします。
該当のソースコード
html
1<!DOCTYPE html> 2<html lang="js"> 3 <head> 4 <meta charset="UTF-8" /> 5 <meta name="viewport" content="width=device-width, initial-scale=1.0" /> 6 <meta http-equiv="X-UA-Compatible" content="ie=edge" /> 7 <title>Document</title> 8 <link rel="stylesheet" href="./css/reset.css" /> 9 <link rel="stylesheet" href="./css/style.css" /> 10 </head> 11 <body> 12 <div class="container"> 13 <div class="svg-wrapper"> 14 <div class="svg-inner-wrapper"> 15 <div class="svg-item"> 16 <div class="svg-item__inner-wrapper"> 17 <div class="svg__img-wrapper"> 18 <p class="svg__text"> 19 テスト 20 </p> 21 <svg 22 class="svg" 23 data-name="svg" 24 xmlns="http://www.w3.org/2000/svg" 25 xmlns:xlink="http://www.w3.org/1999/xlink" 26 width="60" 27 height="50" 28 viewBox="0 0 132 90" 29 > 30 <defs> 31 <style> 32 .cls-1 {fill: #e0e0e0;} 33 .cls-2 {fill: #ffc1cd;} 34 </style> 35 </defs> 36 <rect class="cls-1" x="11" y="30" width="110" height="60" /> 37 <rect class="cls-2" x="11" width="110" height="30" /> 38 </svg> 39 <p class="svg__date"></p> 40 </div> 41 </div> 42 </div> 43 </div> 44 </div> 45 </div> 46 <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> 47 <script src="./js/anime.min.js"></script> 48 <script src="./js/script.js"></script> 49 </body> 50</html> 51
css
1.container { 2 position: relative; 3 width: 100%; 4 height: 100vh; 5} 6.svg-wrapper { 7 width: 300px; 8 height: 300px; 9 border: 2px solid rgba(0, 0, 0, 0.54); 10 border-radius: 8px; 11 position: absolute; 12 top: 50%; 13 left: 50%; 14 transform: translate(-50%, -50%); 15} 16.svg-inner-wrapper { 17 position: relative; 18 width: 100%; 19 height: 100%; 20} 21.svg-item { 22 position: absolute; 23 bottom: 0; 24 left: 50%; 25 transform: translate(-50%, 0); 26} 27.svg__text { 28 font-size: 12px; 29 text-align: center; 30} 31
javascript
1$(function() { 2 // 以下グラフで使用するサンプルデータ 3 var sampleData = { 4 list: [ 5 { 6 date: "201901", 7 val: "1" 8 }, 9 { 10 date: "201902", 11 val: "2" 12 }, 13 { 14 date: "201903", 15 val: "3" 16 }, 17 { 18 date: "201904", 19 val: "4" 20 } 21 ] 22}; 23 24 // 以下にanime.jsを用いてアニメーションを行う記述を書こうと考えています。 25}); 26
あなたの回答
tips
プレビュー