广告
返回顶部
首页 > 资讯 > 前端开发 > html >如何理解CSS属性中的z-index
  • 376
分享到

如何理解CSS属性中的z-index

2024-04-02 19:04:59 376人浏览 安东尼
摘要

这篇文章主要讲解了“如何理解CSS属性中的z-index”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何理解CSS属性中的z-index”吧!如果你不是一

这篇文章主要讲解了“如何理解CSS属性中的z-index”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何理解CSS属性中的z-index”吧!

如果你不是一名csser新手,想必你对z-index的用法应该有个大致的了解了吧,z-index可以控制定位元素在垂直于显示屏方向(Z 轴)上的堆叠顺序,本文不去讲述基本的api如何使用,而是去更深入的了解z-index是如何工作的,使用z-index的时候有哪些问题,以及z-index在日常开发中的使用。

下面我们通过一个例子来引入今天的正文,代码示例:

代码如下:


<style type="text/css">
.red, .green, .blue {
 position: absolute;
 width: 100px;
 height: 100px;
 text-align: center;
 line-height: 100px;
 color: #fff;
}
.red {
 background-color: red;
 z-index: 1;
}
.green {
 background-color: green;
 top: 70px;
 left: 70px;
}
.blue {
 background-color: blue;
 top: 140px;
 left: 140px;
}
</style>  
<div>
<span class="red">Red box</span>
</div>
<div>
<span class="green">Green box</span>
</div>
<div>
<span class="blue">Blue box</span>
</div>

如下图:
如何理解CSS属性中的z-index
上述代码通俗易懂,下面有个问题请大家思考:
在遵循下述规则的情况下,如何使用红色span元素在green和blue元素后面?
1) 不能以任何方式更改html标记;
2) 不能增加或改变任何元素的z-index属性;
3) 不恩增加或改变任何元素的position属性;
请大家思考,这个问题改如何解决?说明其原因?
&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&ndash; 分割线 &mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;-

一、z-index 黄金法则及stack context

1) 一个box和它的父亲有相同的堆叠级别(stack level),除非该box被通过z-index属性赋予了不同的stack level;
2) z-index属性只适应于position属性为relative、absolute、fixed的元素对象;
3) 给一个被定位(positioned)元素设置小于1的opacity属性值,意味着创建了一个堆叠上下文(stack context),就像给该元素增加了一个z-index值;
4) 对于一个被positioned box,如果指定了z-index属性,意味着:
->该box的stack level 在当前的stack context中;
->该box建立了个本地stack context;
5) 如果box没有指定z-index,元素将被按下面的顺序堆叠(stacked)(从后到前):
-> 正常流中的boxes,根据在源代码中的序列;
-> 浮动boxes;
-> computed后display属性值为inline/inline-block/inline-table的boxes;
-> positioned boxes 和boxes 设置opacity值小于1,根据在源代码中的序列;

因此,当我们给一个positioned元素设置了z-index时,我们做了两件事:
1) 该元素与在它前面或者后面的元素共享着相同的stack context,这也就是我们改变z-index的值,元素会移动其他元素前后者后的原因。
2) 为该元素内的任何元素创建了一个新的stack context,一旦你创建了一个stack context,内部的任何有(stack context)的任何层都会停留在这个stack context。

通过上述的黄金法则,也许你已经知道上面那个问题的答案了。在黄金法则里,我们提到了个新名词“stack context”,下面我们通过一个实例来介绍它:

代码如下:


<!DOCTYPE html>
<html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>z-index example</title>
</head>
<body>
<h2>Header</h2>  
<p>I am paragraph. <em> I am em</em></p>  
</body>
</html>

一个很特殊的情况是,在一个document中,没有任何定位,document有且只有一个堆叠环境 &ndash; 通过HTML创建。
下面我们给上例添加如下样式:

代码如下:


h2, p {
position: relative;
}
h2 {
z-index: 2;
}
p {
z-index: 1;
}

在这种情况下,h2,p都创建了一个stack context,这两个stack context都在document的stack context内。增加样式后h2在p元素之上。如果我们给em元素增加如下样式结果又会怎样:

代码如下:


h2, p, em {
position: relative;
}
h2 {
z-index: 2;
background-color: #f0f;
}
p {
z-index: 1;
background-color: #00f;
line-height: 40px;
}
em {
z-index: 1;
background-color: #f00;
}

