offsetParent :  离当前节点最近的具有定位属性的祖先节点。

  如果所有祖先节点都没有定位属性:
对于一个有定位属性的元素:
ie6、7 : offsetParent 是 html 节点
其它浏览器: offsetParent 是 body 节点 对于一个没有定位的元素:
ie6/7 : 最近的一个触发了 haslayout 属性的祖先节点,如果所有祖先节点都没有触发 haslayout ,默认为 body 节点。
其它浏览器: body。 如果当前节点有 display:none; 属性 在 ie11 以上及标准浏览器,offsetParent为null,ie10以下浏览器不受影响。 回流 、重绘
offsetLeft : 当前节点左边到 offsetParent 左边的距离。 offsetTop : 当前节点上边到 offsetParent 上边的距离。 注意:
1,如果body和html有边框和外边距, offsetLeft 和 offsetTop 在所有浏览器下的取值都会不一样。 2,在ie6、7浏览器下 ,offsetLeft和offsetTop会计算 offsetParent 的边框值,其它浏览器不会计算边框值。 3,如果当前节点设置了 display: none; 属性,offsetLeft 和 offsetLeft 的值都为0.(ie6/7下为 -1); 温馨提醒:没有 offsetRight 和 offsetBottom 属性!
-------------------------------------------------------------------------------
ff浏览器bug
#box { width: 1200px; height: 200px; background: #ccc; margin: 50px auto 0; position: relative; border: 4px solid #333; overflow: hidden; }
#div1 { width: 200px; height: 200px; background: red; position: absolute; left: 2px; top: 0; }
</style>
</head> <body> <div id="box">
<div id="div1"></div>
</div> </body>
</html> <script> var oDiv = document.getElementById('div1'); //alert( oDiv.offsetLeft ); setInterval(function(){ oDiv.style.left = oDiv.offsetLeft + 2 + 'px'; },30); /* offsetLeft :
在其它浏览器下,就是节点自身的left值。 在firefox下 :
offsetLeft = 节点自身的 left 值 - 边框值 div运动轨迹: 边框为0
left border offsetLeft speed target
0 0 0 2 2
2 0 2 2 4
4 0 4 2 6
6 0 6 2 8 边框与speed相等
left border offsetLeft speed target
0 2 -2 2 0
0 2 -2 2 0
0 2 -2 2 0
0 2 -2 2 0
0 2 -2 2 0 边框大于speed
left border offsetLeft speed target
0 4 -4 2 -2
-2 4 -6 2 -4
-4 4 -8 2 -6
-------------------------------------------------------------------------------
width / height / margin / padding / border offsetWidth : width + padding + border
clientWidth : width + padding offsetHeight : height + padding + border
clientHeight : height + padding 以上四个属性指的是元素在页面中所占空间大小,如果元素没有占页面空间,四个属性的值都为 0 。
-------------------------------------------------------------------------------
操作属性的前两种方式: . 和 [''] 第三种方式: 获取属性:getAttribute('');
设置属性:setAttribute('','');
删除属性:removeAttribute('') 兼容问题:
1,获取以关键字或保留字作为名称的属性时,有兼容问题。
2,获取第二层以上属性时,只有ie浏览器支持。 好处:
1,可以获取行间的自定义属性。
2,可以获取到 url、src、href 等的属性值,而不是路径地址。
(在ie6/7/8下需要设置第二个参数2,告诉浏览器获取的是属性值而不是路径) oDiv.dataset.bbs = 'bbs.miaov.com'; html5 里对自定义属性进行了初步规范,但是要求所有自定义属性都必须以 data- 作为属性名称的开头。

