今天在工作过程中,遇到这么一个奇葩问题,搞了好一阵子才找到原因,遂总结了一下...

先上DEMO:

<div style="width:800px; height:400px;">
<div style="width:380px; height:400px; float:left;">
<div id="a1" style=" position:relative; z-index:1;">
<div style="position:absolute;">
<div style="width:400px; height:200px; position:absolute; background:#F00; left:100px; top:50px;"></div>
</div>
</div>
</div>
<div style="width:380px; height:400px; float:right;">
<div id="a2" style=" position:relative; z-index:1;">
<div style="position:absolute;">
<div style="width:400px; height:200px; position:absolute; background:#0F0; left:-100px; top:100px;"></div>
</div>
</div>
</div>
</div>
<input type="button" value="click" onclick="document.getElementById('a1').style.zIndex=3" /> 

当你用IE7执行此段代码

( IE6暂未确认是否会出此问题,不过推断也会有这问题,毕竟这两浏览器就是一对奇葩... )

你会发现,不管怎么点按钮,红色层死活不肯跑到绿色层上面...

而在其他浏览器不会,唯独IE的奇葩兄弟会这样

但是...如果你用CSS直接定义一个z-index:3给a1,红框又能盖住绿框了...

并且用页面加载事件( 如jquery的$(document).ready(function(){...}) )来触发JS,修改a1的z-index也是可以实现红框盖住绿框...

也就是说,唯独像点击,鼠标经过这样的时间所触发执行的JS是无效果的...

此时此刻...无比郁闷了吧...

解决方法是:

将a1和a2的父级元素都设为相对定位( position:relative )

然后修改按钮onclick事件触发的JS,让其功能变为如下...

修改a1父级元素的z-index,使a1的父级元素的z-index值大于a2的父级元素的z-index值

这样就正常了

 

总结:

IE6 和 IE7 下,两个相对定位元素,如果他们的上一级父级元素( 注意,是最亲的一级 )不是同一元素。

其z-index值通过页面加载事件以外的其他事件来执行JS进行修改,均无效果。

而直接定义CSS,或通过ready事件来执行JS进行修改,则有效果。

关于定位和z-index的一些小经历的更多相关文章

  1. 细说一下position(定位),以及其他的小知识

    细说:position      位置 1.只要使用定位,必须要有一个相对的参照物.relative 2.具体定位的那个1元素需要加position:absolute:绝对的 绝对的:就是具体到某一个 ...

  2. 快捷定位目录 z武器

    z的源码在这里:https://github.com/rupa/z/blob/master/z.sh 1.把源码复制到你的用户目录下的z.sh文件, 2.然后用vim打开.bashrc这个目录,在最后 ...

  3. Linux服务器定位CPU高占用率代码位置经历

    http://blog.csdn.net/zhu19774279/article/details/51303000

  4. 关于ThinkPHP5.1+的Log无法记录SQL调试记录的小经历

    项目开发阶段,除了基本编码外,性能也需要实时关注与优化.之前我的大部分项目都是使用ThinkPHP5.0以及ThinkPHP3.2,对于框架提供的日志记录和日志配置都差不多,然后使用ThinkPHP5 ...

  5. 前端2 — CSS — 更新完毕

    1.CSS是什么? 指:Cascading Style Sheet  --- 层叠样式表 CSS 即:美化网页( 在HTML不是说过W3C规定网页为三种标准嘛,结构层HTML已经玩了,而这个CSS就是 ...

  6. 二分图【洛谷P2175】 小Z的游戏分队

    P2175 小Z的游戏分队 小Z受不了寂寞,准备举办一次DOTA比赛,为了能让ACM班全部都参加比赛,他还特制了一张DOTA地图能够支持任意多人打任意多人. 现在问题来了,怎么把这么多人分成两队?小Z ...

  7. 微信小游戏 demo 飞机大战 代码分析(四)(enemy.js, bullet.js, index.js)

    微信小游戏 demo 飞机大战 代码分析(四)(enemy.js, bullet.js, index.js) 微信小游戏 demo 飞机大战 代码分析(一)(main.js) 微信小游戏 demo 飞 ...

  8. P5676 [GZOI2017]小z玩游戏【Tarjan】

    小z玩游戏 Tarjan算是板子题吧,但是要稍微做一些修改,建边需要多考虑,建立"虚点". 题目描述 小 z 很无聊. 小 z 要玩游戏. 小 z 有\(N\)个新游戏,第\(i\ ...

  9. css显示display、可见性visibility、定位position、对齐

    隐藏一个元素可以通过把display属性设置为"none",或把visibility属性设置为"hidden",但是这两种方法会产生不同的结果. display ...

随机推荐

  1. C++ 调用C++写的类库的2种方法之一(隐式链接)

    一:创建C++ DLL类库,名称:Dll1 1.Dll1.h /*#ifndef Dll_API #else #define Dll_API _declspec(dllimport) #endif * ...

  2. java学习(五)java类继承

    1.制作一个工具类的文档 javadoc -d 目录 -author -version   arrayTool.java 实例: class arrayDemo { public static voi ...

  3. sampling method

    sampling method 背景 在贝叶斯框架下,利用后验分布对参数进行估计,也即 其中 (1)是参数的先验分布. (2)是似然分布,数据集的生成联合概率 (3)是参数的后验分布. 通常分布很复杂 ...

  4. Conditional Expressions

    Conditional Expressions建立一些逻辑关系 The conditional expression classes from django.db import models clas ...

  5. 线上 ELK 集群健康值 red 状态问题排查与解决

    之前一直运行正常的数据分析平台,最近一段时间没有注意发现日志索引数据一直未生成,大概持续了n多天,当前状态: 单台机器, Elasticsearch(下面称ES)单节点(空集群),1000+shrad ...

  6. 201621123012《Java程序设计》第12次学习总结

    作业12-流与文件 1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多流与文件相关内容. 2. 面向系统综合设计-图书馆管理系统或购物车 使用流与文件改造你的图书馆管理系统或购物车 ...

  7. 初探 模拟退火算法 POJ2420 HDU1109

    模拟退火算法来源于固体退火原理,更多的化学物理公式等等这里不再废话,我们直接这么来看 模拟退火算法简而言之就是一种暴力搜索算法,用来在一定概率下查找全局最优解 找的过程和固体退火原理有所联系,一般来讲 ...

  8. 关于word转化成xml,图片的转换

    当word另存为xml的时候,其中的图片会以Base64编码形式展示在xml文件的特定位置, java中操作图片转换成64位编码的方式: 可将返回的64直接放在前面的未知即可:

  9. cap-insets

    原文链接 在很多编程语言中都有resizable image这样的概念,比如android中的NinePatch graphic ,css3中的border image,微软的Nine-Grid Re ...

  10. angular的一些思考

    来公司做的第一个产品就是用angularjs来写的 我对整体这个产品架构的理解: 这套系统做的做的目的是实现所有的功能可配置化,使用MVC模型,有model层,view层,和controller层,m ...