質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
スクロール

スクロールとは、ディスプレイスクリーン上において連続的にコンテンツが滑っていくことを指します。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

3回答

471閲覧

同じサイトで別ページへのaタグでのスクロール

退会済みユーザー

退会済みユーザー

総合スコア0

スクロール

スクロールとは、ディスプレイスクリーン上において連続的にコンテンツが滑っていくことを指します。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

1クリップ

投稿2019/10/09 04:42

編集2019/10/09 06:08
<JQuery-scroll> // UTF-8 /** * scrollsmoothly.js * Copyright (c) 2008 KAZUMiX * http://d.hatena.ne.jp/KAZUMiX/20080418/scrollsmoothly * Licensed under the MIT License: * http://www.opensource.org/licenses/mit-license.php * */ (function(){ var easing = 0.2; var interval = 14; var d = document; var targetX = 0; var targetY = 0; var targetHash = ''; var scrolling = false; var splitHref = location.href.split('#'); var currentHref_WOHash = splitHref[0]; var incomingHash = splitHref[1]; var prevX = null; var prevY = null; // ドキュメント読み込み完了時にinit()を実行する addEvent(window, 'load', init); // ドキュメント読み込み完了時の処理 function init(){ // ページ内リンクにイベントを設定する setOnClickHandler(); // 外部からページ内リンク付きで呼び出された場合 if(incomingHash){ if(window.attachEvent && !window.opera){ // IEの場合はちょっと待ってからスクロール setTimeout(function(){scrollTo(0,0);setScroll('#'+incomingHash);},50); }else{ // IE以外はそのままGO scrollTo(0, 0); setScroll('#'+incomingHash); } } } // イベントを追加する関数 function addEvent(eventTarget, eventName, func){ if(eventTarget.addEventListener){ // モダンブラウザ eventTarget.addEventListener(eventName, func, false); }else if(window.attachEvent){ // IE eventTarget.attachEvent('on'+eventName, function(){func.apply(eventTarget);}); } } function setOnClickHandler(){ var links = d.links; for(var i=0; i<links.length; i++){ // ページ内リンクならスクロールさせる var link = links[i]; var splitLinkHref = link.href.split('#'); if(currentHref_WOHash == splitLinkHref[0] && d.getElementById(splitLinkHref[1])){ addEvent(link, 'click', startScroll); } } } function startScroll(event){ // リンクのデフォルト動作を殺す if(event){ // モダンブラウザ event.preventDefault(); //alert('modern'); }else if(window.event){ // IE window.event.returnValue = false; //alert('ie'); } // thisは呼び出し元になってる setScroll(this.hash); } function setScroll(hash){ // ハッシュからターゲット要素の座標をゲットする var targetEle = d.getElementById(hash.substr(1)); if(!targetEle)return; //alert(scrollSize.height); // スクロール先座標をセットする var ele = targetEle; var x = 0; var y = 0; while(ele){ x += ele.offsetLeft; y += ele.offsetTop; ele = ele.offsetParent; } var maxScroll = getScrollMaxXY(); targetX = Math.min(x, maxScroll.x); targetY = Math.min(y, maxScroll.y); targetHash = hash; // スクロール停止中ならスクロール開始 if(!scrolling){ scrolling = true; scroll(); } } function scroll(){ var currentX = d.documentElement.scrollLeft||d.body.scrollLeft; var currentY = d.documentElement.scrollTop||d.body.scrollTop; var vx = (targetX - currentX) * easing; var vy = (targetY - currentY) * easing; var nextX = currentX + vx; var nextY = currentY + vy; if((Math.abs(vx) < 1 && Math.abs(vy) < 1) || (prevX === currentX && prevY === currentY)){ // 目標座標付近に到達していたら終了 scrollTo(targetX, targetY); scrolling = false; location.hash = targetHash; prevX = prevY = null; return; }else{ // 繰り返し scrollTo(parseInt(nextX), parseInt(nextY)); prevX = currentX; prevY = currentY; setTimeout(function(){scroll()},interval); } } function getDocumentSize(){ return {width:Math.max(document.body.scrollWidth, document.documentElement.scrollWidth), height:Math.max(document.body.scrollHeight, document.documentElement.scrollHeight)}; } function getWindowSize(){ var result = {}; if(window.innerWidth){ var box = d.createElement('div'); with(box.style){ position = 'absolute'; top = '0px'; left = '0px'; width = '100%'; height = '100%'; margin = '0px'; padding = '0px'; border = 'none'; visibility = 'hidden'; } d.body.appendChild(box); var width = box.offsetWidth; var height = box.offsetHeight; d.body.removeChild(box); result = {width:width, height:height}; }else{ result = {width:d.documentElement.clientWidth || d.body.clientWidth, height:d.documentElement.clientHeight || d.body.clientHeight}; } return result; } function getScrollMaxXY() { if(window.scrollMaxX && window.scrollMaxY){ return {x:window.scrollMaxX, y:window.scrollMaxY}; } var documentSize = getDocumentSize(); var windowSize = getWindowSize(); return {x:documentSize.width - windowSize.width, y:documentSize.height - windowSize.height}; } }());

