zoukankan      html  css  js  c++  java
  • z-index问题

    z-index的层级问题可以归纳为以下几种,文章中定位指position值设置为absolute、relative和fixed中任一个。

    <div>    
        <div class="a">
              ...
            <div class="aa"></div>
        </div>
        <div class="b">
            <div class="bb"></div>
        </div>
    <div>
    

    形如a层和b层的关系记为关系1(兄弟关系)

    形如aa层和a层的关系记为关系2(这里称祖孙关系)

    形如aa层和bb层的关系记为关系3(亲戚关系)

    1>>兄弟关系元素比较时。

    1、对比的两个元素都有定位时z-index大的元素显示在上方,相同时dom结构中后书写的元素显示在上方

    2、对比的两个元素中只有一个有定位时,z-index为正,有定位的元素显示在上方。z-index为负,有定位的元素显示在下方。

    3、对比的两个元素都没有定位时,z-index值无效,dom结构中后书写的元素显示在上方。

    2>>祖孙关系元素比较时

    1、孙元素无定位时,孙元素在上方。

    2、孙元素有定位时,z-index为正,孙元素显示在上方。z-index为负,孙元素显示在下方。

    3>>亲戚关系元素比较时(记为元素1,记为元素2)

    1、向树结构根部寻找,找到两者的共有祖先(记为元素3),然后再向元素3的子元素方向寻找,找到元素3->元素1以及元素3->元素2之间距离元素3最近的有定位且由设置z-index的元素,比较这两个元素的层级,比较方法同兄弟关系元素比较。

    例如

    <div>    
        <div class="a" style="position:absolute;z-index:9;">
            <div class="aa">
                <div class="aaa"></div>
            </div>
        </div>
        <div class="b">
            <div class="bb" style="position:relative;z-index:8">
                <div class="bbb"></div>
            </div>
        </div>
    <div>
    

      当我们想比较bbb层和aaa层高度时我们应该比较a层和bb层高度。这里a层高度高,所以aaa层位于bbb层上方。

    再比如

    <div>    
        <div class="a" style="position:absolute;z-index:9;">
            <div class="aa">
                <div class="aaa"></div>
            </div>
        </div>
        <div class="b">
            <div class="bb" style="position:relative;z-index:8">
                <div class="bbb" style="position:flex;z-index:10;"></div>
            </div>
        </div>
    <div>
    

      当我们想比较bbb层和aaa层高度时我们应该比较a层和bb层高度。这里a层高度高,所以aaa层位于bbb层上方。

    再比如

    <div>    
        <div class="a" style="position:absolute;z-index:9;">
            <div class="aa">
                <div class="aaa"></div>
            </div>
        </div>
        <div class="b">
            <div class="bb" style="position:relative;">
                <div class="bbb" style="position:flex;z-index:10;"></div>
            </div>
        </div>
    <div>
    

      当我们想比较bbb层和aaa层高度时我们应该比较a层和bbb层高度。这里bbb层高度高,所以bbb层位于aaa层上方。

    当然ie是个奇葩。在ie6和ie7中当我们设置定位的时候,元素会被隐式设置z-index:0。

    于是在ie6和ie7中当我们想比较bbb层和aaa层高度时我们应该比较a层和bb层高度。这里a层高度高,所以aaa层位于bbb层上方。

    心有多大,世界就有多大,让青春随着梦飞翔。
  • 相关阅读:
    用powershell启动appfabric报错
    对引用和指针使用以及函数返回引用和指针类型的理解
    数组指针和数组引用做参数的区别(是否能够限定数组大小、数组降价)
    C++静态成员函数基本概念讲解
    函数中变量的生存期和作用域
    如何在Source Insight中配置Pc Lint
    iterator与const_iterator
    周数据转换为天数据的一个Sql数据查询
    如何提高结构对象作为键的哈希表的查找速度
    尽量用iterator代替const_iterator
  • 原文地址:https://www.cnblogs.com/xcmylrl/p/5414180.html
Copyright © 2011-2022 走看看