前提・実現したいこと
スクロール上下に伴って,いくつかの要素がそれぞれ可視範囲に入るとフェードイン/可視範囲外であればフェードアウトするように実装できないかといろいろと調べたところ,ScrollReveal(1)というスクリプトが思っていた形に近いので使ってみたのですが,思うように実装されません.
ローディング画面を実装するために記述したスクリプトと競合しているような気がするのですが,改善方法がわかりません.
(1)https://scrollrevealjs.org/
発生している問題・エラーメッセージ
動作を確認すると,フェードインさせたい要素(<main>)が表示されず真っ白な状態になります.
しかし,chrome上で「検証」をしたり,ブラウザのサイズを変えたりすると,表示されます.
改善方法がわからず悩んでいます.
該当のソースコード
<!DOCTYPE html> <html lang="ja"> <head> <title>test</title> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no"> <style type="text/css"> @import url('https://fonts.googleapis.com/css?family=Megrim|Cinzel+Decorative&display=swap'); svg { display: block; width: 50vw; height: 50vh; mix-blend-mode: difference; font-family: Megrim, Century Gothic;} body { height: 100vh; margin: 0 auto; } section { overflow: hidden; display: grid; place-content: center; height: 100vh; margin: auto;} .loading:before { content: ''; display: block; width: 100vw; height: 100vh; position: absolute; z-index: -1; background: center center / cover url(hero.jpg); -webkit-filter: brightness(0.35); filter: brightness(0.35);} .main { width: 100vw; height: 100vh; position: absolute; background-color: #ffffff; font-family: 'Cinzel Decorative', cursive; z-index: 1;} #hero { text-align: center;} #info { text-align: left; } </style> </head> <body> <section class="loading"> </section> <main class="main"> <section id="hero"> <div id="b1"> <h2>Section1</h2> </div> </section> <section id="info"> <div id="b2"> <div> <h2>Section2</h2> </div> </div> </section> <section id="title"> <div id="b3"> <div> <h2>Section3</h2> </div> </div> </section> </main> <script src="https://unpkg.com/scrollreveal"></script> <script> window.sr = ScrollReveal({ reset: true }); var opt_sr1 = { scale: 1, distance: 0, opacity: 0, duration: 500, delay: 500 }; sr.reveal('#b1', opt_sr1); sr.reveal('#b2', opt_sr1); sr.reveal('#b3', opt_sr1); </script> <script src="https://code.jquery.com/jquery-3.4.1.min.js" integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=" crossorigin="anonymous"></script> <script> var $d = jQuery.noConflict(); $d(function() { var h = $d(window).height(); $d('.main').css('display','none'); }); setTimeout(function(){ $d('.loading').delay(1200).fadeOut(1000); },1000); setTimeout(function(){ $d('.main').delay(1000).fadeIn(500); },2000); </script> </body> </html>
試したこと
・ScrollRevealのみであれば,正常に動作しました
・仮に,#b1のみ,最初から表示させるように,
<script> window.sr = ScrollReveal({ reset: true }); var opt_sr1 = { scale: 1, distance: 0, opacity: 0, duration: 500, delay: 500 }; sr.reveal('#b2', opt_sr1); sr.reveal('#b3', opt_sr1); </script>
というようにしても,改善されませんでした

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/06/24 06:00