ギャラリーのサムネイルをクリックすると、ページが上にスクロールするのはなぜですか?

dmontesi

私は理解できない奇妙な行動をしているフォトギャラリーを持っています。画像を表示するはずのサムネイルをクリックすると、それだけでなく、ページを上にスクロールします。ギャラリーが画面の上部の少し下に表示されている場合は上にスクロールし、画面の上部を通過している場合は、ギャラリーセクションの上部が画面の上部に揃うまで下にスクロールします。画面。

私はcodepenで行ったことを複製しようとしました:https://codepen.io/dmontesi/pen/VJZeVq 私はSCSS / HTMLのみを使用しています。

<!-- Gallery -->
<section class="wrapper">
    <div class="wrapper__gall">
        <ul class="slides">
            <li id="slide1"><img src="https://cdn.pixabay.com/photo/2016/06/24/11/49/architecture-1477103_960_720.jpg" alt="" /></li>
            <li id="slide2"><img src="https://cdn.pixabay.com/photo/2016/06/24/11/48/architecture-1477101_960_720.jpg" alt="" /></li>
            <li id="slide3"><img src="https://cdn.pixabay.com/photo/2016/06/24/11/46/architecture-1477099_960_720.jpg" alt="" /></li>
        </ul>
        <ul class="thumbnails">
            <li>
                <a href="#slide1"><img src="https://cdn.pixabay.com/photo/2016/06/24/11/49/architecture-1477103_960_720.jpg" /></a>
            </li>
            <li>
                <a href="#slide2"><img src="https://cdn.pixabay.com/photo/2016/06/24/11/48/architecture-1477101_960_720.jpg" /></a>
            </li>
            <li>
                <a href="#slide3"><img src="https://cdn.pixabay.com/photo/2016/06/24/11/46/architecture-1477099_960_720.jpg" /></a>
            </li>
        </ul>
    </div>
</section>

次のスライドのみを表示し、画面上のユーザーの位置を移動しないようにします。

yaya

