CSS – z-index
介绍
z-index 是用来设置 element 层次高低的 (当 element 重叠的时候)
参考:
4 reasons your z-index isn’t working (and how to fix it)
Z-index CSS Tutorial ( Position and Stacking Order )
Element 重叠时默认表现
先了解一下没有 z-index 时, CSS 默认的规则
假设有 2 个 div
<body>
<div class="div1">div1</div>
<div class="div2">div2</div>
</body>
div2 有 margin-top: -20px, 所以它们重叠了
.div1 {
width: 100px;
height: 100px;
background-color: red;
}
.div2 {
width: 100px;
height: 100px;
background-color: yellow; margin-top: -20px;
}
效果
div2 覆盖到了 div1 上面, 它是依据 HTML element 结构顺序, 越下方就越上层 (后来居上的原则). 注意这种情况下是无法使用 z-index 的, z-index 只能用在漂浮元素.
漂浮元素
同一个例子, 如果让 div1 浮起来, position: relative
.div1 {
width: 100px;
height: 100px;
background-color: red;
position: relative;
}
那么它就跑到上面了.
这是 CSS 默认的第 2 规则. 漂浮着比较高. 不只是 position: relation 会漂浮哦.
transform: translateZ(0); 也可以让它漂起来, 这是 Safari 常见的优化写法 (很多人 set 了之后就发现层次不对了, 就是这个原因).
z-index
z-index 只适用于 positioned element (或者说漂浮元素)
z-index 越大就越上层. default value 是 auto.
0 是一般 level, 1 或以上就表示想在上层, -1 通常是用来表示要比一般的 0 (没有设置的元素) 低层.
上面的例子, 当 div1,2 都是 relative 后, 如果想让 div1 在上层, 可以 set z-index: 1, 或者把 div2 set 成 z-index: -1.
.div1 {
width: 100px;
height: 100px;
background-color: red;
position: relative;
z-index: 1;
}
.div2 {
width: 100px;
height: 100px;
background-color: yellow; margin-top: -20px;
position: relative;
/* z-index: -1; */
}
小总结:
普通元素重贴, 看 HTML 顺序, 越下面越高层(被看见).
z-index 只对漂浮元素有效.
漂浮元素默认比普通元素高层(被看见)
漂浮元素 z-index: -1, 会低于普通元素.
漂浮对漂浮, 看 z-index 越大就高层(被看见), 平手的话再看 HTML 顺序.
Parent Limit Child z-index
child z-index 是会被 parent z-index 限制的.
比如 parent z-index: 0. child z-index: 100, 这个 100 只在 parent 内管用, 到了外面其余 element 1 也比它高 (因为 parant 是 0)
注: parent 如果完全没有 set z-index 那么就没有 limit.
这里给一个很常见的例子:
有个 section, 有大背景图, 上面有一个 call to action button
然后想加一层黑影到图片上去. 但是 call to action button 要保持可以被点击.
HTML 结构
<body>
<div class="container">
<button class="button">call to action</button>
<div class="overlay"></div>
</div>
</body>
CSS
.container {
width: 300px;
height: 300px;
background-image: url(img/hero-bg.png);
position: relative;
} .button {
padding: 10px;
} .overlay {
background-color: black;
opacity: 0.7;
width: 100%;
height: 100%;
position: absolute;
top: 0;
left: 0;
}
overlay 是 absolute 定位, 对准其 parent relative. 这样就把整个 parent 覆盖完了. 也包括了 parent 里面的 button
button 和 overlay 是 sibling. overlay 漂浮, 所以在 button 上层. button 就被挡住了.
要让 button 上来, 要嘛让它漂浮配上 z-index, 要不然就是让 overlay 往下沉.
overlay z-index: -1 就可以让它低于 button 了.
添加 -1 后很惊讶的发现, overlay 不见了. 原因是 -1 会让它比 parent 还低. 所以它跑到 parent background-image 的后面了.
上面有提到, parent 可以 limit z-index, 由于目前 parent 没有 set 任何 z-index, 所以 overlay -1 是可以越过 parent 的.
在 parent 设置 z-index: 0, 其实 set 什么都可以只要不是 auto (auto = 没有 set).
set 100 或 -100 效果都是一样的, 因为关键是它阻止了 child 出去, 没有出去也就不可能会比 parent 低了. 所以建议设置 0
冷知识 – Transform, Opacity 也会让元素飘起来
CSS – z-index的更多相关文章
- img和css背景的选择
在什么情况下更适合使用HTML IMG标签来显示一个图像,而不是一个CSS有背景图像,反之亦然? 如下场景使用img标签比较合适: 1.如果图像是等内容的一部分或图表或人(真正的人,而不是股票图人), ...
- 深入理解CSS中的层叠上下文和层叠顺序(转)
by zhangxinxu from http://www.zhangxinxu.com 本文地址:http://www.zhangxinxu.com/wordpress/?p=5115 零.世间的道 ...
- 深入理解CSS中的层叠上下文和层叠顺序
零.世间的道理都是想通的 在这个世界上,凡事都有个先后顺序,凡物都有个论资排辈.比方说食堂排队打饭,对吧,讲求先到先得,总不可能一拥而上.再比如说话语权,老婆的话永远是对的,领导的话永远是对的. 在C ...
- CSS水平居中和垂直居中解决方案
一.CSS 居中 — 水平居中 DIV等标签本身没有定义自己居中的属性,网上很多的方法都是介绍用上级的text-align: center,然后嵌套一层DIV来解决问题. 可是这个方法有时候完全不起作 ...
- CSS定位(postion)和移动(float)
5.定位和移动:Positioning(定位)CSS定位属性允许你为一个元素定位.它也可以将一个元素放在另一个元素后面,并指定一个元素的内容太大时,应该发生什么. 元素可以使用的顶部,底部,左侧和右侧 ...
- CSS Positioning(定位)
Positioning(定位) CSS定位属性允许你为一个元素定位.它也可以将一个元素放在另一个元素后面,并指定一个元素的内容太大时,应该发生什么. 元素可以使用的顶部,底部,左侧和右侧属性定位.然而 ...
- [转]深入理解CSS中的层叠上下文和层叠顺序
http://www.zhangxinxu.com/wordpress/2016/01/understand-css-stacking-context-order-z-index/ 零.世间的道理都是 ...
- 潭州课堂25班:Ph201805201 WEB 之 CSS 第三课 (课堂笔记)
在 CSS 中第个标签都可以认为是个盒子,盒子就有以下几层 边框 border border-top: 5px solid black; /*上边框 实线*/ border-right: 3px do ...
- CSS 基础 例子 定位及z-index
position 属性指定了元素的定位类型. position 属性的四个值: static 不设置默认为该值,即没有定位,元素出现在正常的流中.不能使用top,bottom,left,righ ...
- CSS中的层叠上下文和层叠顺序
一.什么是层叠上下文和层叠水平 层叠上下文和层叠水平有一点儿抽象.我们可以吧层叠上下问想象成一张桌子,如果有另一个桌子在他旁边,则代表了另一个层叠上下文. Stacking context 1由文件根 ...
随机推荐
- 数学工具 | 如何将图片公式快速输入到Word中?
背景: 在日常科研.学习与工作中,我们可能需要使用到某些书籍.期刊或者规范上的公式,但是如果自己纯手打则会相当麻烦(数学系LaTeX高手请忽略),因此如果有工具能够解决这个问题,那真的是解决了一大痛点 ...
- 用这开源小书学 Docker,香!
> 最新.全面.通俗.可多端阅读的 Docker 教程小书.>> 编程导航开源仓库:https://github.com/liyupi/code-navDocker 可以说是一个改变 ...
- oeasy教您玩转vim - 33 - # 查找文本
文字区块 回忆上节课内容 括号间跳转 成对括号间跳转 % 不成对括号间跳转 [( 跳转到上一个没配对的 ( [) 跳转到下一个没配对的 ) [{ 跳转到上一个没配对的 { [} 跳转到下一个没配对 ...
- java面试一日一题:java内存区域
问题:请讲下java内存区域? 分析:该问题比较容易和jvm内存模型相混淆,内存模型说的是java的内存规范,规定的是多线程下访问主内存的规则:而内存区域,说的是java运行时的内存划分,换句话说就是 ...
- Gartner web3 的未来市场前景
内行人叫web3 外行人叫元宇宙 元宇宙(Metaverse) Gartner将元宇宙定义为一个由通过虚拟技术增强的物理和数字现实融合而成的集体虚拟共享空间.这个空间具有持久性,能够提供增强沉浸式体验 ...
- 4、SpringBoot2之整合SpringMVC
创建名为springboot_springmvc的新module,过程参考3.1节 4.1.重要的配置参数 在 spring boot 中,提供了许多和 web 相关的配置参数(详见官方文档),其中有 ...
- 【ElasticSearch】01 CRUD操作
1.资料: ES官网最新版本下载地址: https://www.elastic.co/cn/downloads/elasticsearch 历史版本下载: https://www.elastic.co ...
- 【Windows】解决微软商店打不开的问题
参考贴吧的帖子: https://tieba.baidu.com/p/6028738660#123983609458l 1.打开"运行"输入 inetcpl.cpl (" ...
- 【Scala】05 对象特性Part2
特质重复继承关系 父类特质 A 子类特质B 继承 A 子类特质C 继承A 类D 继承了 B 又实现了 C class D extends B with C 继承顺序是 D 继承 C 继承 B 继承 A ...
- 国产的AI基础设施与国外的差距?仅以grpc与prpc做比较
搞AI,基础设施包括软件.硬件以及相关生态,多方面,这里只片面的取一个例子来说明国内外在AI基础设施上的区别,注意,这里只是片面截取. 高性能的rpc框架是搞AI的一个基础依赖软件,当然,国外也有与之 ...