序言:在網絡上百度,關鍵字:“js div滾動到指定位置”,結果基本上大同小異!各種大神都給我們總結出來了四種滾動到指定位置的辦法,可惜再下愚鈍,每個都不會用,所以寫了一個超級簡單的方法來使初學者一看就懂,我們可以用邏輯來代替一部分技術!這里我們只用到一個屬性就可以達到要求,其他根據自己的邏輯判斷即可!獲取到你最外層的div的id,然后獲取屬性scrollTop,然后想好邏輯,給scrollTop賦值即可!
1、scrollTop用法
1-1 什么是scrollTop?
向上的滾動距離,或者說滾動出可視區域的距離
1-2 語法
// 獲得滾動的像素數 var intElemScrollTop = someElement.scrollTop; // 設置滾動的距離 element.scrollTop = intValue;
1-3 scrollTop賦值
scrollTop賦值為負數的時候,scrollTop賦值為0;
如果一個元素不能滾動,scrollTop賦值為0;
如果設置超出了容器的可滾動值,scrollTop將會賦值為最大值;
1-4 可否通過設置scrollTop的值 來改變滾動的值,嘗試中。。。。。。
嘗試結果為:改變srcollTop並不會改變滾動條的位置!
再次嘗試發現:改變整體的div的scrollTop可以改變滾動條的位置,上次嘗試id值取錯!
2、滾動的需求
2-1:點擊按鈕,使得div中滾動的內容列表中的某一條數據指定!(或者你看微信聊天中“微信”左下角的tabbar,你如果多次點擊你就會發現,如下代碼就是可以實現微信的這個功能!
可以使用scrollTop 這個屬性來完成
前提條件:div中的每條數據的高度是一致的,也就是說每條數據都有一樣的高度,這樣都可以根據scrollTop = X * Y (X為列表中的那個索引,Y為數據寬度,例如:每條數據的寬度為100px,你想讓第五條數據置頂,結果為:4 * 100 = scrollTop;這樣,第五條數據就可以置頂了!
我真的不知道該怎么寫下去了,我的開發環境里邊有狀態管理,可以管理一些狀態來便利我的書寫,並且都是必要的!
我就暫時寫一些核心代碼吧!有機會的話,錄個屏幕會更清晰一些!
我寫了一個最簡單的邏輯供參考!可以建一個空html文件,然后代碼全部復制,在瀏覽器中打開,即可實現!
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> </head> <body> <div id="scrollBody" style="position:absolute;top:0;bottom:0;left:0;right:0;overflow:scroll;height:300px;"> <div style="font-size:20px;height:100px;"> 1 </div> <div style="font-size:20px;height:100px;"> 2 </div> <div style="font-size:20px;height:100px;"> 3 </div> <div style="font-size:20px;height:100px;"> 4 </div> <div style="font-size:20px;height:100px;"> 5 </div> </div> <div style="position:relative;top:350px;"> <button onClick="scrollToTop()">按鈕1</button> <button>按鈕2</button> </div> <script> function scrollToTop(){ // 這里邊可以寫一些邏輯,比如偶數行一個一個的置頂,不如狀態等於0的一個一個的置頂! document.getElementById('scrollBody').scrollTop = 200; } </script> </body> </html>
后續:這個代碼為小白所寫,沒有自定義動畫滾動效果!會更新!