質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.48%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

Q&A

解決済

1回答

1962閲覧

JavaScriptとCSSにそれぞれ書かれたduration処理を同時に行いたい

退会済みユーザー

退会済みユーザー

総合スコア0

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

0グッド

2クリップ

投稿2017/04/12 08:28

編集2017/04/12 10:30

###前提・実現したいこと
JavaScriptに1秒掛けて動くアニメーション処理を、CSSに1秒掛けてシャドウを掛ける処理を書き、それを同時に動かしたいです。

現在、JavaScriptに1秒掛けて動くアニメ処理を、CSSにマウスオーバーで1秒掛けてシャドウが掛かる処理を書き、同時に動かそうとしましたが、
「先に1秒掛けてシャドウ掛かり、もう1秒掛けてアニメーションの処理が動く」状態になってしまっています。
同時に動かす方法は無いのでしょうか。
アドバイスお願いします。

###該当のソースコード
index.html

html

1<!DOCTYPE html> 2 <lang = "ja"> 3 <head> 4 <link rel = "stylesheet" href = "elements.css" /> 5<script type = "text/javascript" src = "anime.min.js"></script> 6<script type = "text/javascript" src = "animeElements.js"></script> 7 8 </head> 9 10 <body> 11 <div class = "square shadow" /> 12 13 <script type = "text/javascript"> 14 var target = document.querySelector('.square'); 15 target.addEventListener("mouseover",function(){ animeElements(target)},false); 16 17 </script> 18 </body> 19</html>

animeElements.js

JavaScript

1function animeElements(target){ 2/* anime-min-jsを基に要素にアニメーションをつける */ 3 anime({ 4 targets: target, 5 scale:{ 6 value: 1.1, 7 duration: 800, 8 delay: 200, 9 easing: 'linear' 10 }, 11}); 12}

elenemts.css

css

1.square { 2 width: 200px; 3 height: 200px; 4 background: blue; 5 6} 7 8.shadow { 9 -webkit-transition-duration: 1s; 10 -moz-transition-duration: 1s; 11 -ie-transition-duration: 1s; 12 transition-duration: 1s; 13} 14 15.shadow:hover { 16 -webkit-filter: drop-shadow(2px 2px 4px #888); 17 -moz-filter: drop-shadow(2px 2px 4px #888); 18 -ie-filter: drop-shadow(2px 2px 4px #888); 19 filter: drop-shadow(2px 2px 4px #888); 20 21}

###補足情報(言語/FW/ツール等のバージョンなど)
アニメ処理にはanime-jsを使用、duration処理で1秒掛けてアニメーションを行っています。

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

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

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

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

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

kei344

2017/04/12 08:47

コードは省略せず書かれた方が回答を得やすいと思います。
guest

回答1

0

ベストアンサー

elenemts.css の transition の指定が原因です。

css

1.shadow { 2 -webkit-transition-duration: 1s; 3 -moz-transition-duration: 1s; 4 -ie-transition-duration: 1s; 5 transition-duration: 1s; 6}

これを修正して、

css

1.shadow { 2 -webkit-transition: 1s -webkit-filter; 3 -moz-transition: 1s -moz-filter; 4 -ie-transition: 1s -ie-filter; 5 transition: 1s filter; 6}

にしてください。

理由

transition: 1s filter;transition-duration: 1s; transition-property: filter; のショートハンドです。
transition-property に値を指定すると、そのプロパティだけトランジション効果が適用されます。

修正前の指定方法では transition-property に値が指定されていないため、すべてのプロパティにトランジション効果が適用されます。
すると anime.js での scale のアニメーションにもトランジション効果が適用されるので、anime.js でのアニメーションに加えてトランジション効果が加わるため、おかしなことになって動作が遅れます。

なので修正後のように、transition-property: filter; を指定してやればオーケーです。

提案

transition にはベンダープレフィックスはほぼ必要ないので、もっとシンプルに書いてはどうですか?

css

1.square { 2 width: 200px; 3 height: 200px; 4 background: blue; 5} 6.shadow { 7 transition: 1s filter; 8} 9.shadow:hover { 10 filter: drop-shadow(2px 2px 4px #888); 11}

Can I use... CSS3 Transitions
(付けるにしても -webkit- だけで十二分です。-ie-というプレフィックスは存在しないと思います。)

提案2

scale を操作する程度なら anime.js を使わなくとも transition で代用できます。

css

1.square { 2 width: 200px; 3 height: 200px; 4 background: blue; 5} 6.shadow { 7 transition: 1s filter, .8s .2s transform linear; 8} 9.shadow:hover { 10 filter: drop-shadow(2px 2px 4px #888); 11 transform: scale(1.1); 12}

(-webkit- を指定していいかもしれません。)

質問とは関係ないけど修正したほうがいいところ

  • <lang = "ja"><html lang="ja">
  • <div class = "square shadow" /><div class="square shadow"></div>
  • = の前後はスペースを入れず、type="text/javascript" のように書く

投稿2017/04/12 13:54

編集2017/04/12 14:09
kura

総合スコア368

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

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

退会済みユーザー

退会済みユーザー

2017/04/13 05:37

有難うございました、無事に同時に動かすことが出来ました。 文法の修正点もとても参考になりました。 色々なサイトを基に見様見真似でコードを書いていたので適切な文法を知る事が出来て良かったです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問