• 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层上方。

    心有多大,世界就有多大,让青春随着梦飞翔。
  • 相关阅读:
    Apache Commons Configuration的应用
    JAVA单例MongoDB工具类
    配置SpringMVC返回JSON遇到的坑
    DRF---序列化器-Serializer
    面试题--web(django)
    DRF----web应用模式
    面试题--网络编程
    Vue-项目之免费课和购物车实现
    面试题--面向对象
    vue- 项目之前端页面搭建1
  • 原文地址:https://www.cnblogs.com/xcmylrl/p/5414180.html
Copyright © 2020-2023  润新知