スクロールスタイルが変化したナビゲーション

<!DOCTYPE htmlののPUBLIC " - // W3C // DTD XHTML 1.0過渡// EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<HTMLのxmlns = "HTTP ://www.w3.org/1999/xhtml "> 
	<HEAD> 
		<META HTTP-当量=" Content-Typeの」コンテンツ= "text / htmlの;のcharset = UTF-8" /> 
		<タイトル>随着滚动条滚动的タブ切换</ TITLE> 
		<スタイル> 
			* { 
				リストスタイル:なし。
				マージン:0; 
				パディング:0; 
				テキスト装飾:なし; 
				フォントファミリ:「微軟雅黒」; 

			} 

			のLi { 
				幅:100pxに。
				高さ:は50px; 
				行の高さ:は50px; 
				フロート:左; 
				ボーダー右:2ピクセル固体#eee。
				テキスト整列:センター; 
				カーソル:ポインタ;
			} 

			UL { 
				幅:1200px。
				マージン:0自動; 
			} 

			.nav { 
				高さ:52px; 
				幅:100%; 
				背景:#f5f5f5; 
			} 

			.nav .CUR { 
				背景:#FFF。
				border-top:2ピクセル固体#1 1a92cf。
				色:#1a92cf。
			} 

			{.fixed 
				位置:固定。
				トップ:0; 
				左:0; 
			} 

			{ 
				色:#505050。
			} 
		</スタイル> 
	</ head> 
	<body> 
		<DIV CLASS = "NAV" ID = "NAV-コンテナ"> 
			<ULクラス= "メニュー" ID = "NAV-ボックス"> ` 
				<LIクラス= "CUR" >テキスト1-NAV < 
		</ div> 
		<DIV ID = "テキスト"> 
			<divのスタイル= "幅:100%;高さ:500pxなど;背景:緑;テキスト整列:センター;">テキスト1 < / div> 
			<divのスタイル= "幅:100%;高さ:500pxなど;背景:黄色;テキスト整列:センター;">テキスト2 </ div> 
			<divのスタイル= "幅:100%;高さ:500pxなど;背景:ブルー;テキスト整列:センター; ">テキスト3 </ div> 
		</ div> 

		<スクリプト> 
			VAR navContainer =のdocument.getElementById(" NAV-コンテナ"); //获取导航IDの
			VAR navBox =のdocument.getElementById(" NAV -box "); //获取UL的識別
			VARテキスト=のdocument.getElementById("テキスト"); //获取滚动内容的識別
			VAR navBoxChild = navBox.children。//ナビゲーションのULの数を取得
			するvar textChild = text.childrenを; //コンテンツの取得数
			のvar NUM = navContainer.offsetTopを、トップの高さの//ナビゲーション距離//コンテンツの数取得
			//高ナビゲーション; VARのA = navContainer.offsetHeight 
			window.onscroll =関数(){ 
				VAR scrollTopスプライトdocument.documentElement.scrollTop || = || window.pageYOffset document.body.scrollTop; 
				IF(scrollTopスプライト> = NUM){ 
					document.getElementsByClassName( 'MENU')[ 0] .style.cssText = '位置:固定;トップ:0PX;背景:#000;シャドウボックス- :0 2ピクセル3px -1px#000;'; 
				}他{ 
					document.getElementsByClassName( 'MENU')[0]。 = style.cssText '位置:静的;'; 
				} 
				とき//対応する文書とナビゲーション接触が自動的に切り替えられ
				法1を// 
				ため(VARのI = 0;私は<navBoxChild.lengthを、Iは++){ 
					IF(scrollTopスプライト+> = textChild [I] .offsetTop){ 
						J <navBoxChild.length; J ++){(VARのJ = 0 
							= "" navBoxChild [J] .className。
						}
						navBoxChild [I] .className = "CUR"。 
							document.body.scrollTop / = 1.1;
					} 
				}
			}。
			{(; iはnavBoxChild.lengthを<I ++がVAR I = 0)についての
				VaRの間隔; 
				navBoxChild [i]は.INDEX = I。
				navBoxChild [i]は.onclick =関数(){ 
					VAR自己=この; 
					clearInterval(間隔)。
					間隔=のsetInterval(関数(){ 
						IF(document.body.scrollTop + <= textChild [self.index] .offsetTop){ 
							document.body.scrollTop + = 40; 
							IF(document.body.scrollTop + A> = textChild 【self.index] .offsetTop){ 
								document.body.scrollTop = textChild [self.index] .offsetTop - ; 
								てclearInterval(インターバル); 
							} 
						}そう{
							IF(document.body.scrollTop + <= textChild [self.index] .offsetTop){
								document.body.scrollTop = textChild [self.index] .offsetTop - 。
								clearInterval(間隔)。
							} 
						} 
					}、40); 
				}。
			} 
		</ SCRIPT> 
	</ body> 
</ HTML>

 固定ナビゲーション

VAR 0 =のdocument.getElementById( "活性")。
			VARさh = o.offsetHeight。//高度
			VARワット= o.offsetWidth。//宽度
			にconsole.log(H)
			document.addEventListener( 'スクロール'、関数(イベント){ 
				VAR scrollDistance = window.pageYOffset || || document.documentElement.scrollTop document.body.scrollTop; 
				IF(scrollDistance> = H- 95){//触发的位置
					document.getElementsByClassName( 'メニュー')[0] .style.cssText =「位置:固定;上部:0PX;背景:#000;ボックスシャドウ:0 2ピクセル3px -1px#000。 '; 
				}他{ 
					document.getElementsByClassName('メニュー')[0] .style.cssText = '位置:静的;'; 
				} 
			})。
			

  

 

 

参考   スクロールするスクロールバーを実装ネイティブJS、自動的にナビゲーション効果を切り替えます

おすすめ

転載: www.cnblogs.com/qing1304197382/p/10963472.html