如果滾動(dòng)頁(yè)面也是DOM沒(méi)有解決的一個(gè)問(wèn)題。為了解決這個(gè)問(wèn)題,瀏覽器實(shí)現(xiàn)了一下方法,以方便開(kāi)發(fā)人員如何更好的控制頁(yè)面的滾動(dòng)。在各種專有方法中,HTML5選擇了scrollIntoView()作為標(biāo)準(zhǔn)方法。scrollIntoView()可以在所有的HTML元素上調(diào)用,通過(guò)滾動(dòng)瀏覽器窗口或某個(gè)容器元素,調(diào)用元素就可以出現(xiàn)在視窗中。如果給該方法傳入true作為參數(shù),或者不傳入任何參數(shù),那么窗口滾動(dòng)之后會(huì)讓調(diào)動(dòng)元素頂部和視窗頂部盡可能齊平。如果傳入false作為參數(shù),調(diào)用元素會(huì)盡可能全部出現(xiàn)在視口中(可能的話,調(diào)用元素的底部會(huì)與視口的頂部齊平。)不過(guò)頂部不一定齊平.
一、scrollIntoView
html
<div><h2>scrollIntoView</h2><button id="roll1">scrollIntoView(false)</button><button id="roll2">scrollIntoView(true)</button><div><div id="myDiv"></div><div id="roll_top">scrollIntoView(ture)元素上邊框與視窗頂部齊平<span id="bottom">scrollIntoView(false)元素下邊框與視窗底部齊平</span></div></div></div>
css
#myDiv {height: 900px;background-color: gray; }#roll_top {height: 900px;background-color: green;color: #FFF;font-size: 50px;position: relative; }#bottom {position: absolute;display: block;left: 0;bottom: 0; }
js
window.onload = function () { document.querySelector("#roll1").onclick = function () { document.querySelector("#roll_top").scrollIntoView(false); }; document.querySelector("#roll2").onclick = function () { document.querySelector("#roll_top").scrollIntoView(true); }; }
二、滾動(dòng)監(jiān)聽(tīng)
html
<div><h2>scroll</h2><div id="nav"><div class="f1">floor1</div><div class="f2">floor2</div><div class="f3">floor3</div><div class="f4">floor4</div><div class="f5">floor5</div></div><p>頁(yè)面結(jié)構(gòu)</p><div class="main"><div id="f1">測(cè)試1</div><div id="f2">測(cè)試2</div><div id="f3">測(cè)試3</div><div id="f4">測(cè)試4</div><div id="f5">測(cè)試5</div></div></div>
css
.main div {height: 1000px;width: 300px;margin: 20px;background-color: #C0C0C0; }#nav {position: fixed;width: 100px;height: 200px;top: 40%;right: 10px; }#nav div {cursor: pointer;text-align: center; }
js
$(function () { $(window).scroll(function () {//為頁(yè)面添加頁(yè)面滾動(dòng)監(jiān)聽(tīng)事件var wst = $(window).scrollTop(); //滾動(dòng)條距離頂端值for (var i = 1; i < 6; i++) { //加循環(huán)if ($("#f" + i).offset().top <= wst + 10) { //判斷滾動(dòng)條位置$('#nav div').css("background-color", "white"); $(".f" + i).css("background-color", "red"); } } }); $('#nav div').click(function () { $('html,body').animate({scrollTop: $("#" + this.className).offset().top}, 500);// $("#" + this.className)[0].scrollIntoView(true);//h5 scrollIntoView()}); });
全部代碼


<!DOCTYPE html><html><head><meta charset="utf-8"><title>h5之scrollIntoView控制頁(yè)面元素滾動(dòng)</title><style>/*scrollIntoView*/#myDiv {height: 900px;background-color: gray;}#roll_top {height: 900px;background-color: green;color: #FFF;font-size: 50px;position: relative;}#bottom {position: absolute;display: block;left: 0;bottom: 0;}/*scroll*/.main div {height: 1000px;width: 300px;margin: 20px;background-color: #C0C0C0;}#nav {position: fixed;width: 100px;height: 200px;top: 40%;right: 10px;}#nav div {cursor: pointer;text-align: center;}</style></head><body><div><h2>scrollIntoView</h2><button id="roll1">scrollIntoView(false)</button><button id="roll2">scrollIntoView(true)</button><div><div id="myDiv"></div><div id="roll_top">scrollIntoView(ture)元素上邊框與視窗頂部齊平<span id="bottom">scrollIntoView(false)元素下邊框與視窗底部齊平</span></div></div></div><div><h2>scroll</h2><div id="nav"><div class="f1">floor1</div><div class="f2">floor2</div><div class="f3">floor3</div><div class="f4">floor4</div><div class="f5">floor5</div></div><p>頁(yè)面結(jié)構(gòu)</p><div class="main"><div id="f1">測(cè)試1</div><div id="f2">測(cè)試2</div><div id="f3">測(cè)試3</div><div id="f4">測(cè)試4</div><div id="f5">測(cè)試5</div></div></div><script>window.onload = function () {/* 如果滾動(dòng)頁(yè)面也是DOM沒(méi)有解決的一個(gè)問(wèn)題。為了解決這個(gè)問(wèn)題,瀏覽器實(shí)現(xiàn)了一下方法,以方便開(kāi)發(fā)人員如何更好的控制頁(yè)面的滾動(dòng)。 在各種專有方法中,HTML5選擇了scrollIntoView()作為標(biāo)準(zhǔn)方法。scrollIntoView()可以在所有的HTML元素上調(diào)用, 通過(guò)滾動(dòng)瀏覽器窗口或某個(gè)容器元素,調(diào)用元素就可以出現(xiàn)在視窗中。如果給該方法傳入true作為參數(shù),或者不傳入任何參數(shù), 那么窗口滾動(dòng)之后會(huì)讓調(diào)動(dòng)元素頂部和視窗頂部盡可能齊平。如果傳入false作為參數(shù),調(diào)用元素會(huì)盡可能全部出現(xiàn)在視口中(可能的話,調(diào)用元素的底部會(huì)與視口的頂部齊平。)不過(guò)頂部不一定齊平. */document.querySelector("#roll1").onclick = function () { document.querySelector("#roll_top").scrollIntoView(false); }; document.querySelector("#roll2").onclick = function () { document.querySelector("#roll_top").scrollIntoView(true); }; }</script><script src="http://apps.bdimg.com/libs/jquery/2.1.1/jquery.min.js?1.1.11"></script><script>$(function () { $(window).scroll(function () {//為頁(yè)面添加頁(yè)面滾動(dòng)監(jiān)聽(tīng)事件var wst = $(window).scrollTop(); //滾動(dòng)條距離頂端值for (var i = 1; i < 6; i++) { //加循環(huán)if ($("#f" + i).offset().top <= wst + 10) { //判斷滾動(dòng)條位置 $('#nav div').css("background-color", "white"); $(".f" + i).css("background-color", "red"); } } }); $('#nav div').click(function () { $('html,body').animate({scrollTop: $("#" + this.className).offset().top}, 500);// $("#" + this.className)[0].scrollIntoView(true);//h5 scrollIntoView()}); });</script></body></html>
View Code