返回顶部
首页 > 资讯 > 前端开发 > JavaScript >JavaScript offsetParent案例详解
  • 640
分享到

JavaScript offsetParent案例详解

2024-04-02 19:04:59 640人浏览 安东尼
摘要

1. offsetParent定义:那么offsetParent就是距离该子元素最近的进行过定位的父元素(position:absolute  relative fixed

1. offsetParent定义:那么offsetParent就是距离该子元素最近的进行过定位的父元素(position:absolute  relative fixed),如果其父元素中不存在定位则offsetParent为:body元     素

2. 根据定义分别存在以下几种情况

  1. 元素自身有fixed定位,父元素不存在定位,则offsetParent的结果为null(firefox中为:body,其他浏览器返回为null)
  2. 元素自身无fixed定位,且父元素也不存在定位,offsetParent为<body>元素
  3. 元素自身无fixed定位,且父元素存在定位,offsetParent为离自身最近且经过定位的父元素
  4. <body>元素的offsetParent是null

<!DOCTYPE html>
<html lang="en">
 
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
 
<body>
 <div id="test1" style="position:fixed"></div>
 
 <div id="test2"></div>
 
 <div id="div0" style="position:absolute;">
    <div id="div1" style="position:absolute;">
        <div id='test3'></div>    
    </div>    
</div>
 
<script>
    
    var test1 = document.getElementById('test1');
    console.log('test1 offsetParent: ' + test1.offsetParent);
    
    var test2 = document.getElementById('test2');
    console.log('test2 offsetParent: ' + test2.offsetParent);
    
    var test3 = document.getElementById('test3');
    console.log('test3 offsetParent: ' + test3.offsetParent);
    
     */
    console.log('body offsetParent: ' + document.body.offsetParent);//null
 
</script>
</body>
 
</html>

3. IE7中对于定位的offsetParent,存在以下bug

【1】当元素本身经过绝对定位或相对定位,且父级元素无经过定位的元素时,IE7-浏览器下,offsetParent是<html>


<div id="test1" style="position:absolute;"></div>    
<script>
//IE7-浏览器返回<html>,其他浏览器返回<body>
console.log(test1.offsetParent);
</script>

<div id="test2" style="position:relative;"></div>    
<script>
//IE7-浏览器返回<html>,其他浏览器返回<body>
console.log(test2.offsetParent);
</script>

<div id="test3" style="position:fixed;"></div>    
<script>
//firefox并没有考虑固定定位的问题,返回<body>,其他浏览器都返回null
console.log(test3.offsetParent);
</script>

【2】如果父级元素存在触发haslayout的元素或经过定位的元素,且offsetParent的结果为离自身元素最近的经过定位或触发haslayout的父级元素


<div id="div0" style="display:inline-block;">
    <div id='test'></div>    
</div>
<script>
//IE7-浏览器返回<div id="div0">,其他浏览器返回<body>
console.log(test.offsetParent);
</script>

<div id="div0" style="position:absolute;">
    <div id="div1" style="display:inline-block;">
        <div id='test'></div>    
    </div>    
</div>
<script>
//IE7-浏览器返回<div id="div1">,其他浏览器返回<div id="div0">
console.log(test.offsetParent);
</script>

<div id="div0" style="display:inline-block;">
    <div id="div1" style="position:absolute;">
        <div id='test'></div>    
    </div>    
</div>
<script>
//所有浏览器都返回<div id="div1">
console.log(test.offsetParent);
</script>

到此这篇关于javascript offsetParent案例详解的文章就介绍到这了,更多相关JavaScript offsetParent内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: JavaScript offsetParent案例详解

本文链接: https://lsjlt.com/news/133204.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • JavaScript offsetParent案例详解
    1. offsetParent定义:那么offsetParent就是距离该子元素最近的进行过定位的父元素(position:absolute  relative fixed...
    99+
    2024-04-02
  • js中offsetParent详解
    在JavaScript中,offsetParent属性是一个只读属性,返回最近的包含该元素的定位(position属性为relati...
    99+
    2023-09-13
    js
  • JavaScript CollectGarbage函数案例详解
    首先看一个内存释放的实例: <SCRIPT LANGUAGE="JavaScript"> <!-- strTest = "1"; for ( var i = 0...
    99+
    2024-04-02
  • JavaScript DOMContentLoaded事件案例详解
    DOMContentLoaded 事件 字面上看,它会在dom加载完成后触发。 与window.onload事件非常相似,但有一定区别: DOMContentLoaded ...
    99+
    2024-04-02
  • JavaScript setTimeout与setTimeinterval使用案例详解
      这两个方法都可以用来在固定的时间段后去执行一段javascirpt代码,不过两者各有各的应用场景。   实际上,setTimeout和setInterval的语法相同。它们都有两...
    99+
    2024-04-02
  • JavaScript parseInt()与Number()区别案例详解
    学习目标: parseInt()、Number()这两个函数用到最多的地方就是把一个字符串转换成数据类型,那么他们都有哪些区别? 学习内容: parseInt()函数将给定的字符串以...
    99+
    2024-04-02
  • JavaScript 解决ajax中parsererror错误案例详解
    解决ajax的parsererror错误的终极办法(后台传给前台的数据json问题)   出现这个问题的原因是因为后台传给前台的数据出现了问题,ajax对于json的格式特别的严格 ...
    99+
    2024-04-02
  • JavaScript解决ajax中parsererror错误案例详解
    在使用Ajax进行数据交互时,有时候会遇到"parsererror"错误。这个错误的原因通常是由于接收到的数据无法被正确地解析为JS...
    99+
    2023-08-09
    javascript
  • JavaScript axios安装与封装案例详解
    1.下载axios插件 cnpm install axios -S 2.在main.js引入axios import axios from 'axios' Vue.prot...
    99+
    2024-04-02
  • JavaScript 中this指向问题案例详解
    总结 全局环境 ➡️ window 普通函数 ➡️ window 或 undefined 构造函数 ...
    99+
    2024-04-02
  • JavaScript 拖拉时间之drag案例详解
    目录DragEvent 接口DataTransfer 接口概述DataTransfer 的实例属性DataTransfer.dropEffectDataTransfer.effect...
    99+
    2024-04-02
  • JavaScript图片打印方案实例详解
    最近有个页面打印图片的小需求。就是系统界面展示有一些证件照片,我们希望可以点击图片旁边的打印小按钮,就可以将这张图片直接打印到A4纸张上,例如下图效果: 其实浏览器 window ...
    99+
    2023-03-19
    js 打印图片 js打印预览 js打印输出
  • JavaScript style对象与CurrentStyle对象案例详解
    1、Style对象 style对象代表一个单独的样式声明,可以从应用样式的文档元素访问Style对象。style对象获取的是内联样式,即元素标签中style属性的值。 例子: &...
    99+
    2024-04-02
  • JavaScript 使用Ckeditor+Ckfinder文件上传案例详解
    目录一、准备工作二、解压三、开始集成一、准备工作 Ckeditor_4.5.7_full + Ckfinder_java_2.6.0 二、解压 1.解压ckeditor,和平常文件解...
    99+
    2024-04-02
  • JavaScript 上传文件限制参数案例详解
    项目场景: 1,上传文件限制 功能作用: 1,防止前端操作上传异常文件 2,限制符合的规则,优化展示模型 功能实现: 1,获取file实例 2,执行校验规则方法 代码如下: //...
    99+
    2024-04-02
  • JavaScript实现动态生成表格案例详解
    目录前言实现思路实现代码 实现效果前言 在这里实现一个动态添加表格的案例,当点击添加按钮时,可以弹出一个表单,然后将输入的内容添加到表格中,也可以将表格中的整行内容清除。 实现思路 ...
    99+
    2024-04-02
  • JavaScript防抖案例讲解
    原理 防抖的原理是:你尽管触发事件,但是我一定要在事件触发n秒之后才执行,如果你在一个事件触发的n秒内又触发了这个事件,那我就以新的事件的时间为准,n秒后再执行。总之,就是要等到你触...
    99+
    2024-04-02
  • Java BigDecimal案例详解
    引言   float和double类型的主要设计目标是为了科学计算和工程计算。他们执行二进制浮点运算,这是为了在广域数值范围上提供较为精确的快速近似计算而精心设计的。然而,它们没有提...
    99+
    2024-04-02
  • Android HandlerThread案例详解
    HandlerThread 顾名思义就是一种可以使用 Handler 的 Thread。日常开发中我们经常会通过创建一个 Thread 去执行任务,有多个任务就多创建几个线程实现,这...
    99+
    2024-04-02
  • Java JNDI案例详解
    JNDI的理解 JNDI是 Java 命名与文件夹接口(Java Naming and Directory Interface),在J2EE规范中是重要的规范之中的一个,不少专家觉得...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作