CSS样式里面的堆叠(层叠)上下文(层次顺序z-index)

2023-10-27

看了网上很多的博客,将了关于这个层叠上下本的技术博客,
然后我也自己去整理了下,我这篇关css元素的堆叠顺序
写的很清楚,很有条理,很简单明了,层叠上下文的法则都总结好了,希望对大家有帮助
这个属于扩展,当然你想了解技术的话,可以看看我这个关于堆叠顺序的理解!
不了解的话,当然有更加简单方法是完成堆叠上下本的方法!

当然这是我自然的理解,有说的不对的地方,希望你们可以指出来!大家一起交流学习,一起进步

堆叠上下文

堆叠(层叠)(栈)上下文(stack context)
它是一个区域,这个区域由某个元素去创建,它规定了这个区域中的内容
在Z轴上排列的先后顺序。

创建堆叠上下文的元素

1. html元素(根元素)
2. 设置了z-index数值的定位元素(非auto)
3. 一定是定位元素,也就是需要你去设置这个position属性
4. 当然你也可以去mdn官方文档查看 层叠上下本 哪些元素可以去创建上下本

单个层叠上下本规则

## 同一个堆叠上下文中元素在Z轴上的排
从后到前的排列顺序,也就是出现靠底层
显示层次顺序
1. 创建堆叠上下文的元素的背景跟边框
2. 堆叠级别(z-index)为负值的堆叠上下文
3. 常规流非定位的块盒
4. 非定位的浮动盒子
5. 常规流非定位行盒
6. 任何 z-index 是 auto 的定位子元素
7. 堆叠级别为正值的堆叠上下文

---->>>每个堆叠上下文,独立于其他的堆叠上下文,它们之间不能相互穿插。
你可以理解就是 把每个元素创建的堆叠上下文 看成一个整体。

接下来看下单个层叠上下文的例子

在这里插入图片描述
你可以通过调整每个盒子的margin-top属性的值,依次完成或者去理清楚这个覆盖的情况

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>单个堆叠上下本</title>
    <style>

        /* 第1个级别   背景跟边框 */
        html{
            /* 本身html也会创建堆叠上下文 */
            background: lightblue;
        }

        /* 第6个级别  就是z-index 为默认值 auto 或者为0  
            很显然 这个效果是在最前面的 
        */
        .container{
            background: #008c8c;
            width: 200px;
            height: 200px;
            position: relative;
            /* 创建堆叠上下文 */
            /* z-index: -1; */
            /* 要是这个z-index是auto的话,这个div就不会创建堆叠上下文 */
            margin: 50px;
        }

        /* 第2个级别  就是z-index为负数 */
        .item{
            width: 100px;
            height: 100px;
            background: red;
            position: relative;
            z-index: -1;
            /* z-index: 设置的值为多少,都是无法在父元素的下面 */
            float: left;
            left: -30px;
            top: -30px;
        }
        /* 第3个级别   常规流非定位块盒 */
        .nomal{
            /* 通过浏览器F12去修改margin-top值 动态修改,可以看到效果*/
            width: 200px;
            height: 200px;
            background: chocolate;
            margin-top: -200px;
        }

        /* 第4个级别   非定位浮动盒子 */
        .float{
            width: 200px;
            height: 300px;
            background: brown;
            margin-top: -390px;
            /* 这个效果最佳 */
            float: left;
            margin-left: 40px;
        }
        /* 第5个级别   常规流非定位行盒 */
        /* 需要注意的就是我们可以看到这个 级别四已经 */
        span{
            background: lightyellow;
            
        }

        /* 第7个级别   很显然  把堆叠级别z-index设置为正值的堆叠上下文, 显然出现在最上面
        
            前提条件就是这个  这个元素会形成堆叠上下文, 不然你去设置堆叠上下文是没有效果的
        */

    </style>
</head>
<body>

    <!-- 第三个 + 第五个级别-->
    <!--因为p元素是常规流非定位块盒 第三个级别  然后 
    这些文字其实是写在span里面的  也是就 常规流非定位行盒
    最后效果也就是很明显,为什么 级别四的背景覆盖了级别三<p>元素的背景
    但是没有覆盖这个 文字的颜色 就是因为文字隐式默认装在<span>里面  (匿名行盒)
    
    以上的解释也就是很清楚解释网页呈现的效果了
    -->
    <p style="background: lightyellow;">
        Lorem ipsum dolor sit amet consectetur, adipisic
    </p>
    <!-- 第五个级别 -->
    <span style="background: lightyellow;">
        Lorem ipsum dolor sit amet consectetur, adipisicing elit. Delectus, illo?
    </span>
    <div class="container">
        <div class="item">

        </div>
    </div>

    <div class="nomal">
        <!-- 常规流盒子非定位 -->
    </div>

    <div class="float">
        <!-- 非定位浮动盒 -->
    </div>
