お世話になります。
練習でHP制作を行っているのですが行き詰ってしまいました…。
知恵をお貸し頂けませんでしょうか。
http://www.nomatokyo.ayapro.ne.jp/
こちらのページを参考にHP制作を行っています。
こちらのサイトのメインページの右端にあるページのカレント表示(オレンジのつぶつぶ)と
同じものを作りたいのですが自力で調べてみて参考にコードを書いてみるもどうしてもうまくいきません。
<a>タグなどはなく、<ul>の中の<li>にactiveを付与するものですが、スクロール地点の取得の仕方やコードの組み立て方がどうしても頭の中でぐちゃぐちゃになってしまいます。
どなたか教えて頂けないでしょうか。
No.1ベストアンサー
- 回答日時:
clientHeightで各コンテンツの位置を取得しておいて、スクロールが発生したらその時の位置と取得しておいた各コンテンツの位置を比較すれば良いかと思います。
とりあえず最低限の実装で再現してみました。
<html lang="ja">
<head>
<meta charset="utf-8" />
<style type="text/css">
.box {
width: 100%;
height: 1500px;
font-size: 40px;
}
.box1, .box7 {
height: 100px;
}
.box1, .box3, .box5, .box7 {
background-color: #ffeeee;
}
.box2, .box4, .box6 {
background-color: #eeffee;
}
.ul {
position: fixed;
right: 20px;
top: 40%;
z-index: 10;
}
.ul > li {
color: red;
opacity: 0.3;
}
.ul > li.active {
opacity: 1;
}
</style>
<script type="text/javascript">
var pos={};
var currentPos = 0;
function heightSet() {
pos[0] = document.getElementById("header").clientHeight;
pos[1] = pos[0] + document.getElementById("contents0").clientHeight;
pos[2] = pos[1] + document.getElementById("contents1").clientHeight;
pos[3] = pos[2] + document.getElementById("contents2").clientHeight;
pos[4] = pos[3] + document.getElementById("contents3").clientHeight;
pos[5] = pos[4] + document.getElementById("contents4").clientHeight;
}
window.onscroll = function(){
var p = window.pageYOffset || document.documentElement.scrollTop;
for(var i=0; i<5; i++){
if(p >= pos[i] && p < pos[i+1] && i != currentPos) {
var li = document.getElementById("ul").children;
li[currentPos].className = '';
li[i].className = 'active';
currentPos = i;
break;
}
}
}
</script>
</head>
<body onload="heightSet()">
<ul class="ul" id="ul">
<li class="active"> </li>
<li> </li>
<li> </li>
<li> </li>
<li> </li>
</ul>
<div id="header" class="box box1">header</div>
<div id="contents0" class="box box2">A</div>
<div id="contents1" class="box box3">B</div>
<div id="contents2" class="box box4">C</div>
<div id="contents3" class="box box5">D</div>
<div id="contents4" class="box box6">E</div>
<div id="footer" class="box box7">footer</div>
</body>
</html>
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Jquery の slide.toggle で要素...
-
jqueryのsortableで一部ソート...
-
【jQuery】hoverしたn秒後にイ...
-
ドロップダウンリストの高さを...
-
jQueryのeqで最後からn番目以降...
-
同一ページ内で、任意の文字列...
-
PukiWikiの左メニューでonMouse...
-
Javascript テキストのみのSELECT
-
onmouseoverの表示切り替えが上...
-
クリックした<a>タグのみにClas...
-
MAX関数を使ってからLEFT JOIN...
-
classの中の<a>タグにidを追加
-
iframe内のリンクが飛ばないの...
-
eclipseでcssを使うためには?
-
JavaScriptとチェックボックス...
-
document.all.id1.innerText="ok";
-
Slick.jsのオプションrtlについて
-
クリックで色変更後に既に変更...
-
1つ1つの画像にイベントを発生...
-
複数画像のランダム複数表示(...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「jQuery」アコーディオンメニ...
-
jqueryのsortableで一部ソート...
-
jquery ドロップダウンメニュー...
-
JQueryタブのアクティブ アン...
-
ネストされたチェックボックス...
-
jQueryのeqで最後からn番目以降...
-
スムーズスクロールとfleXcroll...
-
大量のチェックボックス状態取...
-
jQueryでネスト構造の<li>がク...
-
スタイルシートでロールオーバ...
-
チェックボックスに入っている...
-
画像のリンクをクリックすると...
-
どの<li><a> が押されたか判別...
-
javascript テキストエリアを1...
-
jquery中のmatch関数が正常に動...
-
jQueryで電卓を作っているのですが
-
javascriptでEnterキーをtabキ...
-
javascriptで教えてください。 ...
-
多階層ドロップダウンのスマホ...
-
タブ切り替えの初期表示について
おすすめ情報
: takanami1000様
コードの記入までして頂きありがとうございます!
jqueryのライブラリを使った場合はどのようになるのでしょうか?
わざわざ記入して頂いたのに申し訳ありません。
もしも可能であればそちらも教えて頂けないでしょうか...