• 盒子的偏移量


    盒子相对于offsetParent偏移量:offsetLeft,offsetTop.

    offsetParent:盒子向上找的第一个有定位的元素,没有就是body,body的offsetParent是null

    现在,想求任意盒子相对body的偏移量.<!DOCTYPE html>

    <html lang="en">
    
    <head>
      <meta charset="UTF-8">
      <title>Document</title>
      <style>
      * {
        padding: 0;
        margin: 0;
        font-size: 14px;
      }
       #outer {
         300px;
        height: 300px;
        padding: 50px;
        margin: 30px;
        border: 10px solid #000;
        background-color: pink;
      }
      
      #inner {
         200px;
        height: 200px;
        padding: 40px;
        margin: 30px;
        border: 10px solid #000;
        background-color: #69f;
      }
      
      #center {
         100px;
        height: 100px;
        padding: 30px;
        margin: 30px;
        border: 10px solid #000;
        background-color: #6f9;
      }
      </style>
    </head>
    
    <body>
      <div id="outer">
        <div id="inner">
          <div id="center"></div>
        </div>
      </div>
      <script>
      var outer = document.getElementById("outer");
      var inner = document.getElementById("inner");
      var center = document.getElementById("center");
      console.log(center.offsetParent); // body
      console.log(center.offsetLeft); // 200,这里是center这个盒子(包括border)的左上角离inner盒子内容区(不包括border)的左上角的距离
      console.log(center.offsetTop); // 200
      inner.style.position = outer.style.position = "relative";
      console.log(center.offsetParent); // inner
      console.log(center.offsetLeft); // 70,这里是center这个盒子(包括border)的左上角离inner盒子内容区(不包括border)的左上角的距离
      console.log(center.offsetTop); // 70
      console.log(inner.offsetParent); // outer
      console.log(inner.offsetLeft); // 80
      console.log(inner.offsetTop); // 80
      console.log(outer.offsetParent); // body
      console.log(outer.offsetLeft); // 30
      console.log(outer.offsetTop); // 30
    // center相对body的偏移量
     console.log(center.offsetLeft + (center.offsetParent.clientLeft + center.offsetParent.offsetLeft) + (center.offsetParent.offsetParent.clientLeft + center.offsetParent.offsetParent.offsetLeft)); // 200 function offset(ele) { var parent = ele.offsetParent, left = ele.offsetLeft, top = ele.offsetTop;
      // 只要不是null
    while (parent) { // ie8的offset已经加上了父元素的clientLeft if (navigator.userAgent.indexOf("MSIE 8.0") === -1) { // 父级参照物的边框 left += parent.clientLeft; top += parent.clientTop; } left += parent.offsetLeft; top += parent.offsetTop; parent = parent.offsetParent; } return { left, top }; } console.log(offset(center)) </script> </body> </html>
  • 相关阅读:
    www.verycd.com
    HDU-5281
    HDU-5280
    UVALive 6426
    hihocoder 1178 : 计数
    hihocoder 1177 : 顺子
    HDU-5272
    Tomcat 部署项目的三种方法
    Oracle数据库PLSQL的中文乱码显示全是问号
    ORACLE的sign函数和DECODE函数
  • 原文地址:https://www.cnblogs.com/2han/p/6387259.html
Copyright © 2020-2023  润新知