深入浅析css中的z-index

深入浅析css中的z-index

z-index 属性设置元素的堆叠顺序。拥有更高堆叠顺序的元素总是会处于堆叠顺序较低的元素的前面。(推荐教程:CSS视频教程)

1.gif

层级关系的比较

1. 对于同级元素,默认(或position:static)情况下文档流后面的元素会覆盖前面的。

立即学习“前端免费学习笔记(深入)”;

2. 对于同级元素,position不为static且z-index存在的情况下z-index大的元素会覆盖z-index小的元素,即z-index越大优先级越高。

3. IE6/7下position不为static,且z-index不存在时z-index为0,除此之外的浏览器z-index为auto。

4. z-index为auto的元素不参与层级关系的比较,由向上遍历至此且z-index不为auto的元素来参与比较。

顺序规则

如果不对节点设定 position 属性,位于文档流后面的节点会遮盖前面的节点。

A
B

2.gif

定位规则

如果将 position 设为 static,位于文档流后面的节点依然会遮盖前面的节点浮动,,所以 position:static 不会影响节点的遮盖关系。

A
B

3.gif

如果将 position 设为 relative (相对定位),absolute (绝对定位) 或者 fixed (固定定位),这样的节点会覆盖没有设置 position 属性或者属性值为 static 的节点,说明前者比后者的默认层级高。

A
B

4.gif

在没有 z-index 属性干扰的情况下, 根据这顺序规则和定位规则, 我们可以做出更加复杂的结构. 这里我们对 A 和 B 都不设定 position, 但对 A 的子节点 A-1 设定 position:relative. 根据顺序规则, B 会覆盖 A, 又根据定位规则 A’ 会覆盖 B.

A-1
B

5.gif

上面互相覆盖在什么时候用到这样的实现? 看起来偏门, 其实很常用, 比如说, 电子商务网站侧栏的类目展示列表就可以用这个技巧来实现.

下图是某网站的类目展示区域, 二级类目的悬浮层覆盖一级类目列表外框, 而一级类目的节点覆盖二级类目的悬浮层. 如果使用 CSS 实现展示效果, 一级类目的外框相当于上面例子中的 A, 一级类目的节点相当于 A-1, 二级类目的悬浮层相当于 B.

6.jpg

参与规则

我们尝试不用 position 属性, 但为节点加上 z-index 属性. 发现 z-index 对节点没起作用. z-index 属性仅在节点的 position 属性为 relative, absolute 或者 fixed 时生效.

A
B
C

7.gif

A
B
C

8.gif

默认值规则

如果所有节点都定义了 position:relative. z-index 为 0 的节点与没有定义 z-index 在同一层级内没有高低之分; 但 z-index 大于等于 1 的节点会遮盖没有定义 z-index 的节点; z-index 的值为负数的节点将被没有定义 z-index 的节点覆盖.

A
B
C
D

9.gif

从父规则

如果 A, B 节点都定义了 position:relative, A 节点的 z-index 比 B 节点大, 那么 A 的子节点必定覆盖在 B 的子节点前面.

A-1
B-1

10.gif

如果所有节点都定义了 position:relative, A 节点的 z-index 和 B 节点一样大, 但因为顺序规则, B 节点覆盖在 A 节点前面. 就算 A 的子节点 z-index 值比 B 的子节点大, B 的子节点还是会覆盖在 A 的子节点前面.

11.gif

很多人将 z-index 设得很大, 9999 什么的都出来了, 如果不考虑父节点的影响, 设得再大也没用, 那是无法逾越的层级.

更多编程相关知识,请访问:编程入门!!

以上就是深入浅析css中的z-index的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1615880.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月24日 05:07:27
下一篇 2025年12月24日 05:07:44

