• 締切済み

別ページからのアンカーリンクについて

現在、下記jqueryを使用して横スクロールサイトを制作中です。 http://tympanus.net/codrops/2010/06/02/smooth-vertical-or-horizontal-page-scrolling-with-jquery/ 上記サイトを参考に 設置し問題なく動作しているのですが、 アンカーリンクを使用して 別ページから、各コンテンツにジャンプさせたいと思っています。 設置しているナビゲーションメニューからだと スムーズにスクロールし、正常に動作(コンテンツが一番左の位置でストップ)するのですが、 別ページから ○○.html#アンカーリンク名 というふうに リンクを張ると、表示位置が一番左の位置ではなく スクロールの途中でずれて止まってしまいます。 CSSも含め色々といじってはみたのですが まったく原因がつかめず苦戦しております。。 以下のスクリプトでは、ナビゲーションのリンクをクリックすると 動作するようにしていますが、 アンカーリンク名が○○の場合は、○○に表示させる といった命令のようなことはできるのでしょうか? 知識不足で申し訳御座いませんが お分かりの方がおられましたら宜しくお願いいたします。 $(function() { $('ul.nav a').bind('click',function(event){ var $anchor = $(this); /* if you want to use one of the easing effects: $('html, body').stop().animate({ scrollLeft: $($anchor.attr('href')).offset().left }, 1500,'easeInOutExpo'); */ $('html, body').stop().animate({ scrollLeft: $($anchor.attr('href')).offset().left }, 1000); }); });

みんなの回答

  • kuzumiHK
  • ベストアンサー率72% (132/183)
回答No.1

ご提示いただいているサンプルデモのページでは問題なく一番左に表示されますね。 http://tympanus.net/Tutorials/WebsiteScrolling/#section2 ちなみにアンカーをつけているタグに、style="border:1px solid #f00"を追記したとき、 赤いボーダーの左は画面のどの位置に来ますか? <h2 id="section2" style="border:1px solid #f00">タイトル</h2>

okyesno
質問者

補足

こちらでもご回答頂いていてありがとうございます!! 各コンテンツのID名をbox01~box05だとし、 試しにbox03のブロックにstyle="border:1px solid #f00"を追記し アクセスしてみました。 ブロックがそのままブラウザの左ではなく右側に配置される形です。。 各ブロックのIDにクラス名.sectionをつけて CSSを下記のように設定しています。 javascriptではなく、コンテンツの中身のCSSなどが原因しているのでしょうか。。 body { background-image: url(images/haikei.gif); background-repeat: no-repeat; background-position: left bottom; position:absolute; width: 5000px; left: 0px; top: 0px; bottom:0px; height: 100%; vertical-align: middle; margin: 0px; padding-top: 0px; } .section { width:1000px; height:100%; padding: 0px; float: left; margin:0px; bottom:0px;}

