見出し画像

jQuery メモ scroll


CSSで簡単に実装する

細かい指定はできない(対象場所やスピード等)


html{
  scroll-behavior: smooth;
}

スクロール場所を変更する


ヘッダー固定で隠れてしまう時など

html{
scroll-padding-top: 80px;
}


三項演算子


const target = jQuery("#" == id ? "html" : id); の部分は、三項演算子を使用して条件に基づいて target 変数に値を代入しています。
この記述は、id が "#" の場合にはページの最上部を、そうでない場合には指定された要素を target として設定するために使われています。これにより、スムーズスクロールのターゲットを動的に決定することができます。


三項演算子の構文

条件 ? 真の場合の値 : 偽の場合の値


このコードの解説

1. 条件: "#" == id

  • これは、id が "#" と等しいかどうかをチェックしています。

  • 真の場合の値: "html"

  • 条件が真(id が "#" の場合)であれば、target には "html" が代入されます。これは、ページの最上部を指します。

3. 偽の場合の値: id

  • 条件が偽(id が "#" でない場合)であれば、target には id の値がそのまま代入されます。これは、特定の要素のIDを指します。

jQuery("a[href^='#']").on("click", function(e) {
  // スクロールの速さを300ミリ秒に設定
  const speed = 300;
  // クリックしたリンクのhref属性を取得
  const id = jQuery(this).attr("href");
  // ターゲットを決定(hrefが#の場合はhtmlを、そうでなければそのIDを使用)
  const target = jQuery("#" == id ? "html" : id);
  // ターゲットの位置を取得
  const position = jQuery(target).offset().top;
  // スクロールアニメーションを実行
  jQuery("html,body").animate(
    {
      scrollTop: position, // スクロールする位置
    },
    speed, // スクロールの速さ
    "swing" // アニメーションの動き
  );
});

^

は正規表現において「先頭」を意味します。具体的には、a[href^='#'] の部分は、href 属性が # で始まるすべての <a> 要素を選択するためのセレクタです。

以下のように解釈できます:

  • a は <a> タグを指します。

  • [href^='#'] は href 属性が # で始まる要素を選択します。

このセレクタを使うことで、ページ内リンク(例えば、特定のセクションにスクロールするためのリンク)を簡単に選択し、イベントリスナーを追加することができます。

jQuery("a[href^='#']").on("click",function(e){


この記事が気に入ったらサポートをしてみませんか?