[解決済み] javascriptによるアンカージャンプ
質問
よくありそうな質問があります。問題は、どこにも明確な解答が見つからないことです。
アンカーに関して2つの問題があります。
主な目標は、ページにジャンプするためにアンカーを使用している間、その中に任意のハッシュなしで素敵なきれいなURLを取得することであるべきです。
ということは、アンカーの構造は
<ul>
<li><a href="#one">One</a></li>
<li><a href="#two">Two</a></li>
<li><a href="#three">Three</a></li>
</ul>
<div class="wrap">
<a name="one">text 1</a>
<a name="two">text 2</a>
<a name="three" class="box">text 3</a>
</div>
さて、あなたがリンクの1つをクリックすると、URLは自動的に次のように変更されます。
<ブロッククオートwww.domain.com/page#1
最後にこれはただであるべきだ。
www.domain.com/page
ここまではいいとして。さて、2つ目は、その問題をネットで検索してみると
javascript
を解決策とします。
こんな機能があったんだ。
function jumpto(anchor){
window.location.href = "#"+anchor;
}
で、その関数を呼び出す。
<a onclick="jumpto('one');">One</a>
というのは、前と同じです。これはurlにハッシュを追加します。私はまた、追加しました
<a onclick="jumpto('one'); return false;">
を実行しましたが、うまくいきませんでした。もし、これを解決する方法を教えてくれる人がいれば、本当に感謝します。
どうもありがとうございました。
どのように解決するのですか?
対象要素の座標を取得し、そこにスクロール位置を設定することができます。しかし、これはとても複雑です。
ここでは、もっと簡単な方法を紹介します。
function jump(h){
var url = location.href; //Save down the URL without hash.
location.href = "#"+h; //Go to the target element.
history.replaceState(null,null,url); //Don't like hashes. Changing it back.
}
これは
replaceState
を使用してURLを操作します。もし
IE対応
を実行する必要があります。
複雑な方法
:
function jump(h){
var top = document.getElementById(h).offsetTop; //Getting Y of target element
window.scrollTo(0, top); //Go there directly or some transition
}
デモの様子
http://jsfiddle.net/DerekL/rEpPA/
もう一枚、トランジション付き。
http://jsfiddle.net/DerekL/x3edvp4t/
を使用することもできます。
.scrollIntoView
:
document.getElementById(h).scrollIntoView(); //Even IE6 supports this
<サブ (まあ嘘です。全然複雑じゃないです。)
関連
-
[解決済み】このエラーの原因は何ですか - "Fatal error: ローカルgruntを見つけることができません"
-
[解決済み】SyntaxError: 'import' と 'export' は 'sourceType: module' とだけ表示されるかもしれない - Gulp
-
[解決済み】React.jsの配列の子要素のユニークキーを理解する
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] JavaScriptで文字列が部分文字列を含むかどうかを確認する方法は?
-
[解決済み] あるJavaScriptファイルを他のJavaScriptファイルにインクルードするにはどうすればよいですか?
-
[解決済み] JavaScriptでタイムスタンプを取得する方法は?
-
[解決済み】JavaScriptの比較では、どちらの等号演算子(== vs ===)を使うべきですか?
-
[解決済み】JavaScriptで文字列の出現箇所をすべて置換する方法
-
[解決済み】オブジェクトからプロパティを削除する(JavaScript)
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】TypeError: 'undefined'はオブジェクトではありません。
-
[解決済み】SecurityError: オリジンを持つフレームがクロスオリジンフレームにアクセスするのをブロックした
-
[解決済み】JavaScriptのgetElementByNameが機能しない
-
[解決済み】SyntaxError: ChromeのJavascriptコンソールでUnexpected Identifierが発生する。
-
[解決済み] エラー。モジュールhtmlが見つからない
-
[解決済み】Reactのeslintエラーはpropsの検証で見つからない
-
[解決済み】FirefoxでGoogle Maps V3をリモートで使用すると「googleが定義されていません」と表示される。
-
[解決済み】Jestが予期しないトークンに遭遇した
-
[解決済み】TypeError:res.jsonは関数ではありません。
-
[解決済み] jQueryで要素にスクロールする