dom元素的滾動(如何實現點選展開更多功能)

2022-09-03 19:27:11 字數 2177 閱讀 2432

視窗可視高度和寬度

document.documentelement對應的標籤是html

document.documentelement.clientheight()

document.documentelement.clientwidth()

alert( window.innerwidth ); // 整個視窗的寬度

alert( document.documentelement.clientwidth ); // 視窗減去滾動條的寬度

一般使用去除掉滾動條的document.documentelement.clientwidth()

相容性更好的獲取當前文件/頁面水平方向已滾動的畫素值,使用

console.log(window.pagexoffset)

console.log(window.pageyoffset)

如何將視窗按照我們想的偏移量滾動呢?

window.scrollby(x,y)

// 方法 scrollby(x,y) 滾動頁面至相對於現在位置的 (x, y) 位置。例如,scrollby(0,10) 頁面向下滾動 10px

滾動到視窗的某個座標

window.scrollto(pagex,pagey)

// 方法 scrollto(pagex,pagey) 滾動頁面至相對於文件的左上角的 (pagex, pagey) 位置

// 就好像設定 scrollleft/scrolltop,回到頂部, 我們可以用 scrollto(0,0)。

當前元素滾動到視窗的頂部或者底部

btn3.addeventlistener('click',function() )

btn4.addeventlistener('click',function() )

禁止滾動

overflow: hidden;
這個方法的缺點是會使滾動條消失。如果它占用了一些空間,它原本占用的空間就會空出來,使元素本身的內容「跳」出來填滿空出來的空間裡。

這看起來就有點怪怪的。但我們可以解決這個問題:通過對比凍結前後的clientwidth如果在clientwidth增加(滾動條消失)時,將padding新增到document.body取代滾動條來保持內容寬度不變

clientleftclienttop

元素的邊框寬度和高度

clientheightclientwidth

測算出可見區域的內邊距和內容寬度(不會將滾動條計算在內),如果沒有內邊距內容區域就等於clent...的值

scrollwidthscrollheight包括可見區域和滾動的隱藏的高度或者寬度

實現點選展開全文的效果

靜夜思 床前明月光,

疑是地上霜。

舉頭望明月,

低頭思故鄉。

國風·周南·關雎

先秦:佚名

關關雎鳩,在河之洲。窈窕淑女,君子好逑。

參差荇菜,左右流之。窈窕淑女,寤寐求之。

求之不得,寤寐思服。悠哉悠哉,輾轉反側。

參差荇菜,左右采之。窈窕淑女,琴瑟友之。

參差荇菜,左右芼之。窈窕淑女,鐘鼓樂之。

上元夜六首·其一

唐代:崔液

玉漏銀壺且莫催,鐵關金鎖徹明開。

誰家見月能閒坐?何處聞燈不看來?

點選展開全文

scrollleftscrolltop

元素隱藏部分的高度和寬度,滾了多少寬度和高度,它是可以直接被修改的

修改元素的這兩個屬性可以使得瀏覽器滾動元素

scrolltop設定為0 和infinity使得元素分別滾動到頂部和底部

jquery如何獲取元素的滾動高度

獲取瀏覽器顯示區域 可視區域 的高度 window height 獲取瀏覽器顯示區域 可視區域 的寬度 window width 獲取頁面的文件高度 document height 獲取頁面的文件寬度 document width 瀏覽器當前視窗文件body的高度 document.body hei...

selenium 如何處理無法點選的元素

在使用selenium自動化時,會經常遇到無法點選的元素,所以採用js的方式去實現點選操作。def click invisible element element,driver 通過js點選 param element webelement元素,通過driver.find x獲得 param dri...

vue中如何實現對dom元素大小改變的監聽

在視窗大小沒改變的時候,有些dom元素的大小發生了變化,導致頁面某些元素沒有重新渲染,出現不適應的情況。如下圖所示 1 方案一 vue專案中,我們可以使用element resize detector外掛程式來實現,簡單粗暴。實現方案如下 1 安裝相關外掛程式,npm install element...