js原生offsetParent解析

offsetParent是个只读属性,返回最近显示指定位置的容器元素的引用。如果元素没有指定位置,最近的元素或者根元素(标准模式下是html,怪异模式下是body)就是offsetParent。当元素的style.display=‘none‘时,offsetParent返回null。由于offsetTop和offsetLeft是相对于页边距,因此offsetParent是非常有用的。

浏览器兼容性

在以WebKit为核心的浏览器上,如果元素是隐藏的(该元素或者上级元素style.display=‘none‘)或者元素自身style.position=‘fixed‘,那么就会返回null。

在IE(9)上如元素style.position=‘fixed‘,该属性就会返回null。(然而display:none不影响这个浏览器)

<!DOCTYPE html>
<html>
<head>
  <meta http-equiv="content-type" content="text/html;charset=UTF-8"/>
  <title>offsetParent属性</title>
  <style type="text/css">
    div {
      margin: 5px;
    }
    #div11 {
      border: 2px solid #0000ff;
    }
    #div21 {
      position: relative;
      border: 2px solid #ffff00;
    }
    #div30 {
      position: relative;
      border: 2px solid red;
    }
    #div31 {
    }
  </style>
  <script type="text/javascript">
    function initPage() {
      getOffsetParent('div12'); //BODY
      getOffsetParent('div22');//DIV
      getOffsetParent('div32');//BODY
    }
    function getOffsetParent(id) {
      var divEl = document.getElementById(id);
      var el = divEl.offsetParent;
      console.log(el.nodeName);
      console.log('element id is ' + el.getAttribute('id') || '');
    }
  </script>
</head>
<body onload="initPage()">
<div id="div11">
  <div id="div12">测试1</div>
</div>
<div id="div21">
  <div id="div22">测试2</div>
</div>
<div id="div30">
  <div id="div31">
    <div id="div32">测试3</div>
  </div>
</div>
</body>
</html>

https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.offsetParent

js原生offsetParent解析,布布扣,bubuko.com

时间: 2024-10-16 09:59:02

js原生offsetParent解析的相关文章

原生javascript解析xml文档

之前写过一篇 <javascript/jQuery解析或转换json和xml>链接是http://my.oschina.net/ososchina/blog/343748,这篇博客详细解释了json使用 JSON.js  window.eval() ,jQuery 与字符串互相转换的方法 ,顺便也说了一点jQuery解析xml文档的方法,这里着重论述javascript操作xml. 顺便提一下,今天做项目有一点问题,如何让服务程序接口返回的就是json,而不需要 使用 jQuery.ajax设

underscore.js源码解析(二)

前几天我对underscore.js的整体结构做了分析,今天我将针对underscore封装的方法进行具体的分析,代码的一些解释都写在了注释里,那么废话不多说进入今天的正文. 没看过上一篇的可以猛戳这里:underscore.js源码解析(一) underscore.js源码GitHub地址: https://github.com/jashkenas/underscore/blob/master/underscore.js 本文解析的underscore.js版本是1.8.3 _.each 1

js原生的url操作函数,及使用方法。(附:下边还有jquery对url里的中文解码函数)

js原生的url操作函数,完善的. /*****************************/ /* 动态修改url */ /*****************************/ var LG=(function(lg){ var objURL=function(url){ this.ourl=url||window.location.href; this.href="";//?前面部分 this.params={};//url参数对象 this.jing="&q

Node.js原生及Express方法实现注册登录原理

由于本文只是实现其原理,所以没有使用数据库,只是在js里面模拟数据库,当然实际中还是需要用数据库的. 1.node.js原生方法 ①html页面,非常简单,没有一丝美化~我们叫它user.html <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>user</title> </head> <body> 用户:<inp

Js原生Ajax和Jquery的Ajax

一.Ajax概述 1.什么是同步,什么是异步 同步现象:客户端发送请求到服务器端,当服务器返回响应之前,客户端都处于等待卡死状态 异步现象:客户端发送请求到服务器端,无论服务器是否返回响应,客户端都可以随意做其他事情,不会被卡死 2.Ajax的运行原理 页面发起请求,会将请求发送给浏览器内核中的Ajax引擎,Ajax引擎会提交请求到服务器端,在这段时间里,客户端可以任意进行任意操作,直到服务器端将数据返回给Ajax引擎后,会触发你设置的事件,从而执行自定义的js逻辑代码完成某种页面1 功能. 二

js的offsetParent属性用法详解

js的offsetParent属性用法详解:此属性是javascript中较为常用的属性,对于它的良好掌握也是非常有必要的,下面就通过代码实例介绍一下它的用法,希望能够给需要的朋友带来一定的帮助.一.基本介绍:此属性可以返回距离指定元素最近的采用定位(position属性值为fixed.relative或者absolute)父级元素,如果父级元素中没有采用定位的元素,则返回body对象的引用.语法结构: obj.offsetParent 二.代码实例: <!DOCTYPE html> <

认识JQuery,JQuery的优势、语法、多库冲突、JS原生对象和JQuery对象之间相互转换和DOM操作,常用的方法

(一)认识JQuery  JQuery是一个JavaScript库,它通过封装原生的JavaScript函数得到一套定义好的方法    JQuery的主旨:以更少的代码,实现更多的功能 (二)JQuery的优势 1)可以像CSS一样访问和操作DOM 2)修改CSS控制页面外观 3)简化JS代码操作 4)事件代理更加容易 5)动画效果使用方便 6) Ajax技术更加完美 7)大量的基于Jquery的插件 8)可以自定义扩展功能插件 (三)JQuery的语法 格式:$(selector).actio

仿jQuery的siblings效果的js原生代码

仿jQuery的siblings效果的js原生代码 <previousSibling> 属性返回选定节点的上一个同级节点(在相同树层级中的前一个节点). <nextSibling> 属性返回被选节点的下一个同级节点(在相同树层级中的下一个节点). 如果不存在这样的节点,则该属性返回 null.//元素节点的节点类型是 1  obj.previousSibling.nodeType ==1; reverse() 方法用于颠倒数组中元素的顺序. push() 方法可向数组的末尾添加一个

图片轮播(左右切换)--js原生和jquery实现

图片轮播(左右切换)--js原生和jquery实现 左右切换的做法基本步骤跟 上一篇文章  淡入淡出 类似,只不过修改了一些特定的部分 (1)首先是页面的结构部分 对于我这种左右切换式 1.首先是个外围部分(其实也就是最外边的整体wrapper) 2.接着就是你设置图片轮播的地方(也就是一个banner吧) 3.然后是一个图片组(可以用新的div 也可以直接使用 ul-->li形式) 4.然后是图片两端的左箭头和右箭头5.然后是一个透明背景层,放在图片底部 6.然后是一个图片描述info层,放在