JavaScript 元素距離視窗頂部的距離
在實際操作中可能需要獲取元素距離視窗頂部的距離,圖示如下:
比如我們想獲取js教程元素距離視窗頂部的距離。
程式碼例項如下:
[HTML] 純文字檢視 複製程式碼執行程式碼<!doctype html> <html> <head> <meta charset="utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <style> * { margin:0px; padding:0px; } body { height:1500px; } #box { width:200px; height:100px; background-color:blue; padding:50px; margin:30px; } #ant { width:100px; height:50px; text-align:center; line-height:50px; background-color:red; } </style> <script> window.onload = () => { let obox = document.getElementById("box"); let oant = document.getElementById("ant"); let obt = document.getElementById("bt"); let sp = document.documentElement.scrollTop || document.body.scrollTop; let getPoint = (obj) => { let t = obj.offsetTop; while (obj = obj.offsetParent) { t += obj.offsetTop; } return t; } obt.onclick = () => { oant.innerHTML = getPoint(oant) - sp; } } </script> </head> <body> <div id="box"> <div id="ant"></div> </div> <input type="button" id="bt" value="檢視效果"/> </body> </html>
上面程式碼實現了我們的要求,下面介紹一下它的原理與實現過程。
一.實現原理:
ant的距離視窗頂部的尺寸,實質就是ant距離文件頂部的尺寸-文件向上滾動的尺寸。
上面這句話是核心原理,下面看實現過程。
二.實現過程:
[CSS] 純文字檢視 複製程式碼* { margin:0px; padding:0px; }
將所有元素的外邊距和內邊距設定為0。
[CSS] 純文字檢視 複製程式碼body { height:1500px; }
設定body的高度為1500px,這樣就出現垂直滾動條,可以拖動滾動條進行測試。
[JavaScript] 純文字檢視 複製程式碼window.onload = () => { //code }
當文件內容完全載入完畢再去執行函式中的程式碼。
[JavaScript] 純文字檢視 複製程式碼let obox = document.getElementById("box"); let oant = document.getElementById("ant"); let obt = document.getElementById("bt");
獲取指定id的元素物件。
[JavaScript] 純文字檢視 複製程式碼執行程式碼let sp = document.documentElement.scrollTop || document.body.scrollTop;
獲取頁面向上滾動的尺寸,做了一下瀏覽器相容性處理。
[JavaScript] 純文字檢視 複製程式碼let getPoint = (obj) => { //code }
此函式可以獲取指定元素物件obj距離body頂部的距離。
[JavaScript] 純文字檢視 複製程式碼let t = obj.offsetTop; while (obj = obj.offsetParent) { t += obj.offsetTop; } return t;
obj.offsetTop獲取的值是距離obj.offsetParent返回元素頂部的尺寸,obj.offsetParent並不一定是body,所以要一層一層的遞迴,將距離之和相加。
[JavaScript] 純文字檢視 複製程式碼obt.onclick = () => { oant.innerHTML = getPoint(oant) - sp; }
點選按鈕將距離寫入div中。
getPoint(oant) - sp,元素距離body頂部的距離減去頁面向上滾動的尺寸,就是元素距離視窗頂部的距離。
此時body的外邊距為0,否則不準確。
三.相關閱讀:
(1).箭頭函式參閱JavaScript 箭頭函式介紹一章節。
(2).scrollTop參閱JavaScript scrollTop一章節。
(3).offsetTop參閱JavaScript offsetTop一章節。
(4).offsetParent參閱JavaScript offsetParent一章節。
(5).innerHTML參閱JavaScript innerHTML 屬性一章節。
相關文章
- jQuery獲取div距離視窗頂部或者父元素頂部的距離jQuery
- JavaScript獲取元素距離文件頂部的距離JavaScript
- javascript獲取元素距離網頁頂部的距離JavaScript網頁
- 原生JS獲取DOM 節點到瀏覽器頂部的距離或者左側的距離JS瀏覽器
- 獲取DOM元素到頁面頂部的距離,親測有效版本(轉載)
- 曼哈頓距離與切比雪夫距離
- jQuery獲取網頁中的元素距離文件邊緣的距離程式碼例項jQuery網頁
- 曼哈頓距離與切比雪夫距離的互化
- PostgreSQL遺傳學應用-矩陣相似距離計算(歐式距離,…XX距離)SQL矩陣
- vue js 獲取滾動距離 以及 返回頂部按鈕VueJS
- 編輯距離及編輯距離演算法演算法
- Laravel 距離排序Laravel排序
- 【Python】距離Python
- 最小距離分類器,互動式選取影像樣本分類資料,進行最小距離分類(實現歐式距離,馬氏距離,計程距離)
- Vijos1680距離/openjudge2988計算字串的距離[DP]字串
- 距離度量學習
- 【DP】編輯距離
- js向下滾動一段距離出現返回頂部按鈕JS
- milvus 使用 l2 歐式距離計算向量的距離,計算出來的距離的最大值是多少?
- 空間距離計算
- 拖動滾動條一定距離可以固定於頂部的導航欄
- CSS3元素水平運動指定距離CSSS3
- eMarketer:定位廣告的距離問題
- 28、(向量)歐幾里得距離計算
- 洛谷 1279 字串距離字串
- RecyclerView滑動距離計算View
- 計算字串編輯距離字串
- 編輯距離演算法演算法
- 距離-有這麼多類
- 線性dp:編輯距離
- 【谷歌面試題】求陣列中兩個元素的最小距離谷歌面試題陣列
- 如何獲取向下滾動的距離
- 求兩向量距離的CUDA實現
- 人際關係的八種距離
- Levenshtein:計算字串的編輯距離字串
- ggplot2中繪圖設定x軸、y軸名稱距離框線的距離繪圖
- 【scipy 基礎】--正交距離迴歸
- 動態規劃-編輯距離動態規劃