增加此样式后em创建了stack context,由于em的z-index属性,它的内部的text比p标签中的其它text更接近用户。因为它是在p的stack context内部,它是一直比h2中的text低的。

注意:如果你增加z-index的值,是不能使用em位于h2之上的。如果你想一个context的元素位于另一个context中的元素之上,你必须提升整个context或者设置它们为相同的context。
下面是两种解决方案:
方案一:

代码如下:


h2, p, em {
position: relative;
}
h2 {
z-index: 2;
background-color: #f0f;
}
p {

z-index: 3;
background-color: #00f;
line-height: 40px;
margin-top: -40px;
}
em {
z-index: 1;
background-color: #f00;
}

方案二:

代码如下:


h2, p, em {
position: relative;
}
h2 {
z-index: 2;
background-color: #f0f;
}
p {
background-color: #00f;
line-height: 40px;
margin-top: -40px;
}
em {

z-index: 2;
background-color: #f00;
}



二、创建stack context及注意事项

那么创建stack context的方式有哪些?
1) When an element is the root element of a document (theelement)
2) When an element has a position value other than static and a z-index value other than auto
3) When an element has an opacity value less than 1

Update: In addition to opacity, several newer CSS properties also create stacking contexts. These include: transfORMs, filters, css-regions, paged media, and possibly others. As a general rule, it seems that if a CSS property requires rendering in an offscreen context, it must create a new stacking context.

In WEBKit, styling a box with position:fixed or -webkit-overflow-scrolling:touch implicitly creates a stacking context, just like adding a z-index value.

Also, be aware of these css3 “triggers”:
transform != none
transform-style: preserve-3D
filter != none
clip-path, mask
Lastly, even though a relatively positioned element without a z-index set does not establish a stacking context&hellip;

A common IE bug, often seen in drop-down menus, is that any relatively positioned element that has haslayout set to true establishes a stacking context.
One may visualize this bug by setting [A] and [B] to position:relative, while [a] gets position:relative; z-index:1.
Now, dragging [A] under [B] hides [a] &ndash; in Internet Explorer, that is. Any positioned child with a z-index is caught by this wrong stacking context of its parent.

三、z-index在某些浏览器中的问题

1) IE6中的
select元素是一个窗口控件,所以它总是出现在层叠顺序的顶部而不会顾及到自然层叠顺序、position属性或者是z-index。可以在div元素上添加一个iframe设置为position:absolute,并设置div的z-index比iframe的高。

2) 因父容器(元素)被定位的缘故,IE6/7会错误的对其stacking context进行重置。

3) 在Firefox2版本中,一个负的z-index值会使元素位于stacking context的后面,而不是位于公认的背景和边框这样的元素stacking context之前。

本文到此结束,最后附上本文开始时提出的问题的答案:

代码如下:



div:first-child {
opacity: .99;
}

感谢各位的阅读,以上就是“如何理解CSS属性中的z-index”的内容了,经过本文的学习后,相信大家对如何理解CSS属性中的z-index这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

--结束END--

本文标题: 如何理解CSS属性中的z-index

