精华内容
下载资源
问答
  • 层级关系
    2021-06-12 16:35:59

    CSS 中的 z-index 属性用于设置节点的堆叠顺序, 拥有更高堆叠顺序的节点将显示在堆叠顺序较低的节点前面, 这是我们对 z-index 属性普遍的认识. 与此同时, 我们总是对堆叠顺序捉摸不透, 将 z-index 的值设得很大也未必能将节点显示在最前面. 本文将通过一些例子对 z-index 的使用方法进行分析, 并且为各位带入 z-index 层级树的概念.

    目录

    顺序规则

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

    复制代码代码如下:

    A
    B

    5d955de6453863df03c7352e73ddfb7f.gif

    CSS z-index 属性顺序规则的例子

    定位规则

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

    复制代码代码如下:

    A
    B

    5d955de6453863df03c7352e73ddfb7f.gif

    CSS z-index 属性定位规则的例子, static

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

    复制代码代码如下:

    A
    B

    83b86842705640add4ac409af61ea84b.gif

    CSS z-index 属性定位规则的例子, relative | absolute | fixed

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

    复制代码代码如下:

    A-1
    B

    7760ce50171a5df504be9328916a95a2.gif

    CSS z-index 属性互相覆盖的例子

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

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

    电子商务网站侧栏的类目展示列表

    06f6d2a8a55fcd9126817029c5ded103.png

    参与规则

    我们尝试不用 position 属性, 但为节点加上 z-index 属性. 发现 z-index 对节点没起作用.

    复制代码代码如下:

    A
    B
    C

    24774dfeeeab11bef1147693818e4c47.gif

    CSS z-index 属性参与规则的例子, 没有明确定位的时候

    W3C 对 z-index 属性的描述中提到 在 z-index 属性仅在节点的 position 属性为 relative, absolute 或者 fixed 时生效.

    The z-index property specifies the stack order of an element. Only works on positioned elements(position: absolute;, position: relative; or position: fixed;).

    复制代码代码如下:

    A
    B
    C

    df17775ff10fe77a2f0812643bcc8906.gif

    CSS z-index 属性参与规则的例子, 明确定位的节点才能使用 z-index 属性

    默认值规则

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

    复制代码代码如下:

    A
    B
    C
    D

    859720414b1740c1c36a2d5646fbdd1a.gif

    CSS z-index 属性默认值规则的例子

    通过检查我们还发现, 当 position 设为 relative, absolute 或者 fixed, 而没有设置 z-index 时, IE8 以上和 W3C 浏览器 (下文我们统称为 W3C 浏览器) 的 z-index 默认值是 auto, 但 IE6 和 IE7 是 0.

    从父规则

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

    复制代码代码如下:

    A-1
    B-1

    96e1bf851151afd7139e7339de058dce.gif

    CSS z-index 属性从父规则的例子, 子节点不设定层级

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

    复制代码代码如下:

    A-1
    B-1

    eb831fb7e6e2d8c9cccf6508107cc657.gif

    CSS z-index 属性从父规则的例子, 不可逾越的层级

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

    层级树规则

    可能你会觉得在 DOM 结构中的兄弟节点会拎出来进行比较并确定层级, 其实不然.

    复制代码代码如下:

    A-1
    B-1

    96e1bf851151afd7139e7339de058dce.gif

    CSS z-index 属性层级树规则的例子

    我们认为同时将 position 设为 relative, absolute 或者 fixed, 并且 z-index 经过整数赋值的节点, 会被放置到一个与 DOM 不一样的层级树里面, 并且在层级树中通过对比 z-index 决定显示的层级. 上面的例子如果用层级树来表示的话, 应该如下图所示.

    803c3cf0af78b014affb2f8c2ffa8dce.gif

    CSS z-index 的层级树

    图中虽然 A-1 (z-index:0) 的值比 B-1 (z-index:1) 小, 但因为在层级树里 A (z-index:2) 和 B-1 在一个层级, 而 A 的值比 B-1 大, 根据从父规则, A-1 显示在 B-1 前面.

    参与规则 2

    前面提到的参与规则认为只要节点的 position 属性为 relative, absolute 或者 fixed, 即可参与层级比较, 其实不准确. 如果所有节点都定义了 position:relative, 并且将 z-index 设为整数值, 根据从父规则, 父节点的层级决定了子节点所在层级.

    复制代码代码如下:

    A-1
    B-1-1
    C-1-1-1

    例子中 A, B-1, C-1-1 作为父节点, z-index 的值相同, 根据顺序规则, C-1-1 在 B-1 之前, B-1 在 A 之前; 又根据从父规则, 无论子节点的 z-index 值是什么, C-1-1-1 在 B-1-1 之前, B-1-1 在 A-1 之前.

    cc470a44ee686d9a1dadd13b031ce1d1.gif

    CSS z-index 属性参与规则 2 的例子, 所有节点参与层级比较

    如果我们将所有父节点的 z-index 属性去除, 诡异的事情发生了. IE6 和 IE7 浏览器显示效果不变, 而 W3C 浏览器的子节点不再从父, 而是根据自身的 z-index 确定层级.

    复制代码代码如下:

    A-1
    B-1-1
    C-1-1-1

    根据默认值规则, IE6 / IE7 和 W3C 浏览器上的元素存在 z-index 默认值的区别. 我们相信, 仅当 position 设为 relative, absolute 或者 fixed, 并且 z-index 赋整数值时, 节点被放置到层级树; 而 z-index 为默认值时, 只在 document 兄弟节点间比较层级. 在 W3C 浏览器中, A, B-1 和 C-1-1 的 z-index 均为 auto, 不参与层级比较.

    84b92daaccd631a71ad731bb4000bf32.gif

    CSS z-index 属性参与规则 2 的例子, z-index 为 auto 的节点不参与层级比较

    而在 IE6 和 IE7 中, 因为 z-index 的默认值是 0, 所以也参与了层级比较.

    6251ef2fd8640af391d46ea2955f6dc1.gif

    CSS z-index 属性参与规则 2 的例子, IE6 和 IE7 中 z-index 默认为 0

    设置了 position 而没有 z-index 的节点虽然不参与层级树的比较, 但还会在 DOM 中与兄弟节点进行层级比较.

    复制代码代码如下:

    A-1
    B-1-1
    C-1-1-1

    我们对上个例子改造一下, 将 B-1 的 position 属性删除后, W3C 浏览器显示如下图. 根据定位规则, A 和 C-1-1 会显示在 B-1 的前面; 而根据顺序规则, C-1-1 又显示在 A 前面.

    0b9020d228c073f98a122f27dfc8e1e4.gif

    CSS z-index 属性参与规则 2 的例子, position 为 auto 的节点不参与层级树比较, 但仍参与 DOM 兄弟节点间的层级比较, W3C 浏览器

    在 IE6 和 IE7 中, 因为 A 和 C-1-1 设置了 position:relative, 而且 z-index 的默认值为 0, 所以也参与层级树比较, 所以有如下效果.

    7d7a67d4f19b3323dd7510f14c3fbf74.gif

    CSS z-index 属性参与规则 2 的例子, position 为 auto 的节点不参与层级树比较, 但仍参与 DOM 兄弟节点间的层级比较, IE6 和 IE7

    总结

    浏览器节点显示层级是一个费力的活, 今天你觉得 A 区块会永远置顶, 但明天因为需求变动, 突然出现 B 元素需要置顶. 一层一层往上堆砌, 某天回头一看, 发现很多区块交错在一起, 而且他们的值一个比一个大, 根本搞不清头绪. 我觉得在操刀干活之前, 最好先将 position, z-index 和层级的关系搞搞清楚, 以免后患无穷.

    另外, 非情非得已, 切勿用 JavaScript 计算 z-index, 并将某个节点的 z-index 设置成所有节点中层级最高.

    因为篇幅太长, 本文仅从节点属性角度进行讨论, 没有涉及 select 和 iframe 等特殊页面节点考虑, 如果有机会下次再为大家分享.

    以上就是CSS z-index 层级关系优先级的概念全部内容,希望能给大家一个参考,也希望大家多多支持脚本之家。

    更多相关内容
  • HTML5层级关系架构图代码是一款HTML5基于SVG绘制的公司组织架构图代码。
  • 层级关系PPT模板

    2018-10-26 16:42:45
    并列、层级关系PPT幻灯片图表模板。能够飙到关系及图片。
  • 这是三张立体金字塔层级关系PPT图表,第一PPT模板网提供幻灯片图表免费下载。 三张图表分别用蓝色、红色、紫色的立体金字塔和黄色的渐变图案分割构成,可以在PowerPoint中体现层级关系。 关键词:金字塔PPT图表,...
  • 树叶形状,分散层级关系图表,漂亮色彩层级关系ppt图表。
  • 这是一张柱状包含层级关系PPT图表,关键词:层级关系,包含关系。.PPTX格式;
  • <br> 这是三张简洁扁平化,金字塔形状的层级关系PPT图表。三张配色分别为:蓝绿配色、紫色调、橙色调。.PPTX格式;
  • <br> <br> <br> <br> 这是10张金字塔形层级关系PPT图表,.PPTX格式;
  • 层级关系powerPoint架构图素材下载,关键词:层级关系,文字说明,PPT结构图、PowerPoint架构图,PPTX格式; 层级关系powerPoint架构图素材下载,关键词:层级关系,文字说明,PPT结构图、PowerPoint架构图,PPTX...
  • HTML5层级关系组织结构图代码,公司组织结构图。
  • 这是三张带有箭头百分比说明的,圆柱层级关系PPT图表,.PPTX格式;
  • 这是一张彩色四层结构的,层级关系PPT图表。两侧带有百分比说明与图标装饰。.PPTX格式;
  • 这是三张带有百分比说明的,递进层级关系PPT图表,.PPTX格式;
  • MYSQL世界各洲包含国家英文、中文、简称、层级关系表,`bby_country` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(255) NOT NULL DEFAULT '', `parent_id` smallint(6) NOT NULL DEFAULT '...
  • 这是一张漏斗层级关系PPT图表,第一PPT模板网提供幻灯片免费下载。 本图表用灰色,紫色构成的漏斗作为主要元素,适用于各个行业和机构层级关系的幻灯片制作。 扩展阅读:14张通用实用PPT图表打包下载 关键词:...
  • 阶梯样式层级关系PPT图表.pptx
  • 功能介绍:能够清楚的展示出用户之间的层级关系.实现方法:使用echars3中tree的形式来展示.数据库介绍:当前tree是用两张表来实现的,一张表更简单.user表(id,name),FriendsLog表(userId,parentId).代码构造:为了避免...
  • 这是四张带有动态幻灯片动画效果的,3d立体风格的层级关系PowerPoint图表素材。 幻灯片使用立体金字塔和切开的地核作为设计主题,搭配精致的动态幻灯片效果,非常优秀。 关键词:3d,立体PPT图表,动态幻灯片图表...
  • 包含世界各国以及主要城市的信息(简体,繁体,英文名称),国内精确到区县,国外精确到市。以树形结构存储,可以获取当前国家下属城市,也可以获取当前城市所属国家或洲
  • 精美的包含层级关系PPT素材下载,关键词:包含关系PPT图表,层级关系幻灯片素材,smartart素材下载,PPTX格式;
  • 精美的层级关系幻灯片图表模板下载,关键词:3d立体PPT图表素材,设计风格,层级关系,.PPTX格式;
  • 金字塔层级关系PPT图表下载。层级关系图形图表用于强调几个对象之间的层次性差异。
  • 这是一张蓝色背景的,层级关系PPT图表模板,素材为3d立体圆锥体PPT背景图片,素材格式.PPTX;
  • 多层台阶层级关系PPT模板下载。
  • 一张淡雅的层级关系台阶PPT图表素材,右侧为淡蓝色的方块配合台阶图片,左侧为素材说明文字,.PPTX格式;
  • 这是一张漏斗层级关系PPT图表,第一PPT模板网提供幻灯片免费下载。 本图表用灰色,紫色构成的漏斗作为主要元素,适用于各个行业和机构层级关系的幻灯片制作。 扩展阅读:14张通用实用PPT图表打包下载 关键词:层级...
  • position定位里的absolute,relative和fixed absolue:绝对定位,用top,bottom,left...首先我们要知道,css属性其实是一个立体空间有x,y,z轴,但是只有我们使用了position定位时,z轴上的层级关系才体现出来,即z-in
  • <br> 这是三张配色的,V形层级关系PPT图表。.PPTX格式;
  • 3d立体的并列关系层级关系PPT关系图免费下载; 关键词:3d立体幻灯片图表素材,并列关系,层级关系PPT关系图下载,.PPTX格式; 3d立体的并列关系层级关系PPT关系图免费下载;关键词:3d立体幻灯片图表素材,并列关系...
  • 这是一张柱状包含层级关系PPT图表,关键词:层级关系,包含关系。.PPTX格式;

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 164,499
精华内容 65,799
关键字:

层级关系

友情链接: mattriall_materials.rar