[解決済み] アンカーリンクをクリックしたときのスクロールを滑らかにする
2022-03-17 23:23:48
質問
私のページには、いくつかのハイパーリンクがあります。ヘルプセクションを訪れたユーザーが読むことになるFAQです。
アンカーリンクを使って、アンカーに向かってページをスクロールさせ、ユーザーをそこに誘導することができるんだ。
そのスクロールをスムーズにする方法はありますか?
しかし、彼はカスタムのJavaScriptライブラリを使っていることに注目してください。もしかしたら、jQueryはこのような機能を備えているのかもしれませんね。
解決方法は?
2018年4月の更新情報です。 現在では これを行うためのネイティブな方法 :
document.querySelectorAll('a[href^="#"]').forEach(anchor => {
anchor.addEventListener('click', function (e) {
e.preventDefault();
document.querySelector(this.getAttribute('href')).scrollIntoView({
behavior: 'smooth'
});
});
});
現在、最先端のブラウザでのみサポートされています。
古いブラウザに対応している場合は、このjQueryのテクニックを使用することができます。
$(document).on('click', 'a[href^="#"]', function (event) {
event.preventDefault();
$('html, body').animate({
scrollTop: $($.attr(this, 'href')).offset().top
}, 500);
});
そして、これがバイオリンです。 http://jsfiddle.net/9SDLw/
ターゲット要素にIDがなく、そのIDを使用してリンクしている場合
name
は、これを使用します。
$('a[href^="#"]').click(function () {
$('html, body').animate({
scrollTop: $('[name="' + $.attr(this, 'href').substr(1) + '"]').offset().top
}, 500);
return false;
});
パフォーマンスを向上させるためには、そのキャッシュを
$('html, body')
セレクタが実行されないようにするためです。
いちいち
アンカーがクリックされたとき。
var $root = $('html, body');
$('a[href^="#"]').click(function () {
$root.animate({
scrollTop: $( $.attr(this, 'href') ).offset().top
}, 500);
return false;
});
URLを更新させたい場合は
animate
のコールバックです。
var $root = $('html, body');
$('a[href^="#"]').click(function() {
var href = $.attr(this, 'href');
$root.animate({
scrollTop: $(href).offset().top
}, 500, function () {
window.location.hash = href;
});
return false;
});
関連
-
vue3レスポンシブ対応のためのsetup+ref+reactive
-
HTML+CSS+JavaScriptで簡単な三目並べゲームを作成する。
-
vueが定義するプライベートフィルタと基本的な使い方
-
[解決済み】JavaScript TypeError: null のプロパティ 'style' を読み取ることができない
-
[解決済み】 env: node: macにそのようなファイルやディレクトリはありません
-
[解決済み】(Google Map API) Geocodeは以下の理由で成功しませんでした。REQUEST_DENIED
-
[解決済み] リンクのように動作するHTMLボタンを作成する方法
-
[解決済み] Node.jsを使うタイミングをどう判断するか?
-
[解決済み] スクロールした後に要素が表示されているかどうかを確認するには?
-
[解決済み】AngularJSでアンカーハッシュのリンクを処理する方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
JavaScriptにおけるマクロタスクとミクロタスクの詳細
-
jQueryのコピーオブジェクトの説明
-
Vueにシンプルなメモ帳機能を実装
-
vueにおけるv-forループオブジェクトのプロパティ
-
Vueのイベント処理とイベントモディファイアの解説
-
Vueのフィルタの説明
-
[解決済み】ERROR エラーです。スイッチのname属性が指定されていないフォームコントロールの値アクセッサがない
-
モジュールのビルドに失敗しました。Error: ENOENT: no such file or directory, scandir 'D:\.... \node_modules
-
[解決済み] jQueryを使用してアンカーにページを上下にスクロールする方法は?
-
[解決済み】window.scrollTo()で滑らかな効果を出す方法【非公開