🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
SVG

SVGは、XMLを基盤とした2Dベクター画像記述言語。画像を線・面といった図形の集合体として扱うベクター画像のため、環境に適した表示が可能です。アニメーション機能もサポートされており、簡単なインタラクティブコンテンツ作成もできます。

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

Q&A

解決済

3回答

671閲覧

WEBでアニメーションを作るのに今一番いいのは何でしょうか?

hirohiro121212

総合スコア15

SVG

SVGは、XMLを基盤とした2Dベクター画像記述言語。画像を線・面といった図形の集合体として扱うベクター画像のため、環境に適した表示が可能です。アニメーション機能もサポートされており、簡単なインタラクティブコンテンツ作成もできます。

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

0グッド

1クリップ

投稿2019/11/14 13:09

編集2019/11/14 14:08

WEBサイトのトップページに、ちょっとしたアニメーションをつけて欲しい案件があるのですが、、

WEBアニメーションAPIや、anime.jsや、Adobe animeCCとか、ちょっと複雑そうな感じでgreensock.comとか、、、
他にもいろいろ色々ありすぎて、、どれを選んで習得すればいいのかわかりません!!

出来れば、adobeじゃないほうが毎月課金されないので助かります!!

すみません!肝心な何がやりたいかといいますと、、

背景に山や町や牧場のイラストをところどころに置いて、トラックが走り、牧場で牛を乗せて、走り去ったり、
他のトラックは、反対側から来て肥料や餌の袋を牧場に配達して置いてゆくみたいなのをやりたいのです。

移動は、基本的には横方向だけで構いません。

y軸方向は特に動かさなくてもいいのです。。


荷台が空のトラックが、画面左端から出てきて⇒画面途中の牧場の前で一旦止まり⇒牛を乗せて、牛が乗ったら⇒画面右端から見えなくなるまで走り去る⇒右端から走り去ってから数秒後に、また左端から荷台が空のトラックが出てきて⇒あとは同じことの繰り返しループです。


イメージ説明

コードを入れます。おかしなところだらけだと思います。
nimotu(荷物)の部分は牛になります。ただ、まだ、途中で挫折していたので、中途半端です。。

というか、anime.js使う必要もないんですね。。

<html> <head> <meta charset="utf-8"> <title>テスト</title> <script src="js/anime.min.js"></script> </head> <body> <style> .link{ padding:5px; text-decoration:none; } #animeWAKU{ position:relative; } #target{ position:absolute; width:100px; margin:10px 0; display: flex; z-index:2; top:65px; } #nimotu{ position:absolute; width:100px; margin:10px 0; display: flex; z-index:1; top:65px; } .yama01{ position:absolute; left:0; z-index:99999; height:150px; } .yama02{ position:absolute; right:0; z-index:99999; height:150px; } #main{ width:1000px; margin: 0 auto; padding-top: 200px } </style> <div id="animeWAKU"> <img src="img/yama01.png" class="yama01"> <div id="target"><img src="img/track.png"></div> <div id="nimotu"><img src="img/nimotu.png"></div> <img src="img/yama02.png" class="yama02"> </div> <div id="main"> <!-- ここアニメの下のWEBページの内容を入れる --> </div> <script> anime({ targets: '#target', loop: true, translateX: [ { value: 350, duration: 1000, delay: 300, elasticity: 0, duration: 2500, easing: 'easeInOutQuad'}, { value: 1500, duration: 1000, delay: 800, elasticity: 0, duration: 5500, easing: 'easeInOutQuad' }, ], }); anime({   targets: '#nimotu', loop: true,   width: '100%', translateX: [ { value: 350, duration: 1000, delay: 300, elasticity: 0, duration: 2500, easing: 'easeInOutQuad'}, { value: 1500, duration: 1000, delay: 800, elasticity: 0, duration: 5500, easing: 'easeInOutQuad' }, ], }); </script> </body> </html>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Res

2019/11/14 13:15

タグにsvgとありますがsvgはどう関係があるのでしょうか。
Res

2019/11/14 13:17

これをsvgで...? サンプルの画像などありますか...? 想像しにくいです。
hirohiro121212

2019/11/14 13:17

すみません、SVGアニメとかおもったのですが、、関係ないですね。。申し訳ありません! ピッタリのタグが出てこなかったもので。。
hirohiro121212

2019/11/14 13:18

ちなみに、タグの入力方法って、自分が入れたいキーワード入れても、入らず、元々あるようなものしか受け付けないのでしょうか?そんな感じにおもっていました
Res