相关推荐

  • css line-height值为150%或1.5值的区别

    下面css栏目给大家介绍一下line-height:150%与line-height:1.5的区别。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。 (推荐教程:CSS视频教程) 这是一个小小的不经意的问题,但是却常常被一些面试官提起。一般都会一下子进入懵逼状态,那让我们来看看区别在…

    2025年12月24日 好文分享
    000
  • css实现图片在div中居中的方法有哪些

    本文为大家介绍了图片在div中居中的四种方法,希望对大家有所帮助。 方法一: (推荐教程:css视频教程) html: 立即学习“前端免费学习笔记(深入)”; @@##@@ css .title { width: 100%; font-size: 0; height: 10%;}.title .co…

    2025年12月24日
    000
  • css如何制作饼状图

    前言: 在工作中,有时我们会有饼状图的需求,如统计图表、进度指示器、定时器等,当然,实现方式也有很多,甚至有现成的js库可以拿来直接使用。兴趣使然,自己动手利用纯css实现饼状图,看看效果如何。 (视频教程推荐:css视频教程) .pie { width: 100px; height: 100px;…

    2025年12月24日 好文分享
    000
  • vertical-align负值和margin-bottom负值的差异有哪些?

    vertical-align负值和margin-bottom负值的差异有哪些?下面本篇文章给大家介绍一下vertical-align负值和margin-bottom负值的区别。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。 先看一下vertical-align在W3C当中的值有哪一…

    2025年12月24日
    000
  • css可以去掉浮动吗?

    css可以去掉浮动;css去掉浮动的方法:1、父级容器定义“overflow:hidden”样式;2、浮动结尾处,添加带有“clear:both”样式的div或p标签;3、父级容器定义“overflow:auto”样式。 推荐教程:CSS视频教程 浮动是布局的时用到的一种技术,能够方便我们进行布局。…

    2025年12月24日
    000
  • 详解CSS中优先级和Stacking Context等高级特性,带你更深入了解CSS!!

    通常我们在学习CSS的时候,感觉语法很容易掌握,实际应用中却碰到各式各样难以填补的“坑”,为避免大家受到同样的困惑与不解,本文详细讲解了CSS中优先级和Stacking Context等高级特性。让你更深入了解CSS。 CSS 优先级 优先级是浏览器是通过判断哪些属性值与元素最相关以决定并应用到该元…

    2025年12月24日 好文分享
    000
  • css如何禁止元素的点击事件

    在实际工作中,如果我们需要禁止某个元素的点击事件,可以将该元素的pointer-events属性设为none。 (推荐教程:CSS教程) 如下: 立即学习“前端免费学习笔记(深入)”; 测试代码: .disabled { pointer-events: none; cursor: default; …

    2025年12月24日
    000
  • css实现禁止页面文字被选中功能

    通过css实现页面文字不能被选中 (推荐教程:CSS教程) .cannotselect { -webkit-touch-callout: none; -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; u…

    2025年12月24日
    000
  • 深入浅析CSS 布局和 BFC

    CSS布局中有一些概念,一旦你理解了它们,就能真正提高你的 CSS 布局能力。本文是关于块格式化上下文(BFC)的。你可能从未听说过这个术语,但是如果你曾经用CSS做过布局,你可能知道它是什么,理解什么是 BFC,怎么工作以及如何创建 BFC 非常有用,这些可以帮助你理解CSS中的布局是如何工作的。…

    2025年12月24日 好文分享
    000
  • 7个实用的CSS background-image小技巧

    (推荐教程:CSS教程) background-image可能是我们所有人(前端开发人员)在我们的职业生涯中至少使用过几次的CSS属性之一。大多数人认为背景图像没有什么不寻常的,但经过研究,答案并非如此。 所以本文收集了7个我认为最有用的技巧,并创建了一些代码示例,你可以在其中查看正在发生的事情。 …

    2025年12月24日 好文分享
    000
  • css实现文字描边以及倒影效果

    描边: 主流浏览器都支持 (推荐教程:css视频教程) -webkit-text-stroke: ;-webkit-text-stroke:4px pink;/*描边宽度4px,字体颜色粉红*/ 倒影:谷歌、safari、opera支持,火狐不支持 -webkit-box-reflect: ;-we…

    2025年12月24日
    000
  • 16 个CSS开发中需要了解的DevTools技巧

    大多数开发者基本都使用浏览器的开发者工具调试前端,但即使用了好几年 Chrome 的开发者工具,我仍然会遇到从未见过的技巧和功能。 在本文中,我写了许多在开发者工具中与 CSS 相关的功能和技巧,我认为它们将把你的 CSS 开发水平提升至一个新的台阶。其中一些技巧不仅仅针对 CSS,但是我还是把它们…

    2025年12月24日 好文分享
    000
  • css如何实现对号效果

    实现对号效果,一种思路是利用现成的符号,直接在网上搜索到 √,插入页面。另一种思路是本文要介绍的用 CSS 实现,思路是: (相关推荐:css视频教程) 给块级元素设置宽度和高度 设置元素相邻的两个 border 立即学习“前端免费学习笔记(深入)”; 旋转元素 HTML 解析: 此处需要使用块级元…

    2025年12月24日
    000
  • css如何控制元素的显示与隐藏

    属性介绍: (推荐教程:css视频教程) 1. display属性 display属性用于设置一个元素应如何显示。 立即学习“前端免费学习笔记(深入)”; display: none; 隐藏对象display: block; 除了转换为块级元素之外,同时还有显示元素的意思 display隐藏元素后,…

    2025年12月24日
    000
  • 了解一些 提高前端开发效率的 CSS 属性选择器

    (推荐教程:CSS教程) 属性选择器非常神奇。它们可以使你摆脱棘手的问题,帮助你避免添加类,并指出代码中的一些问题。但是不要担心,虽然属性选择器非常复杂和强大,但是它们很容易学习和使用。在本文中,我们将讨论它们是如何运行的,并给出一些如何使用它们的想法。 通常将 HTML 属性放在方括号中,称为属性…

    2025年12月24日
    000
  • 详细介绍CSS计数器

    css计数器效果是指使用CSS代码实现随元素的数目增多, 数值也跟着变大的效果, 有点类似于 , 但是比ol更灵活。 (推荐教程:css视频教程) CSS计数器有两个属性 (counter-reset 和 counter-increment) 和一个方法 (counter() / counters(…

    2025年12月24日 好文分享
    000
  • 如何利用css改变input光标颜色

    具体方法如下: (推荐教程:css视频教程) 1、使用color来实现 光标的颜色是继承自当前输入框字体的颜色,所以用color属性即可改变: 立即学习“前端免费学习笔记(深入)”; input{ color:red;} 2、使用caret-color来实现 上一种方式已经修改了光标的颜色但是字体的…

    好文分享 2025年12月24日
    000
  • css样式重置

    对CSS重置的个人理解: (推荐教程:css视频教程) 首先,我觉得像我一样对于理解概念无感,容易混淆的前端小白要清楚什么是css重置样式,就要弄清楚两个概念:CSS Reset以及css重置(其实概念很相近,但是还是有所区别的),不然傻傻只知道css样式要重置,知其然不知其所以然,这对于我这种对概…

    2025年12月24日
    000
  • css给图片添加水印

    目的: 给一些图片加上水印。 (学习视频推荐:css视频教程) 图片和水印展示区域 立即学习“前端免费学习笔记(深入)”; 样式 .watermark-image { position: relative; width: 300px; height: 300px; background: url(‘…

    2025年12月24日
    000
  • css实现div背景色闪烁效果

    我们先来看下效果图: (视频教程推荐:css视频教程) 代码实现: 立即学习“前端免费学习笔记(深入)”; @keyframes fade { from { opacity: 1.0; } 50% { opacity: 0.0; } to { opacity: 1.0; }}.headerBox {…

    2025年12月24日
    000

发表回复

登录后才能评论
关注微信