</body>
</html>

多个层叠上下文

在这里插入图片描述

代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <style>
        html{
            background: lightblue;

        }
        .c1{
            position: relative;
            z-index: 0;
            background: #008c8c;
            width: 200px;
            height: 200px;

        }
        .c2{
            position: absolute;
            width: 200px;
            height: 200px;
            z-index: -1;
            background:chocolate;
            left: 100px;
            top: 100px;
        }
        .item1,.item2{
            position: absolute;
            height: 100px;
            width: 100px;
        }
        .item1{
            right: -50px;
            bottom: -50px;
        }
    </style>
</head>
<body>
    
        <!-- c1 c2 盒子都会形成堆叠上下本  它们都是在html根元素里面进行层叠 
        所以先把它们两看成两个整体,它们内部的子元素所形成的上下文 暂时不看
        c2的盒子z-index为负,比c1更靠前!根据
        -->

        <!-- 第二个问题
        
        凭什么c1的item1中的红色可以去覆盖这个c2的红色
        规则就是要看整体,你看第一个红色是在c1上下文里面
        第二个红色在c2形成的层叠上下文里面
        所以他们子元素都是以整体来说的,你可以认为他们不可分割
        这样子就能去解释为什么c1红色去覆盖c2红色了!
        -->

        <!-- 第三个问题
            假设我设置item2,让它也形成一个上下文,
            那么item1与item2它们之间的顺序如何
            其实它们两都在c1形成的层叠上下文里面,
            所以它们两根据单独的堆叠上下本就可以分辨
         -->
        <div class="c1">
            <div class="item1 " style="background: red;">红色</div>
            <div class="item2"></div>
        </div>
        
        <div class="c2">
            <div class="item1" style="background: rgb(204, 11, 11); ">红色</div>
            <div class="item2"></div>
        </div>
    
</body>
</html>

结语

