前提・実現したいこと
スクロールして画面指定位置で要素をアニメーションさせるものを作っています。詳しく言うと、スクロールすると画像や見出しと文字が太いラインが横スライドしてから、それらが出てきます。また文章Pは同時にフェードインして出てきます。
発生している問題
現在のコードでは繰り返しスクロールしても上記のようにして出てきます。しかし私は、2回目以降のスクロールは、繰り返したくないのですが、JSにどのようなコードを追記したら良いのかわかりません。初回と回にには何入れたら良いのでしょうか?```
どの部分がスペルミスになっていますか?
そのコードどこにjsのどこに付け足したら良いのでしょうか?
html, body, div, span, h1, h2, h3, h4, h5, h6, p, a, img, ul, li, article, figure, figcaption, footer, header, menu, nav, section { margin: 0; padding: 0; border: 0; font-size: 100%; font: inherit;/*vertical-align: baseline;*/ } * { box-sizing: border-box; -ms-box-sizing: border-box; -o-box-sizing: border-box; } /*flexbox*/ .flex { display: -webkit-flex; display: -moz-flex; display: -ms-flex; display: -o-flex; display: flex; flex-wrap: wrap; -webkit-flex-wrap: wrap; } .flex--start { justify-content: flex-start; -webkit-justify-content: flex-start; } .flex--center { justify-content: center; -webkit-justify-content: center; } .flex--end { justify-content: flex-end; -webkit-justify-content: flex-end; } .flex--bet { justify-content: space-between; -webkit-justify-content: space-between; } /*画面幅*/ .hero { margin-bottom: 120px; max-height: 600px; overflow: hidden; } /*画像幅*/ .hero__img { height: auto; width: 100%; } /*画像と画像の間隔*/ .sec { margin-bottom: 120px; } .img-container { overflow: hidden; position: relative; } .img-container__img { display: block; opacity: 0; position: relative; transition: all .5s .3s ease; z-index: 0; } /*画像スクロールした時の色*/ .img-container:before { background: #F9FF00; content: ''; display: block; height: 100%; position: absolute; transform: translateX(-100%); transition: all .8s 0s ease; width: 100%; z-index: 1; } /*文字幅位置*/ .text-container { padding: 0 60px; } /*見出しの文字色と大きさと太さ*/ .text-container__title { color: #333; display: inline-block; font-size: 210%; font-weight: 600; overflow: hidden; position: relative; z-index: 0; } /*見出し文がスクロールした時に出てくる色*/ .text-container__title:before { background: #F9FF00; content: ''; display: block; height: 100%; position: absolute; transform: translateX(-100%); transition: all .8s .3s ease; width: 100%; z-index: 1; } /*スクロールすると文字がフェードして出てくる*/ .text-container__title__inner { display: inline-block; opacity: 0; transition: all .8s .5s ease; } /*同上*/ .text-container__text { left: -50px; font-size: 20px; opacity: 0; position: relative; transition: all .5s .5s ease; } /*アニメーションするプロパティを設定します*/ .img-container.active img { opacity: 1; } .img-container.active:before { transform: translateX(100%); } .text-container.active .text-container__title:before { transform: translateX(100%); } .text-container.active .text-container__title__inner { opacity: 1; } .text-container.active .text-container__text { left: 0; opacity: 1; } コード
<html> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width"> <title>トップページ</title> <script src="java/jquery-3.3.1.min.js"></script> <script src="java/jquery.waypoints.min.js"></script> <script src="java/smooth-scroll.js"></script> <script>$('.img-container').waypoint(function(direction){ var activePoint = $(this.element); //scroll down if (direction === 'down') { activePoint.addClass('active'); } else{ activePoint.removeClass('active'); } },{offset : '70%'}); $('.text-container').waypoint(function(direction){ var activePoint = $(this.element); //scroll down if (direction === 'down') { activePoint.addClass('active'); } else{ activePoint.removeClass('active'); } },{offset : '70%'}); }); jQuery(function($){ // #で始まるアンカーをクリックした場合に処理 jQuery('a[href^="#"]').click(function() { // スクロールの速度 var speed = 400; // ミリ秒 // アンカーの値取得 var href= jQuery(this).attr("href"); // 移動先を取得 var target = jQuery(href == "#" || href == "" ? 'html' : href); // 移動先を数値で取得 var position = target.offset().top; // スムーススクロール jQuery('body,html').animate({scrollTop:position}, speed, 'swing'); return false; }); }); </script> </head> <body> <section> <div class="fadein"> <h3>見出し</h3> </div> <section class="sec"> <div class="flex flex--bet"> <figure class="img-container col2"> <img class="img-container__img" src="画像" alt="img01"> </figure> <div class="text-container col2"> <h2 class="text-container__title"><span class="text-container__title__inner">見出しh2</span></h2> <p class="text-container__text"> 文章 </p> </div> </div> </div> </section> <section class="sec"> <div class="flex flex--bet"> <div class="text-container col2"> <h2 class="text-container__title"><span class="text-container__title__inner">見出し</span></h2> <p class="text-container__text"> 文章 </p> <!--<figure class="img-container col2">--> <div class="fadein"> <div class="imgWrap"> </div> </div> <!--</figure>--> </div> <!--text-container--> <figure class="img-container col2"> <img class="img-container__img" src="画像" alt="img01"> </figure> </div> <!--flex-bet--> </section> </section> </head> </html> コード
退会された同じ方ですかねえ… https://teratail.com/questions/158422
元の質問が削除依頼中なので確認できませんが、この内容ですとやりたいことは書いてあってもどのような問題が発生しているのかわかりません。質問は何でしょうか
2回目以降のスクロールは表示されっぱなしにしたいのですが、そのやり方がわかりません。わかりましたでしょうか?
そのやり方がわからない問題です。
実装したいことがちゃんと書いてあるのにもかかわらず、なぜわからないのでしょうか?
質問本文に追記してください
したいこと→コード だけではそのコードで何が起きてるかわかりませんよ?何が問題かを聞いているのであって、やりたいことを聞いているわけではありません。直接的な表現で言うと丸投げです。
「現在のコードで起きている問題を記載してください」 です。「わからない」だけだと丸投げです。何かしら調べたり試したりしたのでしょうか?書いてある内容しか見ている人は知りません。あなたがやりたいことのために何を調べ何を試したのか記載し、そのうえでどのような回答が欲しいのかを明確にしてください。調べ方だけ教えればなんとかできるのかどうかとか、どのレベルでの回答をすべきか見ている人はわかりません。もちろん「コードください」だけでは丸投げです。私は回答したくないわけでも要件に対してなにも知見を持っていないわけでもありません。ただ、「質問になっていない」ことを指摘しています。そのあたりきちんと書くようにしないと何度退会してやりなおしても質問を立て直しても得たい回答は得られませんよ
ちゃんと調べたりはしました。この先質問になっていないなどと主張しましたら、退会します。もう2度と、ここの会員にはなりません。このスクロールアニメションはちゃんと調べてやりました。
そのあたり「質問するときのヒント」を読まれたら分かることもあるかと。質問者さんが今どこまでできていて何ができていないか、どう調べて何をやったか は回答するために必要な情報です。 退会するのは自由ですが同じやり方ならどこにいっても得たい回答は得られないと思いますよ。
いきなり出てきたこのURLは何でしょうか。何の説明もなしにURLを提示されるのは全く事情を知らない赤の他人からすると非常にこわいことです(広告や不正なサイトへの誘導も可能ですし。疑っているわけではありませんが配慮は必要です)。要件として大事なことなので質問に追記していただけますか?こちらのコメント欄はデフォルト非表示で目につきにくいですし、質問本文との関連性も分かりづらくなります。
私が何度も何ども同じ質問してここまで調べてやって明確に質問しているはずなのに、返事いただけないのでもう諦めて退会します。もう2度と会員にはなりません。ありがとうございました。
回答したんですけど・・。
もし「回答になっていない」と言うのでしたら、そこは何がどうなっていないのかとか何が分からないのかとかご指摘いただければ、解説はします。(現在の質問内容からこれ以上の回答は難しい旨はご理解いただけたらと)
これでも回答が難しいなら退会します。
30分ほど前に現在の質問内容から出来うる回答をしていますよ。どこまで見られているかわかりませんが…
localstrageでしょうか?
見たのですがよくわかりません。
回答に関するコメントであれば回答につけてください。何度も言ってますが今の質問内容からできうる回答はあれくらいです。細かいですがスペルミスされてます。プログラムは指示した通りにしか動きませんのでスペルミスは致命的になります
localstrage ←スペルミス oが足りない。正しくは localStorage
(2回目)回答に関するコメントであれば回答につけてください。