本文链接: https://www.lsjlt.com/news/82060.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 如何理解CSS属性中的z-index
    这篇文章主要讲解了“如何理解CSS属性中的z-index”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何理解CSS属性中的z-index”吧!如果你不是一...
    99+
    2022-10-19
  • 如何理解z-index属性
    这篇文章给大家介绍如何理解z-index属性,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。一、z-index七阶层叠顺序表1.层叠顺序的大小比较:background/border &...
    99+
    2022-10-19
  • CSS中position和z-index属性如何使用
    本篇文章给大家分享的是有关CSS中position和z-index属性如何使用,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。深入理解CSS中的...
    99+
    2022-10-19
  • CSS中z-index属性有什么用
    小编给大家分享一下CSS中z-index属性有什么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!   z-index描述如下...
    99+
    2022-10-19
  • CSS 层叠属性解读:z-index 和 position
    在CSS中,布局和样式的设计是非常重要的。而在设计中,经常需要对元素进行层叠和定位。两个重要的CSS属性,即z-index和position,可以帮助我们实现这些需求。本文将深入探讨这两个属性并提供具体的代码示例。一、z-index 属性z...
    99+
    2023-10-21
    z-index position 层叠属性
  • CSS 层叠属性解析:z-index 和 position
    在CSS中,z-index和position是两个常用的层叠属性,用于控制元素的叠放顺序和定位方式。本文将详细解析这两个属性,并提供相关代码示例。一、z-index属性z-index属性用于控制元素的叠放顺序。它接受一个整数值作为参数,数值...
    99+
    2023-10-21
    z-index 关键词:CSS position 层叠属性
  • css中的z-index属性怎么使用
    这篇文章给大家分享的是有关css中的z-index属性怎么使用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。   z-index描述如下。   z-index:value; ...
    99+
    2022-10-19
  • css中position属性及z-index属性怎么用
    这篇文章给大家分享的是有关css中position属性及z-index属性怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。在网页设计中,position属性的使用是非常重要的...
    99+
    2022-10-19
  • 怎么在CSS中使用z-index属性
    本篇文章为大家展示了怎么在CSS中使用z-index属性,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。默认的摆放规则假定元素没有指定z-index属性,那么元素按照如下顺序叠放(从底到顶) ...
    99+
    2023-06-09
  • CSS z-index属性的作用是什么
    CSS z-index属性用于控制元素的堆叠顺序,即确定元素在垂直方向上的显示顺序。元素的堆叠顺序决定了哪个元素覆盖其他元素。具有较...
    99+
    2023-09-05
    CSS
  • CSS 下拉菜单属性解析:position 和 z-index
    在网页设计中,下拉菜单是一个常见的组件,用于展示更多选项或者隐藏一些内容。为了实现一个完善的下拉菜单,掌握 position 和 z-index 属性是非常重要的。本文将详细解析这两个属性,并提供具体代码示例。一、position 属性po...
    99+
    2023-10-21
    下拉菜单 CSS 属性解析
  • CSS 相对定位属性解析:relative 和 z-index
    引言:在网页设计中,我们有时需要调整元素的位置和显示层级。CSS 相对定位属性可以帮助我们实现这些效果。本文将详细解析 CSS 相对定位属性中的 relative 属性和 z-index 属性,并提供具体的代码示例。一、relative 属...
    99+
    2023-10-21
    - CSS相对定位 - relative属性 - z-index属性
  • CSS中z-index属性对层叠顺序的处理是怎样的
    CSS中z-index属性对层叠顺序的处理是怎样的,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。多次在项目中遇到html页面元...
    99+
    2022-10-19
  • CSS中的z-index属性在层叠布局中的用法
    本篇内容主要讲解“CSS中的z-index属性在层叠布局中的用法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“CSS中的z-index属性在层叠布局中的用法”吧...
    99+
    2022-10-19
  • 如何解决div层调整z-index属性无效的问题
    本篇文章为大家展示了如何解决div层调整z-index属性无效的问题,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。z-index 无效在做的过程中,发现了一个很简单...
    99+
    2022-10-19
  • 深入探讨z-index属性及其常见属性值:理解绝对定位
    理解绝对定位的常用属性值:深入解析CSS中的z-index属性在CSS中,绝对定位(absolute positioning)是一种常用的定位方式,用于精确控制元素在页面中的位置。而其中的一个重要属性值,z-index,可以帮助我们决定元素...
    99+
    2023-12-28
    z-index 绝对定位 (Absolute Positioning) 定位 (Positioning)
  • 如何理解CSS中的属性模块
    本篇内容主要讲解“如何理解CSS中的属性模块”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何理解CSS中的属性模块”吧!更多 vs 更少 - 简单比较神奇的是...
    99+
    2022-10-19
  • 如何理解CSS属性中的vertical-align
    这篇文章主要讲解了“如何理解CSS属性中的vertical-align”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何理解CSS属性中的vertical-...
    99+
    2022-10-19
  • 如何理解CSS中的Position和Float属性
    本篇文章给大家分享的是有关如何理解CSS中的Position和Float属性,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。本文结构点:1.HT...
    99+
    2022-10-19
  • 如何理解css中position的五个属性
    如何理解css中position的五个属性,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。在实际开发页面布局时,运用positi...
    99+
    2022-10-19
软考高级职称资格查询
推荐阅读
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作