创建层叠上下文

Groups of elements with a common parent that move forward or backward together in the stacking order make up what is known as a stacking context.

参考stackoverflow上的回答,会创建层叠上下文的主要为:

  1. 根节点,可认为是html。Any element that doesn’t already participate in a local stacking context (generated by any of the other scenarios below) will participate in the root stacking context instead.
  2. Setting z-index to anything other than auto on an element that is
    positioned (i.e. an element with position that isn’t static).position:fixed在不同浏览器上表现不一样
    Another exception to this is with a flex item. Setting z-index on a flex item will always cause it to establish a stacking context even if it isn’t positioned.
  3. Setting opacity to anything less than 1.
  4. Transforming the element:

     1. Setting transform to anything other than none. 2. Setting transform-style to preserve-3d.      3. Setting perspective to anything other than none.
    
  5. Creating a CSS region: setting flow-from to anything other than none
    on an element whose content is anything other than normal.
  6. In paged media, each page-margin box establishes its own stacking
    context.

  7. In filter effects, setting filter to anything other than none.

  8. In compositing and blending, setting isolation to isolate.

  9. In will change, setting will-change to a property whose any
    non-initial value would create a stacking context.

层叠顺序

以下摘录至what on one told you about z-index
1. The stacking context’s root element
2. Positioned elements (and their children) with negative z-index values (higher values are stacked in front of lower values; elements with the same value are stacked according to appearance in the HTML)
3. Non-positioned elements (ordered by appearance in the HTML)
4. Positioned elements (and their children) with a z-index value of
auto
(ordered by appearance in the HTML)
5. Positioned elements (and their children) with positive z-index
values
(higher values are stacked in front of lower values; elements
with the same value are stacked according to appearance in the HTML)

Note: positioned elements with negative z-indexes are ordered first within a stacking context, which means they appear behind all other elements. Because of this, it becomes possible for an element to appear behind its own parent, which is normally not possible. This will only work if the element’s parent is in the same stacking context and is not the root element of that stacking context. A great example of this is Nicolas Gallagher’s CSS drop-shadows without images. example

如果要了解z-index=-1使用时到底发生什么,要注意note里面的一句话:This will only work if the element’s parent is in the same stacking context and is not the root element of that stacking context。
然后,我就按照我的理解写了一个demo,可是并没有隐藏。(这是下面的例子,代码略有不同demo)
html:

  <div class="outer"><p>outer</p><div class="inner"><p>inner</p><!--<div> --><button class="btn">huhu</button><p class="inner-inner">inner-inner</p><!--</div>--></div></div>
.outer {position: relative;z-index:0;background-color: blue
}.inner-inner{position: relative;z-index: -1;background-color: brown
}
.btn{position: absolute;top: 70px;z-index:-4
}

这个是满足条件的,但是.inner-inner还是可以看见,不过.btn将会出现在其后面。这一点证明z-index为负数起了作用,只是没有被隐藏起来。
我想了很久,注意到这个层叠顺序的根元素到底应该如何理解呢?张鑫旭将其解释为了层叠上下文的background和border,但是z-index为负数的元素是始终在其当前上下文的背景前的。挡住它的应该是其父元素的background。前例中如果对.inner设置背景色或者对包裹.inner-inner的div元素设置背景色就可以了。

为了便于大家直观看,可以看这个例子codepen,outer设置背景色,z-index =-1成功;但是注释掉背景色,因为是层叠上下文的root element,所以按钮的z-index = -100设置不了。

