css中的z-index是什么

news/2024/7/2 19:12:18/文章来源:https://blog.csdn.net/qq_42880714/article/details/132680400

css中的z-index是什么

CSS 中,有一个属性可以显式控制 HTML 元素的堆叠顺序:z-index。具有较高值的​​元素就会出现在顶部:

<style>.box {position: relative;width: 50px;height: 50px;border: 3px solid;background: silver;}.first.box {z-index: 2;background-color: peachpuff;}.second.box {z-index: 1;margin-top: -20px;margin-left: 20px;}
</style><div class="first box"></div>
<div class="second box"></div>

在这里插入图片描述
因为.first.box元素的z-index值 比.second.box的大,所以它堆叠在前面。如果我们删除z-index 属性,.first.box就会处于.second.box元素后面。

在这里插入图片描述
但是有时候z-index更大也层级不一定生效。

<style>
body {background: #eee;
}header {height: 60px;line-height: 60px;background: pink;text-align: center;position: relative;z-index: 2;
}main {padding: 32px;position: relative;z-index: 1;
}.tooltip {top: -12px;left: 0px;right: 0px;margin: 0 auto;width: 90px;text-align: center;padding: 8px;background: white;box-shadow: 1px 2px 8px hsla(0deg, 0%, 0%, 0.25);border-radius: 6px;position: absolute;z-index: 999999;
}
</style><header>Header
</header>
<main><div class="tooltip">A tooltip</div><p>content</p>
</main>

在这里插入图片描述
从上图可以看到.tooltipz-index值是比header元素更大的,但是却处于header元素之下,为了解释这种情况,我们需要了解堆叠上下文,这是一种晦涩但基本的 CSS 机制。在本文中,我们将探讨它们是什么、它们如何工作以及如何利用它们来发挥我们的优势。

层和组

我们使用photoshop来距离说明层和组的概念。
在这里插入图片描述

我们的图像有 3 个独立的画布,像煎饼一样堆叠起来。最底层是一张猫的照片,上面有两层添加了一些的细节。通过堆叠这些层,我们最终得到了的图像如下:

在这里插入图片描述

而且还可以对图层进行分组:
在这里插入图片描述
就像文件夹中的文件一样,组允许我们对图层进行分段。在堆叠顺序方面,不允许图层在组之间“混合”:所有dog的图层将出现在所有cat的图层之上。

当我们导出合成时,我们根本看不到猫,因为它在狗后面:
在这里插入图片描述

CSS的工作方式类似:元素被分组到堆叠上下文中。当我们给一个元素一个 z-index 时,该值仅与同一上下文中的其他元素进行比较。z-index 值不是全局的

默认情况下,纯 HTML 文档将具有包含所有节点的单个堆叠上下文。但我们可以创建额外的上下文!

创建堆叠上下文的方法有很多,但以下是最常见的:

.element {position: relative;z-index: 1;
}

通过组合这两个声明,会触发一个秘密机制:创建一个堆栈上下文,围绕该元素及其所有子元素形成一个组。

那么对于一开始抛出的那个header.tooltip上的问题我们就可以进行解析了。

我们创建的堆叠上下文为:

  • 根上下文
    • <header>
    • <main>
      • <div class="tooltip">

.tooltip元素的 z-index 为 999999,但该值仅在<main>堆叠上下文中相关。.tooltip元素只是显示在相邻<p>标签的上方而已。

同时,在父上下文中,<header><main>进行比较。因为<main>z-index 较小,所以它显示在<header>下面。

那么如何解决呢,只需要在<main>中去除z-index属性即可,这样就不会创建堆叠上下文,那么整体的结构层次为:

  • 根上下文
    • <header>
    • <div class="tooltip">

创建堆叠上下文

