お世話になります。
練習で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で質問しましょう!
似たような質問が見つかりました
- WordPress(ワードプレス) ワードプレスで、投稿一覧ページにタグを表示する方法 投稿につけたタグを、記事一覧ページにもカテゴリと 1 2023/05/10 21:41
- PHP アコーディオンPHPが上手くいかない 3 2022/07/15 16:29
- アプリ Edgeを操作するアプリについて 4 2023/05/11 22:48
- PHP php 入力画面から確認表示画面へ情報の受け渡しについて。 1 2023/06/07 18:00
- PHP PHP ページング データベース 1 2022/06/16 10:30
- PHP 掲示板のセキュリティについてアドバイスお願い致します 1 2023/08/11 20:44
- HTML・CSS トリミングで表示した画像をクリックで元どおりにしたい 3 2022/12/16 18:49
- JavaScript 指定したパスが現URLに含まれていたら特定要素を削除するJavascriptのコードを教えてください 2 2023/04/27 17:58
- その他(プログラミング・Web制作) python コードについて(初学者です) 3 2023/07/20 14:44
- ホームページ作成・プログラミング ホームページ月額更新管理費用 4 2023/04/22 12:38
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
チェックボックスに入っている...
-
<li></li>の数を制限
-
クリックした<a>タグのみにClas...
-
jQueryでネスト構造の<li>がク...
-
【javascript で動的に a タグ...
-
onmouseoverの表示切り替えが上...
-
SleniumBasicでコンパイルエラ...
-
embed要素のsrc属性の値を変更...
-
画像をクリックしてその地点の...
-
removeEventListenerについて
-
オンマウスオーバーで画像を表示
-
MAX関数を使ってからLEFT JOIN...
-
テキストエリア内の一部の文字...
-
【コーディング】途中から位置...
-
iframe内のリンク文字のマウス...
-
divのheight指定で画面一杯に表...
-
VC++2005で画面上にGIF画像(透...
-
Colorboxがうまく設置できません
-
スクロール可能なチェックボックス
-
【CSS】floatで左右に並べた...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
jqueryのsortableで一部ソート...
-
クリックした<a>タグのみにClas...
-
JQueryタブのアクティブ アン...
-
javascriptでEnterキーをtabキ...
-
「jQuery」アコーディオンメニ...
-
【jQuery】遅延実行(タイムラ...
-
ネストされたチェックボックス...
-
【javascript で動的に a タグ...
-
jquery ドロップダウンメニュー...
-
文字と数字が混在する要素のsor...
-
Jquery の slide.toggle で要素...
-
【jQuery】hoverしたn秒後にイ...
-
チェックボックスに入っている...
-
クリックで表示、非表示するメ...
-
同一ページ内で、任意の文字列...
-
オンマウスで画像ロールオーバ...
-
javascriptで、クリックしたら...
-
PHPでログインフォーム
-
<li>タグの順番を入れ替える方法
-
jQuery タブメニューへのダイ...
おすすめ情報
: takanami1000様
コードの記入までして頂きありがとうございます!
jqueryのライブラリを使った場合はどのようになるのでしょうか?
わざわざ記入して頂いたのに申し訳ありません。
もしも可能であればそちらも教えて頂けないでしょうか...