如何使用z-index = -1 隐藏元素相关推荐

  1. CSS浮动、定位及显示隐藏元素

    一.CSS浮动 1.标准流(普通流/文档流:即标签按规定默认排列方式) 块级元素独占一行,从上到下排列. 行内元素会按顺序,从左至右排列,碰到父级元素边缘则自动转行. 2.为什么浮动? (1)多个块级 ...

  2. Python 3、selenium/执行js命令显示隐藏元素,封装js工具类

    为什么需要js? 我们需要执行函数,但是实现成本很高或很难甚至无法实现事件的时候,可以直接通过js命令调用 页面上有些元素无点击事件,不可点击等,调用js直接实现效果即可 还有种种原因导致,没达到我们 ...

  3. jquery按下标获取元素_jquery 怎么获取隐藏元素的下标

    jquery 怎么获取隐藏元素的下标 关注:103  答案:2  mip版 解决时间 2021-01-19 19:37 已解决 2021-01-19 06:13 jquery 怎么获取隐藏元素的下标 ...

  4. 实现在页面上隐藏某个元素的css,有趣的css—隐藏元素的7种思路

    display.visibility.opacity三个属性隐藏元素之间的异同点一直是前端面试面试的常考题. 除了display.visibility.opacity三个属性可以隐藏元素之外,是否还存 ...

  5. visibility和display隐藏元素的区别

    测试: visibility:hidden 隐藏元素 visibility:visible  显示元素 元素位置依然还在: display:none隐藏元素 display:inline显示元素 元素 ...

  6. JS无法获取display为none的隐藏元素的宽度和高度的解决方案

    在实际开发中会遇到确实需要获取隐藏元素的宽高,这儿所说的隐藏元素是display为none的元素. 可使用jQuery Actual Plugin插件来完成,其源码如下: ;( function ( ...

  7. 如何使用Bootstrap4显示和隐藏元素

    如何使用Bootstrap4显示和隐藏元素 为了更快地进行移动设备开发,请使用响应式显示类来按设备显示和隐藏元素.避免创建相同站点的完全不同版本,而是相应地为每个屏幕大小隐藏元素. 要隐藏元素,只需使 ...

  8. [jQuery]无法获取隐藏元素(display:none)宽度(width)和高度(height)的新解决方案

    在做茶城网改版工作的时候,又遇到一个新问题,我需要用jQuery写一个通过点击左右图标来翻阅图片的小插件,写好后测试可以正常运行,但是放到Tab中后发现只有第一个Tab中的代码能够正常运行,其它全部罢 ...

  9. HTML中通过CSS方式隐藏元素

    HTML中通过CSS方式隐藏元素 1.通过style属性中的 display : none (这种是最常用方式之一 ). display : none 这两种方式的区别是: display 设置为 n ...

  10. html隐藏元素的方式,Web前端:CSS3——3种隐藏元素方法的区别

    原标题:Web前端:CSS3--3种隐藏元素方法的区别 Web前端教程 CSS3规范的一个新特点是被分为若干个相互独立的模块.一方面分成若干较小的模块较利于规范及时更新和发布,及时调整模块的内容,这些 ...

最新文章

  1. IntelliJ IDEA中Maven插件无法更新索引之解决办法
  2. asp.net中的窗体身份验证
  3. java 语法 冒号_java中生僻的冒号跳转语法
  4. java文档注释生产api没有注释_一个神奇的没有springboot注释的api文档生成器---JApiDocs...
  5. 【李宏毅机器学习】regress case study 回归案例研究(p3) 学习笔记
  6. 个人工作总结10(冲刺二)
  7. python常见报错异常大全,根据异常找出根本问题,一键解决,建议收藏
  8. NetCore3.1开发后台管理系统框架思路与实现
  9. 学习MyBatis-Plus
  10. 中国大陆加港澳台手机正则验证
  11. IOS_3DTouch实现
  12. 上海落户计算机水平毕业研究生,2021应届生落户上海打分标准,部分毕业生可直接落户上海...
  13. windows7 文件夹提示“您当前无权访问该文件夹”的解决方法
  14. docker安装UnlockMusic(音乐格式转换工具 )
  15. 详细设计说明书(转载)
  16. 互联网晚报 | 10月17日 星期日 | 锤子论坛宣布下线;《长津湖》跻身中国影史票房前四;华为云专属月·行业深耕专项行动开启...
  17. 京东Java岗:来自面试官的夺命连环56问,直接当场怀疑人生~
  18. 盘点北京周边最适合爬的10座山
  19. 关于计算机二级考试C语言的心得
  20. 支持飞书国际版,DataEase开源数据可视化分析平台v1.16.0发布

热门文章

  1. 学HTML就看这篇呀(HTML详解)
  2. IDEA调试小技巧 —— Evaluate调试工具
  3. 用dom-to-image生成HTML图片模糊问题
  4. deepcamp面试日记
  5. 为什么网吧电脑配置不高却很流畅,自家电脑如何优化配置
  6. 浅入浅出Spring架构设计
  7. 火狐浏览器下载文件时文件名乱码问题的解决
  8. 飞机大战java代码_[源码和文档分享]Java飞机大战游戏设计与实现
  9. 7个月我 自学Java 找到啦一份9k的工作,分享经历
  10. 柱状图多维条形图vue_Vue2+Echarts实现多种图表数据可视化Dashboard详解(附源码)...