2019/11/14 13:19

まあいいですよ。 アニメーションが単純であれば(単純でなくとも)CSSでできますね。 やる気があればですけど。
hirohiro121212

2019/11/14 13:37 編集

CSSでやったことはあるんですが、、 それは、ただ左端から右端へ車が動き、もう1台右端から左端へ走るというループでした。 しかし、今回やりたいのは、 途中で一回止まって、そこの場所にいる牛を乗せて走り去るというアニメの動きになります。 トラックと牛のアニメーションを2つ作っておいて、 トラックをz-index:100とかで手前にしておいて、牛を背後のz-index:1とかで、 あとは、トラックは、画面左端から右端から見えなくなるまでなので、0%~牧場の位置まで動かし、その後、100%の間で動かし、 牛は、開始位置を%で指定できれば指定し、そこから右端100%までトラックと同じタイミングで動かせば出来そうに思うんですけど、、 anime.jsでやろうとすると、牛の始めの位置(スタート位置)を指定するプロパティが見つからないんです。
hirohiro121212

2019/11/14 13:35

あと、anime.jsってtranslateX:のvalueをpxでどこまで動かすか指定できるんですけど、%で指定できるのかわかりません。。また、アニメを開始するタイミングの時間が設定できるんですけど、、開始する位置(牛の場所)とか設定できるのかできないのか、まだよくわかりません。調べまくっているんですが、できないような気がしていて。。
miyabi_takatsuk

2019/11/14 14:09 編集

まず、タイトルと質問本文が合致しないかと。 タイトルでは、現代のトレンドはなに?という内容なのに、本文は、これやるには具体的にどうすれば?といった内容になってます。 さて、SVGのパスを動かさないのであれば、SVGアニメーションという分野には該当しないかと。 CSSアニメーションは、回転だろうが、大きさ変化だろうが、3Dだろうが、一時停止、スタートとか、なんでもできますよ。 suzu12さんが仰るとおりやる気はかなり必要ですけどね。 (調整がめんどくさいうえに、場合によってはJavaScriptも必要になるから) 今の段階でもいいので、自分で書いたコードを記載してください。 でないと丸投げ質問になってしまうかと。 また、コメントでだしていただいた、やりたいこと、条件なども、追記してください。 質問本文は修正できます。
guest

回答3

0

ベストアンサー

