zoukankan      html  css  js  c++  java
  • IE绝对定位元素神秘消失或被遮挡的解决

    在进行网页布局的时候,经常会根据需要设置相对,绝对以及浮动定位;
    发现了一个奇妙的现象:
    查了相关资料,高人有这样的解释:
    1.当绝对定位层的邻近浮动层的宽度不等于父层宽度时,以及没有清除浮动时,IE6/7,FF中显示一致;
    2.当绝对定位层的邻近浮动层的宽度不等于父层宽度时,有清除浮动时,IE6/7不显示绝对定位层,FF显示;
    3.当绝对定位层的邻近浮动层的宽度等于父层宽度时,以及没有清除浮动时,IE6不显示绝对定位层,IE7/FF显示;
    4.当绝对定位层的邻近浮动层的宽度等于父层宽度时,有清除浮动时,IE6/7不显示绝对定位层,FF显示;
    要解决这个BUG的方法也很简单,让绝对定位层不挨着浮动层放置就好了,还有个更简单的方法,在绝对定位元素和其他元素之间加一个空白的div。
    再来看看绝对定位元素神秘消失被遮挡的现象
    先了解一下所涉及到的几个定位特性:
    1. 相对定位元素默认的z-index的数值是0。 
    2. 当两个相对定位同时出现时,代码靠后的z-index优先。
    3. 子级遵循父级设定的z-index;如果子级设定了绝对定位、z-index,可以冲破父级显示
    看下面的代码:
    <div style="position:relative; background:#FF0000; 200px; height:100px;">
         <div style="position:absolute; background:#FFFF00; 49px; height:50px; left:106px; top:310px; z-index:100"></div>
    </div>
    <div style="position:relative; background:#000000; 200px; height:100px;"></div>
    <div style="position:relative; background:#9900FF; 200px; height:100px;"></div>
    
    代码解释:上面是三个相邻的相对定位的层,在第一个层里加了个相对其绝对定位的层,按照理论,这个绝对定位的元素是在三个相对定位元素之上的,但是,实际却没有显示。尝试设置z-index值也没有效。
    网上解决这个bug的办法一般用hack使B为负值,来降低 B 在IE下级别
    但是这种方法在z-index为负值时,产生了新的ie bug
    按照定位的特性,ie的这个bug是可以回避的
    从表面上看 下面的层 遮住了上面的绝对定位层,实际上是下面的 层遮住了绝对定位的的父级层,只要将 该父级层 的z-index设定大于后面的层即可

  • 相关阅读:
    【刷题】LOJ 6038 「雅礼集训 2017 Day5」远行
    【刷题】BZOJ 4650 [Noi2016]优秀的拆分
    【刷题】BZOJ 4566 [Haoi2016]找相同字符
    【刷题】BZOJ 3238 [Ahoi2013]差异
    微信公众号_订阅号_被动回复用户消息
    艺术模板 art-template-web
    AJAX_违反了同源策略_就是"跨域"——jsonp 和 cors
    Ajax_简介: 异步的 JS 和 XML_原生写 ajax 分析其原理_jquery_ajax_art-template
    Node.js_express_临时会话对象 session
    BOM 浏览器对象模型_XMLHttpRequest 对象
  • 原文地址:https://www.cnblogs.com/taoze/p/1931452.html
Copyright © 2011-2022 走看看