日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

HTML之元素相对页面(视口)左上角的坐标

發布時間:2023/12/31 windows 43 coder
生活随笔 收集整理的這篇文章主要介紹了 HTML之元素相对页面(视口)左上角的坐标 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄
  • 一. 絕對位置
  • 二. 相對位置

一. 絕對位置

  • 網頁元素的絕對位置,指該元素的左上角相對于整張網頁左上角的坐標。無論網頁滾動條如何滾動,它都是不會變化的。
  • // 獲取元素的絕對位置坐標(相對于頁面左上角)
    function getElementPagePosition(element){
      //計算x坐標
      var actualLeft = element.offsetLeft;
      var current = element.offsetParent;
      while (current !== null){
        actualLeft += current.offsetLeft;
        current = current.offsetParent;
      }
      //計算y坐標
      var actualTop = element.offsetTop;
      var current = element.offsetParent;
      while (current !== null){
        actualTop += (current.offsetTop+current.clientTop);
        current = current.offsetParent;
      }
      //返回結果
      return {x: actualLeft, y: actualTop}
    }
    
  • 使用例子:
    var rect = getElementPagePosition(element);
    // 輸出坐標
    console.log("元素的左上角相對于視口的坐標:", rect.x, rect.y);
    //滾動到該元素 (滾動到使該元素位置 x y 貼緊視口左上角)
    window.scrollTo({
     left: rect.x,
     top: rect.y,
     behavior:"smooth"
     });
    

二. 相對位置

  • 網頁元素的相對位置,是指元素左上角相對于瀏覽器窗口可視區域(視區:viewport)左上角的坐標。它會隨著滾動條滾動而變化。
  • // 獲取元素的絕對位置坐標(像對于瀏覽器視區左上角)
    function getElementViewPosition(element){
      //計算x坐標
      var actualLeft = element.offsetLeft;
      var current = element.offsetParent;
      while (current !== null){
        actualLeft +=  (current.offsetLeft+current.clientLeft);
        current = current.offsetParent;
      }
      if (document.compatMode == "BackCompat"){
        var elementScrollLeft=document.body.scrollLeft;
      } else {
        var elementScrollLeft=document.documentElement.scrollLeft;
      }
      var left = actualLeft - elementScrollLeft;
      //計算y坐標
      var actualTop = element.offsetTop;
      var current = element.offsetParent;
      while (current !== null){
        actualTop += (current.offsetTop+current.clientTop);
        current = current.offsetParent;
      }
      if (document.compatMode == "BackCompat"){
        var elementScrollTop=document.body.scrollTop;
      } else {
        var elementScrollTop=document.documentElement.scrollTop;
      }
      var right = actualTop-elementScrollTop;
      //返回結果
      return {x: left, y: right}
    }
    

總結

以上是生活随笔為你收集整理的HTML之元素相对页面(视口)左上角的坐标的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。