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

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

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

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

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

Q&A

解決済

1回答

3226閲覧

ReactとAnimsitionを使って、コンポーネント切り替えにアニメーションを追加したい

marutama_giant

総合スコア16

JavaScript

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

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

0グッド

0クリップ

投稿2018/08/27 07:54

編集2018/08/27 07:56

Reactで画面切り替え(ページの遷移はありません)をおこなう際にアニメーションを付与したいと考えています。エラーなどは出ていないのですが、正常に動いておらず困っています。

<開発環境>

React: 16.4.2
Animsition
http://git.blivesta.com/animsition/

下記のソースコードで実行すると、ローディング画面のものがずっと動いているような画面になってしまいます。

ソースコード

scrren-oneからscreen-twoへ「次へ進む」を押した時に遷移できるような仕様にしたいです。

JavaScript

1class App extends Component { 2 constructor(props) { 3 super(props); 4 5 this.state = { 6 screens: { 7 first: true, 8 second: false, 9 }, 10 } 11 12 13 // Screen2へ遷移する場合の処理 14 _next = event => { 15 this.setState({ 16 screens: { 17 first: false, 18 second: true 19 } 20 }); 21 } 22 23 render() { 24 return ( 25 <div className="App"> 26 <section 27 id="screen-one" 28 style={{ display: this.state.screens.first ? 'block' : 'none' }} 29 > 30 31 <a href="#screen-two" className="animsition" onClick={this._next}>次へ進む</a> 32 </section> 33 34 <section 35 id="screen-two" 36 style={{ display: this.state.screens.second ? 'block' : 'none' }} 37 > 38 39 </section> 40 </div> 41 } 42}

JavaScript

1$(document).ready(function() { 2 $(".animsition").animsition({ 3 inClass: 'fade-in-up', 4 outClass: 'fade-out-up', 5 inDuration: 1500, 6 outDuration: 800, 7 linkElement: '.animsition-link', 8 // e.g. linkElement: 'a:not([target="_blank"]):not([href^="#"])' 9 loading: true, 10 loadingParentElement: 'body', //animsition wrapper element 11 loadingClass: 'animsition-loading', 12 loadingInner: '', // e.g '<img src="loading.svg" />' 13 timeout: false, 14 timeoutCountdown: 5000, 15 onLoadEvent: true, 16 browser: [ 'animation-duration', '-webkit-animation-duration'], 17 // "browser" option allows you to disable the "animsition" in case the css property in the array is not supported by your browser. 18 // The default setting is to disable the "animsition" in a browser that does not support "animation-duration". 19 overlay : false, 20 overlayClass : 'animsition-overlay-slide', 21 overlayParentElement : 'body', 22 transition: function(url){ window.location.href = url; } 23 }); 24});

根本的に遷移のやり方がが間違っているのかもしれません。
なにかいいアイデアがあれば教えていただければと思います。

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

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

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

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

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

guest

回答1

0

ベストアンサー

それはReactを始めとするJSフレームワーク全般とjQueryが相反する概念のツールだからです。
基本的にJSフレームワークとjQueryは同時に使用してはいけません。

jQueryはDOMを手作業で書き換える事で画面の変更を促します。
アニメーションも1秒間に約60回のペースで、まるでパラパラ漫画のようにstyle属性のCSSプロパティ値を書き換える事でアニメーションを実現させています。

Reactを含むJSフレームワークは自分のフレームワークの世界に変数をもたせて、
テンプレートを読み込ませて上げつつ、変数に従って常に最新のDOMを表示するようにしろと命令します。
要するに「jQueryやDOM APIを使ってHTMLを変更する事自体が人間のやることじゃない」と言ってるわけですね。

なので基本的にJSフレームワークというのはアニメーションと相性が良くないものなのです。
CSSアニメーションで頑張るべきなのですが、
JSフレームワークを使いつつJS主導のアニメーションがしたいというライブラリも多く実装されているようです。

この辺の記事を読みながらReactでのアニメーション用のライブラリを探してみてください。
https://qiita.com/nabepon/items/c005a7d4491fd04b453e

投稿2018/08/27 08:14

miyabi-sun

総合スコア21158

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

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

marutama_giant

2018/08/30 10:53

ありがとうございます。ご指摘通り対応していきます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問