定位布局中关于z-index的一些问题

使不同父元素的子元素不会被其他父元素遮盖

  • 背景 两父元素相互遮盖(或部分遮盖)
  • html如下
	<div class="main">
<div class="a">
<div class="a1">1</div>
<div class="a2">2</div>
</div>
<div class="b">
<div class="b1">3</div>
<div class="b2">4</div>
</div>
</div>
.main{
width: 400px;
height: 200px;
margin: 20px auto;
background: #f0f;
position: relative;
}
.main div>div{
width: 40px;
height: 40px;
background: #ccc;
line-height: 30px;
text-align: center;
position: absolute;
}
.a,.b{
width: 100%;
height: 100%;
}
.a{
background: #ff0;
position: absolute;
}
.b{
background: #0ff;
position: absolute;
padding-left: 40px;
}
.a2,.b2{
margin-top: 40px;
}

  • 正常情况下,对main相对定位,a和b绝对定位并且长宽设置为100% ,a1,a2,b1,b2全部都设置定位(根据情况使用相对定位或绝对定位)
  • 为了使四个不会被盖住,对b设置左边距,a2,b2设置上边距
  • 然后就会有一个问题,b盖住了a,

这是因为默认布局中下一个元素始终会覆盖上一个元素,除非设置了特殊属性(position transform)

  • 这种情况可以通过对a和b不设置z-index 或设置为initial 不设置时这两个会在同一层级
  • 然后对子元素(a1-b2)设置z-index (大于1的数值都可以)就可以盖住父元素
  • 注意,只要设置了,哪怕设置z-index为同一数值也不行(后者会覆盖前者)
.main div>div{
z-index: 10;
}

还有一种方法可以很好的解决这个问题

  • 把a和b的长宽都设置为0 然后a1,a2,b1,b2的位置都通过定位控制
.a,.b{
width: 0;
height: 0;
}

还有另一种思路是用在特殊情况的,比如当a和b会涉及到transform 等令z-index失效的属性时,而且b必须有一定的长度

  • 将b定位到main 的外边,然后将b的子元素定位回原本的位置
.b{
position: absolute;
left: 100%;
}
.b div{
left: -360px;
}

  • 如果不需要显示b则对main添加overflow:hidden;即可
.main{
overflow: hidden;
}



如果有什么不足之处,请指正,谢谢

定位布局中关于z-index的一些问题的更多相关文章

  1. Flutter Stack布局中定位的方式

    前言 想要记录一下Stack布局中,定位的两种方式 代码 //……省略无关代码…… child: new Column( children: <Widget>[ new SizedBox( ...

  2. Web开发中常用的定位布局position

    定位布局就是为开发提供了更好的布局方式,可以根据需求给相应的模块设定相应位置,从而使界面更佳丰富,代码更佳完美. position是CSS中非常重要的一个属性,通过position属性,我们可以让元素 ...

  3. 网页万能排版布局插件,web视图定位布局创意技术演示页

    html万能排版布局插件,是不是感觉很强大,原理其实很简单,不过功能很强大哈哈,大量节省排版布局时间啊! test.html <!doctype html> <html> &l ...

  4. 在网页布局中合理使用inline formating context(IFC)

    引子:给大家出一个小小的考题,如何使用css来实现类似下面的在指定区域内,内容自适应的垂直居中.

  5. DIV CSS布局中position属性用法深入探究

    本文向大家描述一下DIV CSS布局中的position属性的用法,position属性主要有四种属性值,任何元素的默认position的属性值均是static,静态.这节课主要讲讲relative( ...

  6. 认识和理解css布局中的BFC

    认识和理解css布局中的BFC BFC的定义 是 W3C CSS 2.1 规范中的一个概念,它决定了元素如何对其内容进行定位,以及与其他元素的关系和相互作用. Block Formatting Con ...

  7. 响应式布局中的CSS相对量

    一个响应式布局,要能够根据设备屏幕尺寸的改变,动态的调整页面内容,展现不同的设计风格. 在进行响应式的 CSS 代码编写过程中,经常会用到一些相对尺寸,以达到相对定位的目的.例如,常见的响应式布局中需 ...

  8. CSS之定位布局(position,定位布局技巧)

    css之定位 1.什么是定位:css中的position属性,position有四个值:absolute/relative/fixed/static(绝对/相对/固定/静态(默认))通过定位属性可以设 ...

  9. day49 定位布局和过渡动画

    复习 1.盒子在父级水平居中 margin: 0 auto; 2.文本样式操作 color: red; text-align: center; font: 900 30px/200px "S ...

随机推荐

  1. 十年磨一剑,王坚自研的MaxCompute如何解决世界级算力难题

    摘要: 2009年这项关于大数据的技术长征开始.王坚带队,目标是自研大数据计算平台MaxCompute统一阿里巴巴内部的数据和大数据计算体系. 大数据时代,随着企业数据规模的急剧增长,传统软件已无法承 ...

  2. 3DSMAX安装失败怎样卸载重新安装3DSMAX,解决3DSMAX安装失败的方法总结

    技术帖:3DSMAX没有按照正确方式卸载,导致3DSMAX安装失败.楼主也查过网上关于如何解决3DSMAX安装失败的一些文章,是说删除几个3DSMAX文件和3DSMAX软件注册表就可以解决3DSMAX ...

  3. oracle函数 INSTR(C1,C2[,I[,J]])

    [功能]在一个字符串中搜索指定的字符,返回发现指定的字符的位置; [说明]多字节符(汉字.全角符等),按1个字符计算 [参数] C1    被搜索的字符串 C2    希望搜索的字符串 I     搜 ...

  4. 2019-2-11-WPF-获取应用的所有窗口

    title author date CreateTime categories WPF 获取应用的所有窗口 lindexi 2019-02-11 08:55:31 +0800 2019-02-11 0 ...

  5. [转][ASP.NET Core 3框架揭秘] 跨平台开发体验: Windows [中篇]

    我们在<上篇>利用dotnet new命令创建了一个简单的控制台程序,接下来我们将它改造成一个ASP.NET Core应用.一个ASP.NET Core应用构建在ASP.NET Core框 ...

  6. java中的常量和变量

    变量的概念: 占据着内存中的某一个存储区域; 该区域有自己的名称(变量名)和类型(数据类型); 该区域的数据可以在同一类型范围内不断变化; 为什么要定义变量: 用来不断的存放同一类型的常量,并可以重复 ...

  7. Python--day61 PyCharm连接MySQL工具的使用

    第一步:连接mysql数据工具的位置 第二步:选定数据库 第三步:下载驱动 第四步:连接数据库配置 第五步:在pycharm中查看数据库中的表 第六步:添加数据 第七步:打开用sql语句操作数据库的界 ...

  8. 【Tensorflow】tf.nn.atrous_conv2d如何实现空洞卷积?膨胀卷积

    介绍关于空洞卷积的理论可以查看以下链接,这里我们不详细讲理论: 1.Long J, Shelhamer E, Darrell T, et al. Fully convolutional network ...

  9. 洛谷P2719 搞笑世界杯 题解 概率DP入门

    作者:zifeiy 标签:概率DP 题目链接:https://www.luogu.org/problem/P2719 我们设 f[n][m] 用于表示还剩下n张A类票m张B类票时最后两张票相同的概率, ...

  10. Vue 父组件往子组件传递方法

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...