我们已经了解了如何通过将相对或绝对定位与z-index相结合来创建堆叠上下文,以下是其他一些方法:

  • 设置opacity为小于1的值
  • 设置positionfixedsticky(这些值不需要 z-index
  • 在存在display: flex或者display: grid属性的父容器中的子元素中添加一个z-index属性
  • 使用transformfilterclip-path、 或perspective
  • will-change值设置为opacity或者transform
  • 使用isolation: isolate显式地创建一个上下文

关于 z-index 的常见误解

我们通常需要在元素上设置position属性为relativeabsolute,这样z-index才能生效,但是也有一些例外,例如:

<style>.box {width: 50px;height: 50px;border: 3px solid;background: silver;}.wrapper {display: flex;}.second.box {z-index: 1;background: hotpink;margin-top: 20px;margin-left: -20px;margin-right: -20px;}
</style><div class="wrapper"><div class="first box"></div><div class="second box"></div><div class="third box"></div>
</div>

在这里插入图片描述
我们没有为.second.box元素设置position,但是设置了z-index,这时同样生效。

一般来说,z-index仅适用于“定位”元素(设置positionstatic以外的元素)。但 Flexbox 规范添加了一个例外:即使Flex 子项是静态定位的,它们也可以使用。

isolation

.wrapper {isolation: isolate;
}

当我们将此声明应用于元素时,它只起到创建一个新堆栈上下文的作用。

,对于所有其他方法,堆栈上下文都是隐式创建的。而isolation以最纯粹的方式创建一个堆叠上下文:

  • 无需指定 z-index
  • 可用于静态定位元素(position: static;
  • 不会以任何方式影响子级的渲染

这是非常有用的,因为它可以让我们“封闭”一个元素的子元素。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_166592.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

电脑硬盘数据恢复一般需要收费多少钱

随着电子信息时代的发展&#xff0c;个人和企业对电脑硬盘中存储的数据越发重视。然而&#xff0c;由于各种原因&#xff0c;硬盘数据丢失的情况屡见不鲜。如果您正陷入这样的困境&#xff0c;您可能会好奇恢复失去的数据需要花费多少钱。本文将为您介绍电脑硬盘数据恢复的一般…

数据结构前言

一、什么是数据结构&#xff1f; 数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。 上面是百度百科的定义&#xff0c;通俗的来讲数据结构就是数据元素集合与数据元素集合或者数据元素与数据元素之间的组成形式。 举个…

pdf文件过大如何缩小上传?pdf压缩跟我学

在我们日常工作和生活中&#xff0c;经常会遇到PDF文件过大的问题&#xff0c;给文件传输和存储带来了很大的不便。那么&#xff0c;如何缩小PDF文件大小以便上传呢&#xff1f;下面就给大家分享几个压缩方法&#xff0c;一起来了解下PDF文件压缩方法吧~ 方法一&#xff1a;嗨格…

论文阅读《Nougat:Neural Optical Understanding for Academic Documents》

摘要 科学知识主要存储在书籍和科学期刊中&#xff0c;通常以PDF的形式。然而PDF格式会导致语义信息的损失&#xff0c;特别是对于数学表达式。我们提出了Nougat&#xff0c;这是一种视觉transformer模型&#xff0c;它执行OCR任务&#xff0c;用于将科学文档处理成标记语言&a…

中国手机新进程:折叠屏出海的荣耀,5G中回归的华为

最近&#xff0c;“华为5G回归”“自研麒麟芯片回归”的消息引爆网络。网友开心庆贺之余&#xff0c;也纷纷猜测&#xff0c;华为强势归来&#xff0c;哪家友商最慌&#xff1f; “华为的回归&#xff0c;让竞争充满了更多的可能性和更多的魅力”&#xff0c;与华为渊源颇深的…

ELK框架Logstash配合Filebeats和kafka使用

ELK框架Logstash配合Filebeats和kafka使用 本文目录 ELK框架Logstash配合Filebeats和kafka使用配置文件结构input为标准输入&#xff0c;output为标准输出input为log文件output为标准输出output为es input为tcpspringboot配置logstash配置 input为filebeatsfilebeats配置logsta…

阿里云2核4G服务器5M带宽5年费用价格明细表

阿里云2核4G服务器5M带宽可以选择轻量应用服务器或云服务器ECS&#xff0c;轻量2核4G4M带宽服务器297元一年&#xff0c;2核4G云服务器ECS可以选择计算型c7、c6或通用算力型u1实例等&#xff0c;买5年可以享受3折优惠&#xff0c;阿腾云分享阿里云服务器2核4G5M带宽五年费用表&…

OPENCV实现图像查找

特征匹配+单应性矩阵 # -*- coding:utf-8 -*- """ 作者:794919561 日期:2023/9/4 """ import cv2 import numpy as np# 读图像 img1 = cv2.imread(F:\\learnOpenCV\\openCVLearning\\pictures\\chess

容器编排工具的比较:Kubernetes、Docker Swarm、Nomad

随着容器化技术的普及&#xff0c;容器编排工具成为了现代应用部署和管理的重要组成部分。容器编排工具能够自动化容器的部署、扩展和管理&#xff0c;从而提高应用的可靠性和可伸缩性。在众多的容器编排工具中&#xff0c;Kubernetes、Docker Swarm和Nomad是三个备受关注的主要…

OpenCV(十八):图像直方图

目录 1.直方图统计 2.直方图均衡化 3.直方图匹配 1.直方图统计 直方图统计是一种用于分析图像或数据的统计方法&#xff0c;它通过统计每个数值或像素值的频率分布来了解数据的分布情况。 在OpenCV中&#xff0c;可以使用函数cv::calcHist()来计算图像的直方图。 calcHist(…

同步推送?苹果计划本月推出 iOS17和iPadOS17,你的手机支持吗?

据报道&#xff0c;苹果公司计划在本月推出 iOS 17 和 iPadOS 17 正式版更新。与去年不同的是&#xff0c;这次更新将同时发布&#xff0c;而不是分别发布。根据彭博社的一位消息人士马克・古尔曼的说法&#xff0c;苹果公司认为 iOS 17 和 iPadOS 17 的第八个测试版已经非常接…

浅谈Mysql读写分离的坑以及应对的方案 | 京东云技术团队

一、主从架构 为什么我们要进行读写分离&#xff1f;个人觉得还是业务发展到一定的规模&#xff0c;驱动技术架构的改革&#xff0c;读写分离可以减轻单台服务器的压力&#xff0c;将读请求和写请求分流到不同的服务器&#xff0c;分摊单台服务的负载&#xff0c;提高可用性&a…

Calico IP In IP模拟组网

Calico IP In IP模拟组网 网络架构 模拟组网 先在k8s-master-1节点执行如下命令&#xff1a; # 创建veth-pair设备对ip link add veth1 type veth peer name eth0# 创建ns1网络命名空间ip netns add ns1# 将eth0网卡插入ns1网络命名空间ip link set eth0 netns ns1# 为ns1网…

leetcode 第 361 场周赛

2843. 统计对称整数的数目 核心思想&#xff1a;枚举每一个数是否是对称整数,第一种写法为python写法&#xff0c;第二种为一般写法我觉得更好&#xff0c;非常有思想性。 2844. 生成特殊数字的最少操作 核心思想&#xff1a;枚举特殊数字结尾的几种可能。其实自己做的时候一…

如何在你的Android工程中启用K2编译器?

如何在你的Android工程中启用K2编译器&#xff1f; K2编译器是用于Kotlin代码编译的最新、高效编译器&#xff0c;你现在可以尝试使用了。 Kotlin编译器正在为Kotlin 2.0进行重写&#xff0c;新的编译器实现&#xff08;代号K2&#xff09;带来了显著的构建速度改进&#xff…

算法笔记 近似最近邻查找(Approximate Nearest Neighbor Search,ANN)

1 介绍 精准最近邻搜索中数据维度一般较低&#xff0c;所以会采用穷举搜索&#xff0c;即在数据库中依次计算其中样本与所查询数据之间的距离&#xff0c;抽取出所计算出来的距离最小的样本即为所要查找的最近邻。 当数据量非常大的时候&#xff0c;搜索效率急剧下降。——>…

【Docker】 08-Dockerfile

什么是Dockerfile Dockerfile可以认为是Docker镜像的描述文件&#xff0c;是由一系列命令和参数构成的教程&#xff0c;主要作用是用来构建docker镜像的构建文件。 Dockerfile解析过程 Dockerfile的保留命令 保留字作用FROM当前镜像是基于哪个镜像的 第一个指令必须是FROMMA…

微信小程序slot插槽的介绍,以及如何通过uniapp使用动态插槽

微信小程序文档 - slots介绍 由上述文档看俩来&#xff0c;微信小程序官方并没有提及动态插槽内容。 uniapp文档 - slots介绍 uni官方也未提及关于动态插槽的内容 在实际使用中&#xff0c;直接通过 <<slot :name"item.xxx" /> 这种形式会报错&#xff…

Python 操作 Excel

之前看过一篇文章&#xff0c;说一个工作多年的老员工&#xff0c;处理数据时只会用复制粘贴到 Excel &#xff0c;天天加班工作还完不成&#xff0c;后来公司就招了一个会 Python 的新人&#xff0c;结果分分钟就处理完成。所以工作中大家经常会使用 Excel 去处理以及展示数据…

缓存案例-架构真题(二十二)

试题一 某大型电商平台建立一个B2B商店系统&#xff0c;并在全国建设了仓储中心。但是在运营过程中&#xff0c;发现很多跨仓储中心调货&#xff0c;延误运送。为此建立全国仓储系统&#xff0c;通过对订单的分析和挖掘&#xff0c;并通过大数据分析预测各类配置&#xff0c;降…