この程度でしたらJavaScriptかCSSのkeyframeでできます。(サンプルコードは明日までに提示します

めんどくさいのでjQueryで書いています

HTML

1<img id=ushi src=> 2<img id=house src=> 3<img id=track src=>

CSS

1* { 2 margin: 0; 3 padding: 0 4} 5img { 6 position: absolute; 7 top: 0; 8 left: 0; 9 width: 200px 10} 11#track { 12 z-index: 100; 13 left: -200px 14} 15#ushi { 16 z-index: 50; 17 left: calc(50vw - 100px) 18} 19#house { 20 left: calc(50vw - 100px) 21}

jQuery

1 2const loopTime = 10000; //繰り返し時間 3const width = 200; //要素の幅 4const stopTime = 1000; //停車時間 5const spead = 1; //速さ(小さいと早い) 6const supsp = 1; //速さ(大きいと早い・大きくしすぎるとカクカクになる) 7 8const tochu = window.innerWidth / 2 - width / 2; 9setInterval(function(){ 10 i= - width; 11 car = setInterval(function(){ 12 if(tochu>i){ 13 document.getElementById('track').style.left = i + 'px'; 14 } else if(i>window.innerWidth+stopTime) { 15 clearInterval(car); 16 } else if (i>tochu+stopTime) { 17 document.getElementById('track').style.left = i - stopTime + 'px'; 18 document.getElementById('ushi').style.left = i - stopTime + 'px'; 19 } 20 i += supsp; 21 }, spead); 22 document.getElementById('ushi').style.left = tochu + 'px'; 23}, loopTime); 24

サンプル

投稿2019/11/14 13:57

編集2019/11/15 05:35
kyoya0819

総合スコア10429

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hirohiro121212

2019/11/14 14:10

そうなのですね、すみません。。
kyoya0819

2019/11/14 23:36

追記しました。keyframeでは試されたそうなのでjQueryで書きました。
kyoya0819

2019/11/15 01:07

別にダメではないです。スライダーとかは無限ループの典型的な例です。 ただ個人的には鬱陶しいので最初の一回だけで良いとは思います。
hirohiro121212

2019/11/15 01:16 編集

スライダー、そうですね。 ちなみに、プログラム系は本当に知識が乏しく、ずっと繰り返す方法がwhileとか、forだとは何となくわかるのですが、調べても回数制限があるものしか見つからず、、困っております。。 また、今途中で乗せた家畜さんを、途中の牧場でまた降ろして、走りさるとかも出来るのでしょうか? 処理を何個でも追加できるのでしょうか?
kyoya0819

2019/11/15 01:19 編集

forの無限ループでは実現不可能です。 setIntervalを使うと良いです。 処理の追加はJsをいじればいくらでも可能です。
hirohiro121212

2019/11/15 01:32

<script> $(function(){ setInterval(function(){ var tochu = null; var tochu = $('#katiku').position().left; $('#track').animate({'left':tochu},3000,'swing'); $('#track').delay('1000').animate({'left':window.innerWidth},3000,'swing'); $('#katiku').delay('4000').animate({'left':window.innerWidth},3000,'swing'); },1000); }); </script> 色々知識に乏しいものでして、、なんだか、tochuの地点からのバックしたり、行ったり来たりになってしまい、初めから繰り返せません。。涙; http://itnet-biz.com/animejstest/tech.html 変数を初期化するとかだろうとおもうのですが、本当に情けないです。。
kyoya0819

2019/11/15 01:33

少々お待ちください。 サンプルを書き直します、
hirohiro121212

2019/11/15 01:39

お手数おかけしてすみません、、ありがとうございます!!m(_ _)mm(_ _)mm(_ _)mm(_ _)mm(_ _)mm(_ _)m
kyoya0819

2019/11/15 02:17 編集

jQuery使わない方法で書きました。 (HTML,CSSは変更なし)
hirohiro121212

2019/11/15 04:21 編集

ありがとうございます! 思った繰り返しができてありがたいです。 ただ、前のものと比べ、私にはちょっと難しくなりました。。 トラックのスピードを遅くしたり、アニメーションの開始のタイミングをすぐに始めたいとおもうのですが、いろいろいじろうとしても自分の力量ではおよびません。。。 (x x;) http://itnet-biz.com/animejstest/tech02.html jqueryで動いていたものを単純にループのコードを追加するだけという方法はできないのでしょうか?
kyoya0819

2019/11/15 05:16

ではもう少し簡単に調整できるスクリプトに書き直します。 jQueryでも可能なのですが細かい部分の調整がなかなかできないので素のJSで書きました。
hirohiro121212

2019/11/15 05:46 編集

ありがとうございます! ページを開いてからすぐに、アニメーションを開始し、右端から消えたら、すぐにまた左端から出して動かしたく、 また、小屋と、家畜の位置も左や右に少し動かしたいとおもい、いろいろいじってみたのですが、うまくできません。。
guest

0

Lottieはおすすめですよ。
Airbnbが開発してますし

投稿2019/11/14 13:16

taiyakix

総合スコア427

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hirohiro121212

2019/11/14 13:44

Lottieですね、それもみていたんですけど、難しそうな感じがしたのですが、 私がやりたいことをやる場合、短時間でできるようなものなのでしょうか?
hirohiro121212

2019/11/14 13:48 編集

Lottieの場合、ブラウザ幅を広げたり、縮めたりしたばあいでも、 横方向の動きで、 ブラウザの左端から車がでてきて、何%(任意の場所)の所で一旦止まり、数秒後にまた動き出して、ブラウザの右端から見えなくなるまで動かすような動きもできるのでしょうか? それとも、アニメの部分は固定で、それを単純にWEBに組込みという感じなのでしょうか?
taiyakix

2019/11/14 23:13

かんたんにやりたいなら僕もkeyframeを推します。 2. 多分組み込みです。
hirohiro121212

2019/11/15 01:34

そうなのですね、いづれにしてもその時その時で中途半端なんです。すみません!! アドバイスをありがとうございます。
guest

0

制作に必要とするスキルが最も低いのはアニメーション GIF だと思います。
適当なアプリを探せば、後はパラパラ漫画です。

ただ、許容できる要件は限定的になると思います。

追記
中で何やってるのか理解する必要がない!ってことであれば、
Google Web Designer
を使用するのもお手軽です。

投稿2019/11/15 04:27

編集2019/11/15 04:54
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hirohiro121212

2019/11/15 05:35

いろいろあるんですね。。ありすぎてどこに焦点をあって習得すれば良いのか迷います。。(xx;)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問