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

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

新規登録して質問してみよう
ただいま回答率
85.48%
jQueryプラグイン

jQueryの拡張機能。 様々な種類があり、その数は膨大です。公開済みのプラグインの他にも、自作することもできます。 jQueryで利用できるようにしておくだけで、導入およびカスタマイズが比較的容易に行なえます。

スクロール

スクロールとは、ディスプレイスクリーン上において連続的にコンテンツが滑っていくことを指します。

JavaScript

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

Q&A

0回答

3212閲覧

ScrollMagicのトリガー付近を前後させた場合の動きが不自然になってしまいます

pitacora

総合スコア20

jQueryプラグイン

jQueryの拡張機能。 様々な種類があり、その数は膨大です。公開済みのプラグインの他にも、自作することもできます。 jQueryで利用できるようにしておくだけで、導入およびカスタマイズが比較的容易に行なえます。

スクロール

スクロールとは、ディスプレイスクリーン上において連続的にコンテンツが滑っていくことを指します。

JavaScript

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

0グッド

0クリップ

投稿2017/02/09 13:44

編集2017/02/10 04:37

ScrollMagicを使って、ある要素がトリガーに達したらフェードインし、
離れたらフェードアウトするようなページを作ろうとしています。
以下のようなコードで実装を行ってみました。
要素がトリガーに達したらaddClassし、離れたらremoveClassをして、
フェードイン・フェードアウトを実装しようとしています。

javascript

1 var scene = new ScrollMagic.Scene({ 2 triggerElement: "#sample", 3 duration :400 4 }) 5 .on("enter" , function(e) 6 $('#sample .hoge').addClass('active'); 7 $('#sample .hoge').removeClass('out'); 8 }) 9 .on("leave" , function(e){ 10 $('#sample .hoge').removeClass('active'); 11 $('#sample .hoge').addClass('out'); 12 }) 13 .addIndicators() 14 .addTo(controller);

scss

1//fade 2@-webkit-keyframes fade{ 3 0% { 4 opacity: 0; 5 } 6 100% { 7 opacity: 1; 8 } 9} 10@keyframes fade { 11 0% { 12 opacity: 0; 13 } 14 100% { 15 opacity: 1; 16 } 17} 18//fade 19@-webkit-keyframes fadeout{ 20 0% { 21 opacity: 1; 22 } 23 100% { 24 opacity: 0; 25 } 26} 27@keyframes fadeout{ 28 0% { 29 opacity: 1; 30 } 31 100% { 32 opacity: 0; 33 } 34} 35.hoge{ 36 opacity:0; 37 &.active{ 38 -webkit-animation: fade 1s ease 0.7s 1 forwards; 39 animation: fade 1s ease 0.7s 1 forwards; 40 } 41 &.out{ 42 opacity: 1; 43 -webkit-animation: fadeout 1s ease 0.7s 1 forwards; 44 animation: fadeout 1s ease 0.7s 1 forwards; 45 } 46}

html

1<div id='sample'> 2 <div class='hoge'> 3 フェードイン・フェードアウトする要素 4 </div> 5</div>

ゆっくりスクロールしていくと、期待通りにうまく動作するのですが、早くサーッとスクロールすると、
アニメーションが動かず、要素がパッと表示されてしまいます。

addClassとremoveClassの切り替えが早すぎてうまく動いてないのかもしれませんが、いい解決策のアイディアもなく困っています。
良いお知恵を拝借できないものかと投稿させていただきます。よろしくお願いします。


2017/02/10追記
debug.addIndicators.jsを使って詳しくみていると、
トリガーとなる要素のスタートやエンド付近をスクロールで前後させるとうまくいかないようです…。

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

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

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

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

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

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問