関連するQ&A

  • jcueryのスライドするナビゲーションについて3

    http://okwave.jp/qa/q6836508.htmlにて質問させて頂き、 回答者さまから教えてもらった方法で、ナビゲーションを設置いたしました。 デモ http://okwave.xrea.jp/jquery/test6836508/ 単体では問題なく動いたので回答をしめきってしまったのですが、 別のスクリプトによって、 アンカーがURLに読み込まれず、ブラウザの更新ボタンを押すと コンテンツだけが止まったまま スライドはTOPに戻ってきてしまいます。 ※同一ファイル内でのコンテンツ移動です。 どうやら、別で使用している下記のスクリプトのせいで そのようになってしまうようです。 これを外すと、URLにアンカーがつきます。 ただ下記のスクリプトはコンテンツの移動の際に使用しているもので 外すことはできないので、対処法がお分かりの方がおられましたら お教え頂けないでしょうか。 宜しくお願いいたします。 <script type="text/javascript"> $(function() { $('ul.nav a').bind('click',function(event){ var $anchor = $(this); /* if you want to use one of the easing effects: $('html, body').stop().animate({ scrollLeft: $($anchor.attr('href')).offset().left }, 1500,'easeInOutExpo'); */ $('html, body').stop().animate({ scrollLeft: $($anchor.attr('href')).offset().left }, 1000); event.preventDefault(); }); }); </script>

  • jQueryで困っています。教えてください。

    スムーススクロールを導入しようと、いろいろ調べて以下のものを参考にさせていただこうと考えています。どうゆう流れになっているのかを調べて分からないことがあったので投稿させていただきました。var target = jQuery(href == "#" || href == "" ? 'html' : href);この行の意味がわかりません。また、targetに何が代入されているのか分かりません。回答よろしくお願いします。 jQuery-------------------------------------------- //スムーズスクロール jQuery(function(){ // #で始まるアンカーをクリックした場合に処理 jQuery('a[href^=#]').click(function() { // スクロールの速度 var speed = 1000; // ミリ秒 // アンカーの値取得 var href= jQuery(this).attr("href"); // 移動先を取得 var target = jQuery(href == "#" || href == "" ? 'html' : href); // 移動先を数値で取得 var position = target.offset().top; // スムーススクロール jQuery('body,html').animate({scrollTop:position}, speed); return false; }); });

  • JavaScriptのプログラムについて

    $(function(){ $("#top a").click(function(){ $('html,body').animate({ scrollTop: $($(this).attr("href")).offset().top }, 'slow','swing'); return false; }) $("#question a").click(function(){ $('html,body').animate({ scrollTop: $($(this).attr("href")).offset().top }, 'slow','swing'); return false; }) $("#q001 a").click(function(){ $('html,body').animate({ scrollTop: $($(this).attr("href")).offset().top }, 'slow','swing'); return false; }) $("#q002 a").click(function(){ $('html,body').animate({ scrollTop: $($(this).attr("href")).offset().top }, 'slow','swing'); return false; }) $("#q003 a").click(function(){ $('html,body').animate({ scrollTop: $($(this).attr("href")).offset().top }, 'slow','swing'); return false; }) $("#q004 a").click(function(){ $('html,body').animate({ scrollTop: $($(this).attr("href")).offset().top }, 'slow','swing'); return false; }) }); ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ HTMLは少し分かりますが JavaScriptがまったく分からない素人です。 ネットで調べて上記のようにプログラムし ページ内リンクを流れるようにスクロールさせることは出来ました。 まずこのプログラムの書き方で合っていますでしょうか? また、同じ記述が繰り返されているので短くしてやろうと自分なりに $("#q001 a") $("#q002 a") $("#q003 a") $("#q004 a") $("#q005 a").click(function(){ $('html,body').animate({ scrollTop: $($(this).attr("href")).offset().top }, 'slow','swing'); return false; }) ↑のような全くの当て推量の書き方をしてみましたが動作しませんでした。 省略したり短く出来る余地があればそれも教えていただきたいです。 分かる方がおられましたらお願いします。

  • jQuery .click()関数について

    お世話になります。 アンカーにリンクする際URLに#example等が付いてしまうのを回避する為調べた所 $(function(){ // #で始まるアンカーをクリックした場合に処理 $('a[href^=#]').click(function() { // スクロールの速度 var speed = 400;// ミリ秒 // アンカーの値取得 var href= $(this).attr("href"); // 移動先を取得 var target = $(href == "#" || href == "" ? 'html' : href); // 移動先を数値で取得 var position = target.offset().top; // スムーススクロール $($.browser.safari ? 'body' : 'html').animate({scrollTop:position}, speed, 'swing'); return false; }); }); と、大変参考になるJavaScriptコードがありました。 このコードをそのまま流用させて頂いた所ページ内リンクについては解決しましたが #から始まるアンカーのみのクリックイベントで記述されてますので 別ページのアンカーに対応できません。 (<a href="../test#example">とリンクを貼っています。) 別ページのアンカーも同じく#example等表示させたくないのですが その場合はどのような記述をすれば良いのでしょうか。 どうか知恵を貸して下さい。よろしくお願いします。

  • メインウィンドウサイズの高さを500ピクセル以下に制限する方法を教えてください。

    お世話になっております。 現在、スクロールメニューバーでコンテンツを作っていますが、 スクロールするメニューの高さよりウインドウの高さを小さくすると、 エクセルの様にスクロールバーが永遠と続きます。 苦肉の策として、ウインドウの高さをメニューバーの高さより小さく出来ないようにしようと考えましたが、方法がわかりません。 教えてください。 ちなみに、現状のjavascriptは下記のものを使用しています。 <script type='text/javascript' src='http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js?ver=1.3.2'></script> <script type="text/javascript"> $(function() { var offset = $("#sidebar").offset(); var topPadding = 15; $(window).scroll(function() { if ($(window).scrollTop() > offset.top) { $("#sidebar").stop().animate({ marginTop: $(window).scrollTop() - offset.top + topPadding }); } else { $("#sidebar").stop().animate({ marginTop: 0 }); }; }); }); </script>

  • safariでアンカーリンクが動作しません

    safariでアンカーリンクを反応するようにしたいのですが、動作してくれません。他のブラウザだと問題ありません。 調べて、ファイル名ではなくhttp~にすれば反応するということを聞いたのですが、ネットをつながない環境で見れるようにする必要があるのでどうしてもファイル名のまま動作させなければなりません。 記述しているタグはこのようになっています。 <a href="home.html#start">home</a> どうにか、ネットにつなぐことなくsafariでアンカーリンクを動作させる術はないでしょうか? どなたかご教授お願いいたします。

  • アップロードしたらアンカーがちゃんと動作しない。大変困ってます。

    ファイルをサーバにアップロードしたら、急にHTMLのアンカータグの動作が不安定になりました。 例: 下記のようなターゲット(id="2")を <div class="green" id="2"> ここに跳ぶ </div> abc.htmlにセットするとします。 そして、 下記のようなアンカーを <a href=" abc.html#2">テスト</a> abc.html及びdef.htmlにセットするとします。 つまり、abc.htmlファイル内では、同ページ内の特定の位置(id="2"の位置)へ、そしてdef.htmlからは他のファイル(abc.html)の特定の位置(id="2"の位置’)へリンクしたいのです。 ここで、abc.htmlファイルの内の上記アンカーからabc.htmlファイルの特定の位置(id="2"の位置)へのリンクは問題なく作動しますが、def.htmlファイル内の上記アンカーからabc.htmの特定の位置(id="2"の位置’)へのリンクの動作が不安定です。不安定というのは、このようなアンカーを幾つか使用しているのですが、全く動作しないもの又はクリックごとにちゃんと動作したりしなかったりするものがあります。全く動作しない(及びちゃんと動作しない)場合、def.htmlファイル内の上記アンカーからabc.htmの特定の位置(id="2"の位置)へ跳ばずにabc.htmのページトップに移動します。ただし、def.htmlからabc.htmへは毎回ちゃんと移動します。 この現象は、サーバ上でアンカーを動作させた場合にのみおきます。何度ファイルのアップロードを繰返しても解消できません。 どのようにすればこの問題が解消できるか、教えて下さい。 DreamWeaverMX2004を利用して開発していますが、ローカルのPC上で、テストしているときは、全てのアンカー(上記で説明しているアンカーも含めて)は問題なく動作します。サーバ上でアンカーを動作させた場合にのみ上記のような問題がおきます。 また、通常のリンク(ファイル内の特定の位置を指定しないリンク)は、サーバ上でも全てちゃんと動作します。 よろしくお願いします。

  • ページ内アンカーに移動しない:

    ページ内アンカーに移動しない: あるページ"A"に <div id = "TOP"></div>と設定し ページ"B"に <a href="test.html#TOP">test<a> と設定しました。 動作確認をした結果、Firefox・クロムと正常に動くのですが IEが全バージョンで、該当ページに飛ぶのですが、アンカーに 移動しません。 ローカルにてテストをした結果、IEで通常に移動します。 調べた所、 javascript等が使用されているとリンク先ジャンプ後にセキュリティの確認 が有るため、アンカーリンクが消されると書いてあったので javascript部分を全て削除し、動作確認をしたのですが やはりアンカーに飛んでくれません。 どなたか、ご教示ください。

  • 二つのJava Scriptを使うと動かない

    現在ウェブサイトを制作中ですがJavascriptについては配布されている物を設置すること位しかできません。 ウェブサイトの特徴として、横スクロールサイトであり、どうしてもギャラリーを設置したいのです。 横スクロールの為に <script type="text/javascript" src="jquery-1.6.2.min.js"></script> <script type="text/javascript" src="jquery.easing.1.3.js"></script> <script type="text/javascript"> $(function() { $('ul.nav a').bind('click',function(event){ var $anchor = $(this); $('html, body').stop().animate({ scrollLeft: $($anchor.attr('href')).offset().left }, 1500,'easeInOutExpo'); //easeInOutExpoはeasingプラグインから選べます event.preventDefault(); }); }); </script> とし、 マウスの上下スクロールで左右の動きをさせるために <script type="text/javascript" src="vscroll.js"></script> を置いてました。 この時点で動作は正常だったのですが、 ギャラリーが必要なため、lightbox <link rel="stylesheet" href="css/lightbox.css" type="text/css" media="screen" /> <script src="js/prototype.js" type="text/javascript"></script> <script src="js/scriptaculous.js?load=effects,builder" type="text/javascript"></script> <script src="js/lightbox.js" type="text/javascript"></script> を置くと横スクロールとlightboxの動きができなくなり、レイアウトも崩れました。 どなたか詳しい方がいらっしゃいましたら、ご教授いただけませんでしょうか。 またlightboxにはこだわらないので、横スクロールサイトでギャラリーを設置できる方法がありましたら、教えてください。 ちなみにCSSでモーダルウィンドウを設置してみたのですが、横スクロールということもあり、Firefoxで正常に見る事ができませんでした。(サムネイル画像をクリックすると一番左に戻る) よろしくお願いします

  • jqueryのスライドするナビゲーションについて

    現在、以下のjqueryを使用して横スクロールサイトを作成しているのですが、 (Smooth Vertical or Horizontal Page Scrolling with jQuery) http://tympanus.net/codrops/2010/06/02/smooth-vertical-or-horizontal-page-scrolling-with-jquery/ ナビゲーションに別のjQuery MagicLine Navigationというjqueryのスライドするメニューを配置しています。 デモ http://css-tricks.com/examples/MagicLine/ このスライドするラインを表示中のコンテンツに合わせてストップさせたいのですが、 横スクロールサイトでコンテンツが一つのhtmlファイルのため 止めることができません。 これを止める方法があれば実現させたいのですが、 どなたかお分かりの方がおられましたらご教授頂けませんでしょうか。 <javascript> $(function() { var $el, leftPos, newWidth, $mainNav = $("#example-one"); $mainNav.append("<li id='magic-line'></li>"); var $magicLine = $("#magic-line"); $magicLine .width($(".current_page_item").width()) .css("left", $(".current_page_item a").position().left) .data("origLeft", $magicLine.position().left) .data("origWidth", $magicLine.width()); $("#example-one li a").hover(function() { $el = $(this); leftPos = $el.position().left; newWidth = $el.parent().width(); $magicLine.stop().animate({ left: leftPos, width: newWidth }); }, function() { $magicLine.stop().animate({ left: $magicLine.data("origLeft"), width: $magicLine.data("origWidth") }); }); }); <html> <div class="nav-wrap"> <ul class="group" id="example-one"> <li class="current_page_item"><a href="#">Home</a></li> <li><a href="#">Buy Tickets</a></li> <li><a href="#">Group Sales</a></li> <li><a href="#">Reviews</a></li> <li><a href="#">The Show</a></li> <li><a href="#">Videos</a></li> <li><a href="#">Photos</a></li> <li><a href="#">Magic Shop</a></li> </ul> </div> どうぞ宜しくお願いいたします。

専門家に質問してみよう