(ここで完全なコードを見ることができます:Codepen

質問:

ナビゲーションリンクをクリックすると、画像の上部にスクロールするのはなぜですか?そしてそれを防ぐ方法は?

回答:

まあ、それはリンクの自然な振る舞いです。それはアンカーリンクと呼ばれます。

を使用する<a href="#slide1">場合、ユーザーがそれをクリックすると、ページはid = slide1を含む要素にスクロールします。

(を追加することでonclick="event.preventDefault()"それを防ぐことはできますが、それはcss:targetルールを使用できなくなったことを意味しますこれは、ターゲット画像が他の画像の上に表示されなくなることを意味します。

代わりに、javascriptを使用して、完全な動作を制御できます。

  1. ナビゲーションリンクにonclickハンドラーを追加します。
<a href="#slide1"  onclick='navigate(event)'>
  1. javascriptのナビゲート関数を作成する必要があります。この関数はactive、現在のactive要素からクラスを与え、クリックされた要素にそれを与える必要があります。このような:
function navigate(event){
  //get active element
  var active = event.target.closest(".wrapper").getElementsByClassName("active")[0];
  //remove class "active" from active element
  if(active)active.classList.remove("active");
  //get target element from link
  var target = document.getElementById(event.target.closest("a").getAttribute("href").replace("#",""));
  //add class "active" to the target
  target.classList.add("active");
  //prevent default link behaviour
  event.preventDefault();
}
  1. 次に、アクティブな画像のcssルールを作成する必要があります(li:targetセレクターが置き換えられます)。
.slides li.active {
  z-index: 3;
}
.slides li:not(.active) {
  z-index: 0;
}

(ここで完全なコードを見ることができます:Codepen

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

ジェネリックメソッドを非ジェネリックメソッドでオーバーライドするときに、サブシグネチャとチェックされていないルールが戻り値の型に対してこのように機能するのはなぜですか?

分類Dev

スクロールバーを削除するとギャップが残るのはなぜですか?

分類Dev

フォトギャラリーの次のサムネイル画像にスクロールする方法

分類Dev

マイクロポストの送信に失敗するとホームページが壊れるのはなぜですか-MichaelHartlRailsチュートリアル

分類Dev

マスターページにリンクされているページのボタンにクリックイベントを追加すると、コンパイルエラーが発生するのはなぜですか

分類Dev

なぜジェネリックコールを明示的にキャストする必要があるのですか?

分類Dev

Squarespaceギャラリーページで下にスクロールすると、テキストのフェードが遅くなります

分類Dev

npmがホームディレクトリにローカルパッケージをインストールするのはなぜですか?

分類Dev

サムネイルギャラリーでクリック可能なkivy画像を作成する方法

分類Dev

ジェネリック型のキャスト-括弧「()」を使用した直接キャストでコンパイルエラーが発生するのに、「as」キーワードを使用したキャストは機能するのはなぜですか?

分類Dev

ユーザーがロゴリンクをクリックすると、ホームページではなくログインページにリダイレクトされるのはなぜですか?

分類Dev

会社のネットワーク上のリモートWebサイトに接続しているときに、wiresharkがローカルの宛先IPアドレスのみを表示するのはなぜですか

分類Dev

リンクをクリックすると、reactアプリがカスタム404 not foundページに移動するのはなぜですか?

分類Dev

サムスンギャラクシーS6(ロリポップ)が古いデバイスの4倍のメモリをビットマップに割り当てるのはなぜですか

分類Dev

シンプルなJavaScriptギャラリー、各小さなサムネイル画像をクリックすると大きな画像が表示されます

分類Dev

ページをリロードするために「ahref」属性をダブルクリックする必要があるのはなぜですか?

分類Dev

ルーターのDNSサーバーを変更すると、VPN上のネットワークリソースへのアクセスに関する問題が修正されるのはなぜですか?

分類Dev

リサイクラービューを上にスクロールする際のページ付け

分類Dev

クリックまたはスクロールすると、光学式マウスの下部のライトが明るくなるのはなぜですか?

分類Dev

サブスクリプションコールバックのエラーでRxjsがサブスクライブを解除するのはなぜですか?

分類Dev

クラスライブラリからページをロードするときにBlazorが追加のファイルをロードするのはなぜですか

分類Dev

CSSポップアップを開くと、ページが一番上にスクロールするのはなぜですか?

分類Dev

Linuxでリアルタイムクロックを読み取るためにスーパーユーザー権限が必要なのはなぜですか?

分類Dev

Mozilla FirefoxでWebページをスクロールすると、MPC-HCの再生がフリーズするのはなぜですか?

分類Dev

Golangでバッファリングされたチャネルサイズを超える値を送信すると、デッドロックエラーが発生するのはなぜですか?

分類Dev

Forループの最初のサイクルの後にプログラムがcin >>をスキップするのはなぜですか?

分類Dev

ASP.NET-Coreアプリで、「ファイル領域のロック/ロック解除はこのプラットフォームではサポートされていません」というエラーメッセージが表示されるのはなぜですか。MacOSにデプロイすると?

分類Dev

android-ギャラリーをロードする前に、デバイス上のすべてのサムネイルを更新しますか?

分類Dev

非同期ストリームでもcudaMemcpyAsyncとカーネル起動ブロックがブロックされるのはなぜですか?

Related 関連記事

  1. 1

    ジェネリックメソッドを非ジェネリックメソッドでオーバーライドするときに、サブシグネチャとチェックされていないルールが戻り値の型に対してこのように機能するのはなぜですか?

  2. 2

    スクロールバーを削除するとギャップが残るのはなぜですか?

  3. 3

    フォトギャラリーの次のサムネイル画像にスクロールする方法

  4. 4

    マイクロポストの送信に失敗するとホームページが壊れるのはなぜですか-MichaelHartlRailsチュートリアル

  5. 5

    マスターページにリンクされているページのボタンにクリックイベントを追加すると、コンパイルエラーが発生するのはなぜですか

  6. 6

    なぜジェネリックコールを明示的にキャストする必要があるのですか?

  7. 7

    Squarespaceギャラリーページで下にスクロールすると、テキストのフェードが遅くなります

  8. 8

    npmがホームディレクトリにローカルパッケージをインストールするのはなぜですか?

  9. 9

    サムネイルギャラリーでクリック可能なkivy画像を作成する方法

  10. 10

    ジェネリック型のキャスト-括弧「()」を使用した直接キャストでコンパイルエラーが発生するのに、「as」キーワードを使用したキャストは機能するのはなぜですか?

  11. 11

    ユーザーがロゴリンクをクリックすると、ホームページではなくログインページにリダイレクトされるのはなぜですか?

  12. 12

    会社のネットワーク上のリモートWebサイトに接続しているときに、wiresharkがローカルの宛先IPアドレスのみを表示するのはなぜですか

  13. 13

    リンクをクリックすると、reactアプリがカスタム404 not foundページに移動するのはなぜですか?

  14. 14

    サムスンギャラクシーS6(ロリポップ)が古いデバイスの4倍のメモリをビットマップに割り当てるのはなぜですか

  15. 15

    シンプルなJavaScriptギャラリー、各小さなサムネイル画像をクリックすると大きな画像が表示されます

  16. 16

    ページをリロードするために「ahref」属性をダブルクリックする必要があるのはなぜですか?

  17. 17

    ルーターのDNSサーバーを変更すると、VPN上のネットワークリソースへのアクセスに関する問題が修正されるのはなぜですか?

  18. 18

    リサイクラービューを上にスクロールする際のページ付け

  19. 19

    クリックまたはスクロールすると、光学式マウスの下部のライトが明るくなるのはなぜですか?

  20. 20

    サブスクリプションコールバックのエラーでRxjsがサブスクライブを解除するのはなぜですか?

  21. 21

    クラスライブラリからページをロードするときにBlazorが追加のファイルをロードするのはなぜですか

  22. 22

    CSSポップアップを開くと、ページが一番上にスクロールするのはなぜですか?

  23. 23

    Linuxでリアルタイムクロックを読み取るためにスーパーユーザー権限が必要なのはなぜですか?

  24. 24

    Mozilla FirefoxでWebページをスクロールすると、MPC-HCの再生がフリーズするのはなぜですか?

  25. 25

    Golangでバッファリングされたチャネルサイズを超える値を送信すると、デッドロックエラーが発生するのはなぜですか?

  26. 26

    Forループの最初のサイクルの後にプログラムがcin >>をスキップするのはなぜですか?

  27. 27

    ASP.NET-Coreアプリで、「ファイル領域のロック/ロック解除はこのプラットフォームではサポートされていません」というエラーメッセージが表示されるのはなぜですか。MacOSにデプロイすると?

  28. 28

    android-ギャラリーをロードする前に、デバイス上のすべてのサムネイルを更新しますか?

  29. 29

    非同期ストリームでもcudaMemcpyAsyncとカーネル起動ブロックがブロックされるのはなぜですか?

ホットタグ

アーカイブ