ページの現在地による要素へのclassの追加

このQ&Aのポイント
  • HTML5で書かれているサイトを見て回っていましたら、東京大学TLOのサイトにたどり着きました。
  • このサイトでは、ページをスクロールすると、ページ左側のナビゲーションがページに同調して、表示されたセクションのリンクが選択された状態になります。
  • Firebugでソースを監視しながら見ていると、表示されているセクションをリンクしているli要素に、class="current"が追加されています。
回答を見る
  • ベストアンサー

ページの現在地による要素へのclassの追加

現在ホームページを作成しようとしていまして、HTML5で書かれているサイトを見て回っていましたら、東京大学TLOのサイト(http://www.casti.co.jp/)にたどり着きました。 このサイトでは、ページをスクロールすると、ページ左側のナビゲーションがページに同調して、表示されたセクションのリンクが選択された状態になります。 FirefoxのアドオンであるFirebugでソースを監視しながら見ていると、表示されているセクションをリンクしているli要素に、class="current"が追加されています。個人的には、javascriptか、それで記述されたJQueryで、表示領域の特定とclassの追加を行っていると思うのですが、ソースにそのような記述がありません。私がjavascriptやJQueryにあまり明るくないために見つけられないだけかもしれませんが。。。 面白い技術ですので、ぜひ理解し、できれば今後のHP作成に生かしたいと思うのですが、どなたか説明していただけないでしょうか? よろしくお願いします。

  • CSS
  • 回答数2
  • ありがとう数3

質問者が選んだベストアンサー

  • ベストアンサー
  • ORUKA1951
  • ベストアンサー率45% (5062/11036)
回答No.1

同サイトのjs/script.jsに、 function setControls() { if(oB.settings.showDots) { $('#ob_dots').find('li').each(function(){ var i = 'ob_dot' + obj.data('ob_data').ob_index; if($(this).attr('id') === i) { $(this).addClass('current'); } else { $(this).removeClass('current'); } }); } の記述がありますけど・・・ Firefoxのアドオン・・・JSViewsでどうぞ・・

shift3125
質問者

お礼

<script src="js/script.js"></script>を見逃してました。 ここにちゃんとありましたね。 ありがとうございます。

その他の回答 (1)

回答No.2

スクロールの処理はwindow.onscrollです。 jQueryを使う場合は$(window).scroll()というのがあります。 http://api.jquery.com/scroll/

shift3125
質問者

お礼

ちゃんと、<script src="js/script.js"></script>ありました。 ありがとうございます。

関連するQ&A

  • PHPで、指定した要素の最後にHTMLを追加したい

    JavaScriptのjQueryで実現していた機能なのですが、 あるタグ内の最後に、記述を追加するのを 今度はPHPで実現したいと考えています そのような関数があれば教えていただけないでしょうか? 以下、補足です JavaScriptでの実現方法の説明ページ http://www.re-creators.jp/blog/2008/12/09_167.html JavaScriptで実現した際の記述結果 [JavaScriptでの記述] $('#test').append('<p>一行追加します。</p>').scrollTop(99999); [HTMLでの記述] <div id="test"><p>既存の一行です</p></div>

    • ベストアンサー
    • PHP
  • フレームページからのお気に入りに追加

    フレームを使用したページに、 JavaScriptでお気に入りの追加を入れ、 それをクリックして登録した後、 再びそのページを見ようとお気に入りからそのサイトに入った場合、 フレームページ全体が表示されるのではなく、 お気に入りに追加を入れたページのみが表示されます。 お気に入りに追加されたページをクリックした際に フレームページ全体を表示させる為の ソースの書き方はあるのでしょうか? できないならできないでよいので、その辺を、 知っている方がいましたら、よろしくお願いします。

  • jQueryで追加した要素がマウスホバーに反応しない

    jQueryを使って、ボタンを押すと要素を追加しています。 後から追加された要素はマウスホバーなどが有効にならないのですが、 対象方法などあるでしょうか。 下記のようなソースで質問の状態になります。 よろしくお願いします。 <html> <head> <title>test</title> <script type="text/javascript" src="system/jquery-1.3.2.min.js"></script> <script type="text/javascript"> <!-- jQuery(document).ready(function($){ jQuery(".edit").hover( function () { jQuery(this).css("background","yellow"); }, function () { jQuery(this).css("background","none"); } ); jQuery(".insert").click(function () { var html = "<div class='edit'><p>add-text</p></div>"; jQuery("#sortable .edit:first").before(html); }); }); // --> </script> </head> <body> <div><INPUT class="insert" type="button" value=INSERT></DIV> <div id="sortable" style="width:200px;"> <div class="edit"> <p>text1</p> </div> <div class="edit"> <p>text2</p> </div> <div class="edit"> <p>text3</p> </div> </div><!-- id="sortable" --> </body> </html>

  • jQuery slider2のページアイコン

    小生、ウェブサイト制作経験はアリながらもJavascriptに関しては全くの素人です。 既成のJavascriptプログラムの中でスライドショー向けのjQuery slider2をダウンロードし、 ウェブサイトに適応してみました。 概ね思った通りに作動するものの、スライダー部分の右下に表示されページアイコン(class="jquery-slider-page"として作成されている部分?)が、現在表示している部分に相当するアイコンをクリックすると、現在表示している画像を進行方向に流してしまい、背景が表示されるようになっています。 なおかつ、背景が表示された状態でもう一度同じアイコンをクリックすると、消えているはずの現在ページが一瞬表示されるものの、すぐに進行方向へ流してしまうというおかしな動作をします。 もともと期待されていた動作ではないと思うのですが、ダウンロードしてきたものをそのまま使ってこのような動作になってしまっていました。 不得手ながら中身を読み取ってみたところ、現在表示しているページのページアイコンをclass="jquery-slider-page"からclass="jquery-slider-page-current"に書き換えることで、アイコンの表示を変更しているようなので、一時的にclass="jquery-slider-page-current"のクリックを不可にすれば解決するのかなとは思うのですが、何かよい方法はないでしょうか。 使用しているjsは下記のとおりです。 https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js jquery.slider.min.js(http://wex.im/javascript/jquery-slider2にて公開されているファイルをダウンロードして使用) また、専用のCSSも特に書き換えなどせずに読み込ませて使用しています。 他にもjs併用はしていますが、紹介サイトでも同様の動作をしていたので、他のjsによる干渉などではない様です。 よろしくお願いします。

  • ajaxで追加したdom要素にscriptをあてる

    ajaxを利用して追加したhtmlに対して、既存のscriptのイベントが効かなくて困っています。 どういうことかというと、 まず流れとしては、 (1)【webページをブラウザで表示】 ↓ (2)【ajax通信でサーバーサイドでビュー(html)を生成】 ↓ (3)【ブラウザにそのビューを返して、それをjavascriptで既存のhtmlに追加】 となっております。 そして、この時、例えば、(1)の時にclass="sample"の要素に対してclickイベントを設定していて、(3)の時に追加された要素にもclass="sample"があったとします。 この時、新たに追加されたclass="sample"の要素に対してclickイベントが発生しないのです。 どなたか、解決策を教えてくれないでしょうか? 宜しくお願い致します。

    • ベストアンサー
    • AJAX
  • ネストされたdiv要素の中のa要素をクリック

    ネストされたdiv要素の中にa要素があるのですが、クリック出来ませんでした何かいい方法はありませんか? <div id="j,click"> <div> <section id="sample03"> <a class="button99 picture1 radius box_shadow" href="#" onclick="disp(99);return false;">戻る<a> </section> <div class="button99 lineargrad1"></div> <div class="box-area1-128 picture1-area1"></div> <div class="button99 linargrad2"></div> <div class="button99 shadow"></div> <div> <div> このように作成しました。 jQuery.biggerlinkではクリック出来るようになりましたが、javascriptの関数は呼び出すことは出来ませんでした。

  • div要素内の画像およびテキストリンクのランダム複数表示

    いろいろ探しましたが、うまくいっておりません。 サイトのトップページに商品リンクを張る予定で、 数十個ある商品リンクをランダムに5個表示(重複不可)させようと考えています。 それぞれの商品リンクは、 <div class="item"> 中はサムネイル画像、<div>商品名</div>、<div>商品説明</div>、<div>価格</div> </div> といった感じです。 5個の<div class="item">~</div>をランダムに表示させるjavascriptは、 どのように記述したらよいのでしょうか? よろしくお願いいたします。

  • nyroModal HEADタグ内の記述について

    nyroModal HEADタグ内の記述について http://nyromodal.nyrodev.com/#download 上記ページより、nyroModal1.6.2をダウンロードしました。 設置方法を下記サイト http://www.css-lecture.com/log/javascript/014.html で調べて、サイトの説明どおり設置してみたところ、headタグ内に記述する5行のソースが古いのか(jsファイルが1.2.8になってる)ダウンロードしたファイルと合わず、動作しませんでした。 自分なりに試行錯誤してみて、あてずっぽうですが、下記ソースに書き換えたところ、ギャラリー表示は正常に動作するようになりました。 <link rel="stylesheet" href="styles/nyroModal.css" type="text/css" media="screen" /> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script> <script type="text/javascript" src="js/jquery.nyroModal-1.6.2.js"></script> <script type="text/javascript" src="js/jquery.nyroModal-1.6.2.min.js"></script> <script type="text/javascript" src="js/jquery.nyroModal-1.6.2.pack.js"></script> しかし下記ページの一番下にあるデモと同じように、Googleへのリンク(外部ページを読み込む) http://www.css-lecture.com/template/2008/1001/ をする場合に、 <p><a href="http://www.google.co.jp/" class="nyroModal">Google</a></p> と、記述してもウィンドウサイズが400×300くらいに固定されてしまって縦横にスクロールバーが出てしまい、サイト全体が表示できません。 cssやjsのファイルを編集しようと探してみましたが、ウィンドウサイズを指定しているような記述を見つけることができませんでした。 現在のヴァージョンで正常に動作させるためには、headタグ内にどのような記述をしたら良いでしょうか。 また、外部リンクの際にウィンドウサイズを指定できる方法はありますでしょうか。 当方、ネットで独学で調べて設置をしている初心者ですので的外れな質問をしているかもしれませんが、ご教授いただけますでしょうか。 よろしくお願いいたします。

  • Facebookページにアプリを追加

    Facebookページにアプリを追加する方法が分からず困っております。 添付の画像はデベロッパーページの表示です。 左が以前制作したアプリの詳細画面に表示されるメニューで、 右が先日作成したアプリの詳細画面に表示されるメニューです。 以前はFacebookページにアプリを追加する場合、赤枠で囲った 「アプリのプロフィールページを見る」から遷移した先で 任意のページにアプリを追加することができました。 しかし、先日作成したアプリには「アプリのプロフィールページを見る」のリンクがなく、 追加ができない状態です。 2011/10/1からのSSL対応完全義務化関連の仕様変更でしょうか? だとしたら、SSL対応すれば以前のようにリンクが表示されるのでしょうか? 何かお分かりのことがございましたらご教授願えますでしょうか。 よろしくお願いいたします。

  • javascriptでスライドするページの作成

    はじめまして。 ホームページを作成しているものです。 先日就航した全日空787のホームページのデザインが気に入って このようにページを横にスクロールして見せたいと思いました。 私はjavascriptのコードを一から書く知識がないので このような表現を代用できるテンプレートがあるのかご存知の方がいらっしゃいましたら お聞きしたいと思い投稿致しました。 参照サイト 全日空の787型機のオフィシャルサイト http://www.ana.co.jp/promotion/b787/mwj/ 細かい点になりますが、 ・javascriptページ内のテキストの縦のスクロールする方法 ・javascriptページにリンクを貼る方法→スライドするページは1枚の画像で制作する方法は試したことがあるのですが参照サイトのように、他のページへのリンクボタン、YouTubeへのリンクボタンを埋め込む方法が分かりません。 ・javascriptページ下のナビゲーションボタン(クリックすると伸びて、各ページの小さい画像が現れる)の作り方 も合わせてお分かりになりましたらどうぞよろしくお願い致します。