z-index原理深入解读

z-index与css定位属性

1.层叠上下文vs层叠水平

层叠上下文是指一个普通元素有了三维的概念,拥有了z轴的概念;html中哪些元素有层级上下文?层叠上下文中的每一个元素都有层叠水平,决定了同一个层叠上下文中z轴的顺序,z轴数值越大,离我们眼睛越近。遵循后来居上和谁大谁上。

2. 层叠顺序

普通元素也有层叠水平,看看著名的七阶层叠顺序
在这里插入图片描述

3.z-index:auto与层叠上下文

z-index在css3之前一直与position属性配套,如果将一个元素设置定位属性,那么相当于z-index:auto; z-index:auto在层叠顺序与z-index:0没有本质差别,但是在层叠上下文中时却有本质差别;

			.ccc{
			// 定位相当于z-index:auto
				position: absolute;
				width: 100px;				height: 30px;
				background-color: #1B6D85;
				/* z-index: -1; */
			}
			img{
				position: relative;
				margin-right:10px ;
				top: 0;
				left: 0;
				z-index: -1;
			}
		   <div class="ccc">
				<img src="JavaScript基础第01天/4-笔记/images/图片15.png" />
		   </div>

在这里插入图片描述
原因是img的层叠上下文元素变成了html,此时div是block元素,block元素层叠顺序大于img z-index:-1
在这里插入图片描述
原因是img的层叠上下文元素变成了div,img z-index:-1的层叠顺序大于background-color

注意:z-index受制于层叠上下文

创建层叠上下文的其余属性

  • display:flex 和z-index
		<div class="ccc">
			<div class="">
				

 

<img src="JavaScript基础第01天/4-笔记/images/图片15.png" />
			</div>
		</div>
		=======
		.ccc{
			/* display: flex; */
			background-color: #1B6D85;
		}
		.ccc div{
			z-index: 1;
			/* background-color: #1B6D85; */
		}
		img{
			position: relative;
			margin-right:10px ;
			top: 0;
			left: 0;
			z-index: -1;
		}

上面z-index:1 不会作用,因为无效,设置flex后z-index才会生效;

  • opacity 不等 1
  • transform 不等 none
  • mix-blend-mode混合模式screen
  • filter :blur(5px)
  • isolation:isolate 与混合模式
  • position:fixed
  • will-change:transform(了解)
  • -webkit-overflow-scrolling(移动端了解)

z-index与上述非定位属性的关系
前面四种是不依赖于z-index的层叠上下文
不依赖z-index的层叠上下文水平顺序相当于z-index:auto
在这里插入图片描述
依赖z-index创建层叠上下文的两种常见方法:一种是position属性,另外一种display flex

z-index的实践

  • 最小化影响原则
    ie7浏览器定位属性也会创建层叠上下文,所以1. 尽量少使用定位元素;2.定位属性从大容器平级分为小容器(我的理解是在小盒子上添加定位)

  • 不犯二准则
    z-index数值尽量别超过2,避免浮层组件被z-index覆盖掉
    通过js获得body下最大的z-index

  • 负值index与可访问性隐藏

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值