スクロールしたら要素をフワっとアニメーションして、表示させる方法を紹介!

Поделиться
HTML-код
  • Опубликовано: 30 ноя 2024

Комментарии • 78

  • @webFrontEndChannel
    @webFrontEndChannel  Год назад

    よくご質問いただく動画だったので、動画の概要欄にファイルをダウンロードできるサイトのURLを貼り付けておきました!
    サイト内のダウンロードボタンからファイル一式をダウンロードできますので、ご活用ください!

  • @saco-h1s
    @saco-h1s 2 года назад

    座学後の初学者です。
    とってもとっても有益な動画でした!
    1人では全然できなかった
    やりたかったフワッと表示がこちらの動画でできそうなので、
    何度も繰り返して見て、ポートフォーリオに実装していきます!
    説明もわかりやすかったです。つまづいた時に、
    どこを見て確認しているのかも参考になりました。
    他の動画も参考にさせていただきます。
    このような動画を作成いただき、ありがとうございます!

  • @qiliang6667
    @qiliang6667 3 года назад +3

    いろいろ詰まったとても勉強になる内容でした。
    ありがとうございました!

  • @tanaka_diver
    @tanaka_diver 3 года назад

    色々つまづきましたが、出来ましたー😭感動です😭ありがとうございます!!

  • @kotaroyazawa3006
    @kotaroyazawa3006 4 года назад

    ちょうど実装したい内容で、非常に参考になりました。ありがとうございます!
    動画を見ながらハンズオンで実例に応用することで、理解を深めることができました。
    RUclipsで色々なプログラミング動画を見ていますが、最もわかりやすいと思います。今後ともよろしくおねがいします!

    • @webFrontEndChannel
      @webFrontEndChannel  4 года назад +1

      参考にしていただけたようでよかったです!
      今後も分かりやすい動画を作っていければと思います、こちらこそよろしくお願い致します。

  • @HP-vv2gx
    @HP-vv2gx 4 года назад +6

    これはすごい!初学者すぎて何時間かけたってぐらい時間かかったけど最後動いた時気持ち良すぎる!ありがとうございます!

  • @濱田幸一-i6g
    @濱田幸一-i6g 4 года назад

    フロントエンドエンジニアを目指して勉強中です。やっと自分が見たかった動画に出会えました!
    全部見て勉強します!!

    • @webFrontEndChannel
      @webFrontEndChannel  4 года назад

      そう言っていただけると嬉しいです♪
      動画はたくさんあって大変だと思いますが、頑張ってくださいね!

  • @takuya6008
    @takuya6008 2 года назад

    とても参考になりました。

  • @西川美紗子
    @西川美紗子 4 года назад

    すごいわかりやすい説明で大変勉強になります!
    ありがとうございます
    今まで見た動画の復習もできる内容なので理解度が高められてうれしいです。

    • @webFrontEndChannel
      @webFrontEndChannel  4 года назад

      わかりやすい説明と感じてもらえてよかったです!
      今後ともよろしくお願い致します。

  • @さとさと-j6j
    @さとさと-j6j 4 года назад +1

    まだまだCSSの勉強途中ですが、独学のモチベーションが落ちていたところこちらの動画に出会いました。
    サイト制作の流れがわかり、何よりもフワッと動くサイトが出来上がっていくのがとても楽しかったです⭐︎
    理解できていない箇所も確認できて、勉強になりました。
    ありがとうございます。
    他の動画でも勉強させていただきます^ ^

    • @webFrontEndChannel
      @webFrontEndChannel  4 года назад

      サイトに動きが出てくるととても楽しいですよね♪
      私はwebのアニメーションが一番好きでこの業界にいます。
      まだ少ないですが、他にもいくつかアニメーションに関する動画があるので、是非見てみてください(^ ^)

  • @まるちぃ-z2o
    @まるちぃ-z2o 4 года назад

    いつもお世話になっております。このフワッと感を求めていました!ありがとうございます!

    • @webFrontEndChannel
      @webFrontEndChannel  4 года назад

      求めていたフワッと感ということでよかったです!
      今後ともよろしくお願いします。

  • @barkarry13
    @barkarry13 4 года назад

    とても勉強なります、ドンピシャ知りたかった内容です。ありがとうございます。

    • @webFrontEndChannel
      @webFrontEndChannel  4 года назад

      リクエストにお応えできたようでよかったです!

  • @齋藤-w1s
    @齋藤-w1s 3 года назад

    とても勉強になります!!

  • @moyasann
    @moyasann 4 года назад

    勉強になります!ありがとうございます!

  • @BunnySenpaiii
    @BunnySenpaiii 2 года назад

    いつも動画拝見しております!
    スマホサイズになった場合にjs(スクロールアニメーション)を無効にする方法はございますか?
    ネットで調べて試したのですが、うまくいかなく困ってます😥

    • @webFrontEndChannel
      @webFrontEndChannel  2 года назад

      いつもありがとうございます!
      スクロールアニメーションの発火をむしろif文でスマホサイズの画面以上の時に限定すればできます。

  • @jiremix5392
    @jiremix5392 2 года назад

    参考になりました、ありがとうございます!
    この動画通りに実装してみましたが、iOSのChromeのみtransition-delayが効かず、逆に先に画像が出てきてしまいます。また、h2タグとpタグに指定しているtransition-durationもiOSのChromeのみスムーズに作動せず、カクカク動く感じです。どのような原因が考えられますでしょうか。

    • @webFrontEndChannel
      @webFrontEndChannel  2 года назад

      iOSやchromeアプリのバージョンは最新でしょうか?
      それから、iOSのSafariやFirefoxでは起こらないということですね?

    • @jiremix5392
      @jiremix5392 2 года назад

      @@webFrontEndChannel
      返信ありがとうございます。iOS、Chromeアプリはいずれも最新バージョンで、端末はiPhone11です。iOSのSafari、Firefoxでは正常に作動しております。

    • @webFrontEndChannel
      @webFrontEndChannel  2 года назад

      なるほど、そうなるとちょっと分からないですね。

  • @mr.kgames4977
    @mr.kgames4977 3 года назад

    ul.contents>li.animationTarget*4>img[src="img/img$.jpg"]+contentsText>h2{Dummy Title}+p{ここに文章が入ります。ここに文章が入ります。}
    初心者質問ですいません。6:30あたりでタブキーを押して展開したところがありますが、タブキーを押してもスペースが空くだけになってしまいます。どうすればいいでしょうか。

    • @webFrontEndChannel
      @webFrontEndChannel  3 года назад

      例えば、ul.contentsの時点でTabキーを押して展開されますか?
      されなければ、お使いのエディターにEmmetが入っていないか、設定が間違っている可能性があります。
      ちなみにお使いのエディターはなんでしょうか?

    • @mr.kgames4977
      @mr.kgames4977 3 года назад

      @@webFrontEndChannel すいません!※の所が日本語入力になってたみたいです!お手数お掛けしました!

  • @hogehogehoge10
    @hogehogehoge10 3 года назад

    動画ありがとうございます。
    もしご回答可能でしたら質問があるのですが、
    ページが表示されたときにすでに画面内に存在する最初のliはスクロールしないと出てこないのが少し違和感がありました。
    すでに画面内にあるものについてスクロールせずにふわっと出てくるようにするためには、別途それ用の関数を用意するイメージでしょうか?

    • @webFrontEndChannel
      @webFrontEndChannel  3 года назад +1

      そうですね、最初から見えてしまってる要素に関しては別の処理が必要になるかと思います。

  • @のざわな-b9p
    @のざわな-b9p Год назад

    20:39 ここら辺で躓きます😢
    コードは正しいはずなのに打ち込んでも画像だけしか移動しません、、
    あと、Dummy Titleと文章が画像の下に来てしまっててどう直せばいいのかわからないです💦
    ご指定お願いします🙏

    • @webFrontEndChannel
      @webFrontEndChannel  Год назад +1

      コードが正しいのに、移動しないとなるとちょっと詳しくPC自体の開発環境などを見てみないと分からないですね💦
      もう1つの方もコードを見てみないとちょっと分からないです💦
      どうしても解決したい場合は、個別の講義もおこなっておりますので、ご検討いただければと思います。
      よろしくお願い致します。

    • @のざわな-b9p
      @のざわな-b9p Год назад

      @@webFrontEndChannel お忙しい中返信して下さってありがとうございます‼️もう一度見直してみます🙇‍♀️

    • @のざわな-b9p
      @のざわな-b9p Год назад

      度々本当に申し訳ないです😔 17:52 18:57 39:29 ができないです、特に最後のアニメーションをつけるところのコード打ち込んだ途端にタイトル以外消えてしまいます、自分初心者なので本当にどこが間違っているのかわかりませんでした😢コード載せますので差し支えなければお助け下さい、!
      @charset "utf-8";
      body{
      font-family: serif;
      background-color: #333;
      color: #fff;
      }
      {
      box-sizing: border-box;
      }
      header {
      padding: 50px;
      }
      header h1 {
      font-size: 70px;
      font-weight: bold;
      margin-bottom: 60px;
      white-space: nowrap;
      }
      main {
      max-width: 1000px;
      width: 100%;
      margin: 50px auto;
      }
      .contents li {
      position: relative;
      opacity:0;
      transtion: 1s;
      }
      .contents li.show {
      opacity: 1.0;
      }
      .contents li:not(:first-of-type) {
      margin-top: 200px;
      }
      .contents li:nth-of-type(odd) .contentsText {
      right: 0;
      }
      .contents li:nth-of-type(even) .contentsText {
      align-items: flex-start;
      }
      .contents li:nth-of-type(even) img {
      margin-left: auto;
      }

      .contensText {
      display: flex;
      flex-direction: column;
      align-items: flex-end;
      position: absolute;
      top: 40px;
      }
      .contents h2 {
      font-size: 50px;
      font-weight: bold;
      white-space: nowrap;
      background-color: rgba(20,20,20, .8);
      padding: 10px 20px;
      line-height: 1.4;
      letter-spacing: .05em;
      border-radius: 5px;
      }
      .contents p {
      line-height: 1.6;
      background-color: #555;
      font-size: 14px;
      max-width: 340px;
      padding: 15px;
      margin-top: 30px;
      border-radius: 5px;
      }
      .contents img {
      width: 65%;
      display: block;
      border-radius: 5px;
      }
      Java のコードはこちら
      const targetElement = document.querySelectorAll(".animationTarget");
      console.log("画面の高さ",window.innerHeight)
      document.addEventListener("scroll",function() {
      for (let i = 0; i < targetElement.length; i++) {
      const getElementDistance = targetElement[i].
      getBoundingClientRect().top +targetElement[i].clientHeight +
      .6
      if (window.innerHeight > getElementDistance) {
      targetElement[i].classList.add("show");
      }
      }
      })

    • @webFrontEndChannel
      @webFrontEndChannel  Год назад +1

      コード拝見しましたが、色々と修正箇所がありちょっと直すのが大変だったのと、他の方からも質問をよくいただく動画だったので、動画の概要欄にファイルをダウンロードできるようにしたURLを設置しました!
      サイトへの無料登録が必要ですが、参考にしてみてください。

  • @tsubasa_km
    @tsubasa_km 3 года назад

    17:58の奇数番目contentsTextを右に寄せられないです!何回も見直してるんですが原因がわからないです。

    • @webFrontEndChannel
      @webFrontEndChannel  3 года назад

      検証で、対象の要素にどのようにCSSが適用されてるか見てみてください。
      もしnth-of-typeがうまく適用されていない場合は、一旦擬似クラスを取った状態なら指定できるのかなどを見てみましょう。
      それでもうまく適用できない場合は、さらにセレクタをシンプルにして適用されるかを見ていきましょう。
      そうやってセレクタをどんどんシンプルにして、どのように適用されるかを見ていくことでどこに原因があるのかを知ることができます。

  • @nayhkg1
    @nayhkg1 3 года назад +1

    初学者です。とてもいい動画でした。ありがとうございました。登録させていただきました。ひとつだけ、、、48:00頃で、mainにするとか、優先順位とか、どうしてそこが問題だと分かったのかとかもう少し詳しい説明いただけたら嬉しいです。

    • @webFrontEndChannel
      @webFrontEndChannel  3 года назад

      ご視聴いただきありがとうございます!
      まず、どうしてそこが問題かとわかったかというと、動画内でも言っている通り検証ツールを見たときに指定したCSSが適用されていなかったからです。
      原因として、今回は別のCSSの上書きがされていたので簡単にいうと上書きされないように優先度をあげました。
      CSSのセレクタの優先度に関してはこちらの動画で説明していますので、よろしければ見てみてください!
      ruclips.net/video/QG4IKTBXvEY/видео.html

    • @nayhkg1
      @nayhkg1 3 года назад

      @@webFrontEndChannel わざわざご返答ありがとうございます。
      transform: noneに訂正線がある→・・・→・・・→優先順位が原因だ!
      この「・・・」の部分に何を考えたのか分かるようになるのは難しいです。
      ちなみにCSSのshowのところを入れ替えてみたらできました。が、、あまりしないほうがいいのな、、、

  • @田中田中-h4b
    @田中田中-h4b 4 года назад

    いつも勉強になる動画ありがとうございます!
    そこで質問なのですが、僕の中ではIntersectionObserverが難しくて、scrollイベントでええやん!ってなってるんですけど...
    実際開発する時はどちらを使いますか?
    お答えいただけると幸いです。

    • @webFrontEndChannel
      @webFrontEndChannel  4 года назад +2

      一般的に実装する際はまだまだscrollイベントが使われているように思います。
      ただ、これを使うとコールバック関数が大量に生成され、不必要に動作がもっさりしてしまいますので、intersectionObserver apiを呼び出した方がメリットが多い様に感じます。
      しかし、スクロールイベントでも実装によってはサクサク動かすこともできますので、一概にどちらが良いとも言えない気がします。それからapiの方はieが非対応なので、ポリフィルの読み込みが必要です。
      現時点ではどちらも理解しておいて最適な方を使うのがベストではないでしょうか?

    • @田中田中-h4b
      @田中田中-h4b 4 года назад

      @@webFrontEndChannel
      そうなんですね!!
      どちらも理解できるように頑張ります...!
      ご丁寧に答えてくださりありがとうございます。

  • @ごろごろごろ-f1r
    @ごろごろごろ-f1r 3 года назад

    コメント失礼します。
    8:00あたりなんですけどalt属性付けていないのに何故画像表示されるんですか?
    私の場合、alt属性を書いてないと画像が表示されません。

    • @webFrontEndChannel
      @webFrontEndChannel  3 года назад

      逆に付けてないと表示されないといったことを聞いたことがないので、分からないですね…

  • @yuyukaka5908
    @yuyukaka5908 3 года назад

    いつもありがとうございます。
    質問させていただきます。この動画を見て、自分でコーディングしたHTML・CSSにjavascriptを実装してみたんですが、スクロール時に一瞬だけクラスがつきそのあとすぐ消えてしまいます。なので、
    opacity: 0;→opacity: 1;→opacity: 0 ;
    という動きになります。
    どんな問題が考えられるでしょうか?

    • @webFrontEndChannel
      @webFrontEndChannel  3 года назад

      クラスをつけた瞬間にクラス消す処理をおこなっているように感じますので、js の書き方かもしれないですね。

    • @yuyukaka5908
      @yuyukaka5908 3 года назад

      @@webFrontEndChannel jsを見直したら、問題点が分かり解決できました!ありがとうございました!

  • @デブ猫-u1s
    @デブ猫-u1s 3 года назад

    コメント失礼します
    JSはどのやつをインストールしていますか?

    • @webFrontEndChannel
      @webFrontEndChannel  3 года назад

      今回はプラグインなどを使わない実装方法を説明してるので、自作のjs以外は読み込んでいないですね。

  • @pekkacoc5279
    @pekkacoc5279 2 года назад

    この通りに入力しても、何も表示されない状態が続いてしまいます。javascriptとは同期されています。

    • @webFrontEndChannel
      @webFrontEndChannel  2 года назад

      consoleにエラーは出ていませんか?
      それから、クラスなどはスクロール時に付与しますか?

  • @my-eh1xt
    @my-eh1xt 3 года назад

    同じようにコードをうち、スクロールしたときにパッとでないのですが、なにが問題なのでしょうか、

    • @webFrontEndChannel
      @webFrontEndChannel  3 года назад

      ちょっと詳しくコードやエラーを拝見しないとわからないですね。。。

  • @kaisuNaru
    @kaisuNaru 2 года назад

    動画いつも拝見しています。
    今回jsが絡んでから思うように動かず、、可能でしたらご教授頂きたく、。
    consolelogは検証で表示されるのですが、NodeListが表示されません。他の、要素を動かすコードも反映されていないようで全く要素が動かない状態です。エディタはDWを使っています。何か違いがあるのでしょうか。
    HTMLのheadにこれを
    jsにはこのコードを入れています。(動画の通りに)
    const targetElement = document.querySelectorAll(".animationTarget")
    document.addEventListener("scroll", function () {
    for (let i = 0; i < targetElement.length; i++) {
    const getElementDistance = targetElement[i].getBoundingClientRect().top + targetElement[i].clientHeight * 0.6
    if (window.innertHeight > getElementDistance) {
    targetElement[i].classList.add("show");
    }
    }
    });

    • @webFrontEndChannel
      @webFrontEndChannel  2 года назад +1

      いつもありがとうございます。
      要素がうまく取得できないようでしたら、deferで問題ないとは思うのですが、
      document. addEventListener('DOMContentLoaded', () => {
      // ここに全てのコードを入れる
      })
      という形で書いてみてください。deferと同じ意味になります。

  • @HP-vv2gx
    @HP-vv2gx 3 года назад

    Fullpage.jsを使っていた場合は表示されないですか?showが付かなくて四苦八苦しています。

    • @webFrontEndChannel
      @webFrontEndChannel  3 года назад +1

      そうですね、プラグインとか使ってたら競合するので、プラグインのコールバックとかを調べてそれに応じた書き方にしないといけないと思います。

    • @HP-vv2gx
      @HP-vv2gx 3 года назад

      @@webFrontEndChannel 固定された画面で1ページ2ページと変わるjquery入れてるのですが 距離を測るコンソールログの数値が変動しないのでそもそもこの動画の書き方ではできないってことなんですねTT

    • @webFrontEndChannel
      @webFrontEndChannel  3 года назад +1

      そうですね、なのでコールバックを上手く使う感じです

    • @HP-vv2gx
      @HP-vv2gx 3 года назад

      @@webFrontEndChannel コールバック、、、TT
      ありがとうございます。調べて頑張ります!

  • @tukubou
    @tukubou 3 года назад +1

    [23:43]の時点でコンソールに以下のエラーが出てしまします。
    script.js:1 Uncaught TypeError: document.querySelectorALL is not a function
    script.jsには以下の内容を入力している状態です。
    const targetElement = document.querySelectorALL(".animationTarget");
    console.log(targetElement);
    どこを改善したらいいかわからず詰まっている状態です。わかる方いましたら教えていただきたいです。

    • @webFrontEndChannel
      @webFrontEndChannel  3 года назад

      querySelectorAllのALLが全部大文字になっていませんか?

    • @tukubou
      @tukubou 3 года назад

      @@webFrontEndChannel 気付きませんでした!ありがとうございます!

  • @ake3749
    @ake3749 3 года назад

    動画かなり役に立っております。ありがとうございます。
    質問なのですが、
    .contents li:nth-of-type(odd) .contentsText {
    right: 0;
    }
    ⬆️ここでは、right:0 で右合わせにできるのに、
    .contents li:nth-of-type(even) img {
    margin-left: auto;
    }
    ⬆️なぜこっちは、right: 0; ではなく margin-left: auto でないと効かないのでしょうか?

    • @webFrontEndChannel
      @webFrontEndChannel  3 года назад +2

      rightなどの位置の指定はposition: absoluteなどを指定している時に使うことができます。
      逆にabsoluteなどを指定して要素が浮いていると周りとの距離が関係なくなる為、marginの指定が効かなくなります。
      一方浮いていない要素(posiiton: absoluteやfixedなどをしていない要素)で、marginが左右どちらかに発生している場合は、marginの片方をautoにすることによって、その反対側に要素自身が移動します。
      詳しくは、positionについての解説動画
      ruclips.net/video/Oks81_qyHUw/видео.html
      もしくは、要素の位置を揃えることについての解説動画
      ruclips.net/video/GwxaQ0sfy60/видео.html
      などを見ると理解が深まるかもしれません。

    • @ake3749
      @ake3749 3 года назад

      すみません、解決しました。
      div(.contentsText)だけ、absolute(right: 0;)で位置調整したのは、imgの上に重ねるためですね。
      試しに、imgに対しても、absoluteかけて(right: 0;)で位置調整してみたら、画像が重なってしまいました。
      absoluteするってことは、floatみたいに浮いて指定場所に配置されるイメージですかね、、
      imgのblock要素は浮かせないで残しておかないと、4つのliが全部(浮いて同じ所に絶対配置されて)重なっちゃいますね。
      だからliを4つ下に連ねるためにimgには絶対配置を使わないんですかね。
      とりあえず、こんな結論に達しましたが、、、
      これからも、いろいろなWebページの作成動画をたくさんあげていただけると嬉しいです。感謝🙇‍♂️

    • @webFrontEndChannel
      @webFrontEndChannel  3 года назад +1

      解決して良かったです!
      そうですね、absoluteとかを使うときは重ねることが多いです。浮く感じですね。
      今回のように色々CSSなどをいじってみると発見があるかもしれないですね。
      今後も頑張ってアップロードしていくので、楽しみにしててください♪

  • @user-sunjg4k7
    @user-sunjg4k7 3 года назад

    これがパララックスって言うものですか??、、、

    • @webFrontEndChannel
      @webFrontEndChannel  3 года назад +1

      いえ、パララックスはこちらですね!
      ruclips.net/video/mN1q1viOIro/видео.html

    • @user-sunjg4k7
      @user-sunjg4k7 3 года назад

      @@webFrontEndChannel わざわざURLまで、ありがとうございます!!!!!