dom 兼容性问题 2 offset的更多相关文章

  1. dom兼容性问题3 元素操作

    /* var oLi = document.createElement('li'); oUl.appendChild( oLi ); }; createElement('') : 创建一个dom元素 ...

  2. dom 兼容性问题1_节点部分

    AS : ECMAScript xml . html js组成: 1,ECMAScript : 是Javascript的核心标准.同时也是一个解释器. 2,DOM: document object m ...

  3. JavsScript+dom

    JavsScript+dom DOM(兼容性) 用于操作文档树 1.帮助我们找到标签 直接查找 间接查找 getElementById getElementsByTageName 2.标签操作 内容: ...

  4. JavaScript DOM基础总结

    上个月在进行百度三面时候,面试官提问JavaScript DOM方法,我回答的有点少,前面太关注JavaScript 兼容性,框架方面,JavaScript 原生DOM基础没有记牢,心中有点遗憾.下来 ...

  5. js DOM之基础详解

    DOM(文档对象模型)是针对HTML和XML文档的一个API,描绘了一个层次化的节点树,允许开发人员添加.删除和修改页面的某一部分. HTML DOM 树形结构如下: 1.Node方面 1.1 节点类 ...

  6. layer弹出层 layer源码

    下载源码:点击下载 ;!function(window, undefined){ "use strict"; var pathType = true, //是否采用自动获取绝对路径 ...

  7. 第十一章:WEB浏览器中的javascript

    客户端javascript涵盖在本系列的第二部分第10章,主要讲解javascript是如何在web浏览器中实现的,这些章节介绍了大量的脚本宿主对象,这些对象可以表示浏览器窗口.文档树的内容.这些章节 ...

  8. 淘宝自己的前端框架KISSY(类似jquery) - 简易指南

    KISSY 是由阿里集团前端工程师们发起创建的一个开源 JS 框架. 具备模块化.高扩展性.组件齐全,接口一致.自主开发.适合多种应用场景等特性. 在以下方面具有一定优势: A.拥有大量的中文文档: ...

  9. createElement()结合appendChild()的实例

    createElement()作用是在JavaScript中创建一个元素 appendChild()向html元素添加节点 下面是冲浪后改编的例子代码 先插html代码 <body> &l ...

随机推荐

  1. 巨蟒django之CRM3 添加和编辑客户&&公户和私户的展示和转换

    昨日内容回顾: day66 1. 内容回顾 1. 数据的展示 数据通过ORM查询出来 对象列表 QuerySet 1. 普通的字段 对象.字段名 ——> 数据库中的值 2. choices (( ...

  2. Redis 持久化机制

    1.背景 之前在使用redis 时候,没有过多的考虑持久化! 但是这样即使你用了redis 也是徒劳,表面上你是用上了redis 进行缓存数据,感觉已经给自己的架构添加了一个道QPS 防护墙! 哈哈, ...

  3. Python定时执行脚本

    最近测试hbase,老发现服务挂掉,自己不能及时发现,想了想,写了个脚本,让脚本每个小时执行一次,以便检测是否有服务挂掉,如果有服务挂掉,及时启动 import os import datetime ...

  4. 使用nose_parameterized使unitTest实现参数化

    nose-parameterized是一个针对Python单元测试框架实现参数化的扩展 import unittest # from nose_parameterized import paramet ...

  5. ZFIR_001 ole下载

    *&---------------------------------------------------------------------** Report ZFIR_001* Appli ...

  6. Redis分布式锁的python实现

    案例1: #!/usr/bin/env python # coding=utf-8 import time import redis class RedisLock(object): def __in ...

  7. Some day some time we will do

    Age has been reached the end of the beginning of the world,May be guilty in his seems to passing a l ...

  8. 剑指offer 面试7题

    面试7题: 题目:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树.假设输入的前序遍历和中序遍历的结果中都不含重复的数字.例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{ ...

  9. Django——缓存机制

    1.缓存介绍 (1)概论 在动态网站中,用户所有的请求,服务器都会去数据库中进行相应的增,删,查,改,渲染模板,执行业务逻辑,最后生成用户看到的页面. 当一个网站的用户访问量很大的时候,每一次的的后台 ...

  10. Oracle网络服务管理与配置

    一.Oracle网络服务概述 1.网络解决方案. (1)可连接性:在Oracle中,由Oracle net组件负责在客户端应用程序与数据服务器之间创建会话.维护会话连接和数据传输. (2)可管理性: ...