以上的例子,希望大家对z-index属性有更加深入的理解,这个原理明白了,以后完成两张图片叠加
或者说是这样子叠加,层叠的效果,就信手捏来!
~~有问题的,或者哪里说得不对了,希望大家指出来~~ 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CSS样式里面的堆叠(层叠)上下文(层次顺序z-index) 的相关文章

  • git:文件存储方式

    引言 我们知道 git 跟踪文件会经历三个阶段 工作区 暂存区和本地仓库 参考git 理解工作区 暂存区和本地仓库 在这些阶段文件如何被储存 理解 git 文件的存储方式能帮助我们掌握 git 的工作原理 git 对象 在上述三个阶段 文件
  • 基于典型相关分析的故障检测和过程监控算法研究(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码实现 1 概述 文献来源 本文首先研究了一种基于广义典型相
  • 安装ik中文分词器

    前提是安装了es Elasticsearch安装 p f 的博客 CSDN博客 1 根据es版本下载对应的中文ik分词器zip资源 官方下载地址 Releases medcl elasticsearch analysis ik GitHub
  • 火狐自定义字体失败 downloadable font: no supported format found

    Bootstrap AdminLTE搭起来的服务 突然字体图标都访问不了了 报错如下 解决办法1 FontAwesome官网找解决办法 不引用本地的css 直接引用官网建议的地址 完美解决 图标都出来了 解决办法2 pom打包的代码中添加
  • Vxe Table/Grid 单元格分组合并

    要合并的列 htbm htmc hetd hetdws yjs 一般的合并 不带逻辑 直接就把各自列对应的相同名字的列合并了 如下所示 不是合同的数据 值一样 直接给合并了 加上逻辑区分后的合并 会依次判断前面的字段一致后才合并后面的字段
  • Centos7.3 Openstack-liberty安装部署记录

    一 环境 1 1 安全 本指南会告诉你如何使用 Red Hat Enterprise Linux 7和其衍生的EPEL仓库安装OpenStack 说明 目前统一采用Centos7 3版本进行Openstack liberty版本的安装 测试
  • 【分布式】Zookeeper数据与存储

    一 前言 前面分析了Zookeeper对请求的处理 本篇博文接着分析Zookeeper中如何对底层数据进行存储 数据存储被分为内存数据存储于磁盘数据存储 二 数据与存储 2 1 内存数据 Zookeeper的数据模型是树结构 在内存数据库中
  • Centos7搭建sftp服务,window上filezilla连接

    1 创建sftp数据目录 添加群组用户 mkdir p data sftp sftp的数据目录 chmod 755 R data sftp 给ftp用户进入目录 chown root root R data sftp 需要使用chroot
  • Python 列表在内存中的顺序存储

    列表在内存中的存储空间是连续的 因此在创建列表时 首先向操作系统申请一块固定大小的内存空间 来存储每个列表元素 例如 a 1 2 3 4 由于在 python 中 int 类型的数据占4个字节 因此这条语句会向操作系统申请 4 4 16 b
  • js对象数组根据某一属性查找对象

    js对象数组 name zhangsan age 20 name lisi age 30 如果想查找name是zhangsan的这个对象 传统方法可以根据for if条件遍历 也可以用map重新构造 或者组装新对象 1 组装新对象 list
  • Python实现ARMA模型

    1 导入相关包 查看数据情况 import numpy as np import pandas as pd import matplotlib pyplot as plt plt rcParams font sans serif SimHe
  • android开发浅谈之PackageManagerService(pkms)

    本文基于Android10 0 主要从以下几个方面着手 PKMS启动 PKMS安装APK PKMS卸载APK PKMS启动 这里我简单的将其分为以下几个步骤 1 SystemServer通过PKMS的main方法启动PKMS 2 PKMS构
  • pLSA/mixture unigram/gmm em算法公式汇总

    1 LSA 隐性语义分析 和SVD 奇异值分解 在VSM 文档空间向量模型中 在文章看做词袋的集合 将文档转换为同一空间向量进行计算 聚类 分类 文本检索是减少计算量 但是难以考虑文档位置以及文档的一词多义性 基于SVD分解 我们可以构造一
  • 在Mac下vs code配置Python开发环境

    背景 之前用的捷克公司JetBrains的系列软件之一Pycharm 也是非常的好用 但是要收费 对于我等穷屌丝来说 有点吃不消 开流节源 我找了一款免费的开发软件 而且是近年来崛起的 vscode 而且是一个开源项目 微软出品 什么是 V
  • Django调用Nameko微服务使用简介

    Nameko is a framework for building microservices in Python The example requires RabbitMQ because it s using the Nameko b
  • 软考中级软件设计师--7.设计模式

    设计模式 参考 https www yuque com saodai ss8tp9 B站视频 我这里只是个做个笔记 设计模式最好结合UML 类图并且结合实际代码学习 最好还是看上边视频中相关内容 创造型设计模式 概念 创造型设计模式抽象了实
  • Apache Doris : 一个开源 MPP 数据库的架构与实践

    分享提纲 Doris 背景介绍 适用场景 案例介绍 Doris 整体架构 Doris 关键技术 Doris 背景介绍 介绍 Doris 的整体架构 以及 Doris 的一些特性 一 Doris Doris 是分布式 面向交互式查询的分布式数
  • 怎么判断ios设备、移动设备、浏览器

    Navigator Navigator接口表示用户代理的状态和标识 允许脚本查询它和注册一些自己的服务 我们可以通过window navigator来访问Navigator对象 常用属性 Navigator appVersion 浏览器版本
  • git-创建release

    git tag a v0 1 1 m Release test git push origin v0 1 1

随机推荐

  • 前端开发微信支付宝支付流程

    微信支付的流程 我认为有几种方案 微信支付 async payOrder 1 创建订单 const orderInfo order price 0 1 consignee addr this addstr goods this cart f
  • 什么是缓冲区?(详细!!!!!干货!!!!!)

    缓冲区 缓冲区其实是不存在的 只不过是我们认为想象出来的 1 把数据写入文件之前 会先写入缓冲区 刷新时才会写入文件内 2 我们所说的缓冲区 实际 只有库函数中存在 3 文件流指针所应用的 文件描述符没有 知识点 1 使用printf向文件
  • 关于Gitlab恼人的Git无权限访问问题解决

    问题 不知什么时候起 从gitlab com上新开的项目中拿代码时 冒出ERROR The project you were looking for could not be found or you don t have permissi
  • docker-compose重新启动Mysql报错changing ownership of ‘/var/lib/mysql/mysql.sock‘: No such file or direct

    一 背景 最近在使用 docker compose 编排整合一个项目 springboot mysql 的时候 首次启动后重新再启动的时候 mysql 容器启动失败 通过 docker logs 命令查看 mysql 容器的启动日志如下 c
  • ajax穿formdata,ajax formdata格式问题

    慕容708150 貌似是因为没有name属性 修改如下 HTML 发布评论JavaScript function postComment var commentForm document getElementById comment for
  • apache转发tomcat http转https

    最近在弄小程序 而小程序网络请求所需要的链接需要https安全链接 之前胡乱配置一番可以用了 不过并不太理解 后来又需要一个php项目 各处查看了一下 需要apache服务器 而我的只有一个域名 已经给了tomcat了 如果在域名后面加端口
  • 2020-10-07

    渗透测试 U盘监控器 1 打开USB监控器 注册时输入任意注册码 出现注册失败页面 2 在Winhex打开USB监控器 exe 文本搜索 注册失败 之后推出字符串文件偏移地址为0x81A79 引用该字符串的指令在字符串地址的常量为0x048
  • Java09

    一 继承 在Java中 使用关键字extends来继承类 父类 public class Fu int num 100 public void methodfu System out println num 子类继承 关键字 public
  • dns服务器项目实例,DNS服务器配置实例-----主DNS服务器

    DNS服务器配置简单实例 主DNS服务器 DNS服务器类型 主DNS服务器 master 辅助DNS服务器 slave 高速缓存服务器 hint 安装bind三部曲 1 查询包是否已经安装 Nborn root 08 06 rpm q bi
  • esp32 Micropython驱动ST7735 1.8寸TFT屏幕 中文显示;时间显示、网络network实时时间获取utptime;urequests、upip等包安装

    参考 https blog csdn net weixin 57604547 article details 122274614 0 线连接 IO就是GPIO引脚 ESP32 TFT 屏ST7735 GND GND 3 3V VDD IO2
  • springboot集成shiro

    这里写自定义目录标题 Springboot集成shiro Shiro介绍 springboot集成shiro Springboot集成shiro Shiro介绍 Shiro是Apache 的一个开源项目 是一个java的安全框架具有认证 授
  • Open Euler学习

    Open Euler学习 目录 Open Euler学习 Open Euler安装截图 使用MobaXterm exe软件 连接自己的操作系统 作业问题 1 使用什么命令查看 ip 地址及接口信息 2 cp和mv命令有什么区别 用什么指令将
  • EM算法推导(收敛性证明和在GMM中的应用)

    一 EM算法的提出 当你有一组数据像如下这样 Note picture source 显然用单个高斯分布模型去拟合它们效果不好 这是一个典型的高斯混合模型的例子 p X
  • TypeError: strptime() takes no keyword arguments ValueError(“‘%s‘ is a bad directive in format ‘%s‘“

    t datetime datetime strptime 2021 5 12 09 28 11 format Y m d h m s 1 错误原因 参数格式不匹配 strptime定义 def strptime data string fo
  • leveldb(六):key的不同种类型

    有5个key的概念 可能会让人混淆 下面就来一个一个的分析 User key 最简单的key了 就是用户传入的数据 Slice user key ParsedInternalKey enum ValueType kTypeDeletion
  • sqlite3交叉编译

    1 交叉编译sqllite3可以先从官网下载最新最新的源码进行编译 sqlite3下载sqlite3有两种版本的源代码 sqlite amalgamation 3300100 zip这种是将所有的操作放到sqlite3中进行使用的 虽然官方
  • 特征筛选1——根据方差筛选(单变量筛选)

    根据给定方差的阈值 删除掉值变化小的维度 以此降低数据规模 当把阈值设置为0的时候 就会删除没有变化的数据 示例 import numpy as np from sklearn feature selection import Varian
  • 【模板】组合数取模

    文章目录 1 利用递推式预处理组合数取模 2 预处理阶乘的余数和阶乘逆元的余数 3 卢卡斯定理 4 将组合数分解质因数 高精度乘低精度 1 利用递推式预处理组合数取模 题目描述 给定 n n n 组询问 每组询问给定两个整数 a
  • C++类继承:派生类的构造函数

    派生类不能直接访问基类的私有成员 必须使用基类的公有方法来访问基类的私有成员 这意味着派生类的构造函数必须使用基类的构造函数来设置从基类中继承的私有成员 因此 在程序使用派生类构造函数创建派生类对象之前 要使用基类构造函数创建基类对象 C
  • CSS样式里面的堆叠(层叠)上下文(层次顺序z-index)

    看了网上很多的博客 将了关于这个层叠上下本的技术博客 然后我也自己去整理了下 我这篇关css元素的堆叠顺序 写的很清楚 很有条理 很简单明了 层叠上下文的法则都总结好了 希望对大家有帮助 这个属于扩展 当然你想了解技术的话 可以看看我这个关