<BのHTMLファイル>

<a href="company/A.html/pageLink04" title="">組織図を追加しました</a></dd>

<AのHTMLファイル>
:

<script type='text/javascript' src='../share/js/scroll.js'></script>

:
<a id="pageLink04" name="pageLink04"></a>
<p>
<span>組織図</span></p>
<div class="txtTempSet txtTemp6 clearfix">
<div style="text-align: center;">
<strong>◆組織図</strong><br />
<img alt="組織図" src="img/orgimg.jpg" />
</div>
</div>

HTMLページ(Aとする)にリンクが複数ありクリックするとその場所までスクロールします。 スクロールはJQueryでページをロードした時に動作するものです。 同じサイトで別HTMLページ(Bとする)にもリンクボタンがあり、そこからもAの該当箇所に aタグでリンクしています。 このときの動作ですが、Bでリンクボタンを押すと、一旦該当箇所が瞬時に表示され、 その後今度は上からスクロールし、また該当箇所でとまります。 別ページからの表示ではスクロールを止めてもよいと思ってますが、ロードするたびにJQueryの scrollが動くので止めることができないでいます。 どうにかしたいのですが、方向性がよくわからず困っています。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

x_x

2019/10/09 05:11

コードは提示できないのでしょうか?
yambejp

2019/10/09 05:11

具体的な例をHTMLを明示し説明してください
x_x

2019/10/09 05:46

該当箇所(scroll.js?)を示してください。
guest

回答3

0

  • B.html

HTML

1<a href="company/A.html#pageLink04" title="">組織図を追加しました</a></dd>

っていうだけではないのでしょうか?
スクロールと言われてもどこからそこにスクロールするかわからないですからね

投稿2019/10/09 05:33

yambejp

総合スコア114777

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

コメントにある通りなので不要ならこの部分をコメントアウトすればいいのではないでしょうか

JavaScript

1 // 外部からページ内リンク付きで呼び出された場合 2 if(incomingHash){ 3 if(window.attachEvent && !window.opera){ 4 // IEの場合はちょっと待ってからスクロール 5 setTimeout(function(){scrollTo(0,0);setScroll('#'+incomingHash);},50); 6 }else{ 7 // IE以外はそのままGO 8 scrollTo(0, 0); 9 setScroll('#'+incomingHash); 10 } 11 }

投稿2019/10/09 07:17

x_x

総合スコア13749

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

アンカーで値を渡してその値を元にjQueryでスクロールするとか?

これ以上の事はコードを提示していただかないとなんとも言えません。

投稿2019/10/09 05:25

編集2019/10/09 05:25
kyoya0819

総合スコア10429

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問