元素层叠级别及z-index剖析
作者:rong179 来源:蓝色理想 发布时间:2008-07-22 12:03:00
声明
定位元素:
position属性值设置除默认值static以外的元素,包括relative,absolute,fixed。
平台:win/IE win/FF
z-index
用来确定定位元素在垂直于显示屏方向(以下称为Z轴)上的层叠顺序
值:auto | 整数 | inherit
默认:auto
适用于:定位元素
继承性:no
理解stacking context
每个box都归属于一个stacking context,它是元素在z轴方向上定位的参考。根元素形成 root stacking context,其他stacking context由定位元素设置z-index为非auto时产生。如#div1{position:relative;z-index:0;}即可使 id=div1的元素产生stacking context。stacking context和 containing block 并没有必然联系。
理解stack level
在一个stacking context中的每个box,都有一个stack level(即层叠级别,以下统一用stack level),它决定着在同一stacking context中每个box在z轴上的显示顺序。同一stacking context中,stack level值大的显示在上,stack level值小的显示在下,同一stack level的遵循后来居上的原则(back-to-front )。不同stacking context中,元素显示顺序以父级的stacking context的stack level来决定显示的先后情况。于自身stack level无关。注意stack level和z-index并不是统一概念。(将在后文慢慢理解)
stack level规则
每个stacking context中可包含块级(block)元素、内联(行内inline)元素,还有设置float属性的元素、定位元素等等他们在同一父级 stacking context中的显示顺序是怎样的?即stack level是怎样的呢?比如一个块级元素和内联元素发生层叠的话谁会在上面呢?是不是谁在后面谁就在上面呢?
根据w3c关于 stack level 的介绍可以得出以下stack level规则
每个stacking context都包括以下stack level (后来居上):
父级stacking context的背景、边界
z-index值为负值的定位元素(值越小越在下)
文本流中非定位的、block块级子元素
文本流中非定位的、float浮动子元素
仿佛能产生stacking context的inline元素
否则,inline元素的stack level将在block元素之前。z-index:auto/0的定位元素
z-index值为正的定位元素(值越大越在上)
以上stack level在浏览器执行情况:
firefox3.0下测试完全吻合,firefox2.0下稍有不同即:“z-index值为负值的定位元素”在“父级stacking context的背景、边界”之前。
ie6.0和7.0中:inline元素的stack level位于block元素之前,且“文本流中非定位的、float浮动子元素”(以下简称浮动元素)和“文本流中非定位的、block块级子元素”(以下简称block元素)处于同一级。
猜你喜欢
- 本文介绍TSV文件类型及其应用,同时介绍Golang语句读取TSV文件并转为struct的实现过程。认识TSV文件也许你之前不了解TSV文件
- 文章出处:https://blog.csdn.net/sdksdk0/article/details/80933444作者:朱培
- 使用方法:terminal中输入python weather.py http://www.weather.com.cn/weather/10
- 设法让用户happy吧~只要你的设计让用户乐了,产品的个性就得到了一次彰显,而用户对网站的情感就会获得一次升华,看看下面的知名网站的人性化设
- 我们经常会用到表格数据,在做表格的时候,一般都喜欢隔行变色,使表格表现数据的时候非常的清晰。如图,我设计的一个表格表现的样式:在网上找到一个
- 一、乱码的原因:1、 client客户端的编码不是utf82、server端的编码不是utf83、database数据库的编码不是utf84
- 关于django celery的使用网上有很多文章,本文就不多做更多的说明。本文使用版本python==3.8.15Django==3.2.
- 很多时候我们在使用ThinkPHP配置网站前台和网站后台的数据库连接时,往往都是分别在前台的配置文件和后台的配置文件单独都写了配置的。但是有
- 这篇文章主要介绍了python scatter函数用法实例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,
- vue组件通信的方式,这是在面试中一个非常高频的问题,我刚开始找实习便经常遇到这个问题,当时只知道回到props和 $emit,后来随着学习
- 条件语句主要有三种形式:分别为if语句、if...else语句和if...elif...else 语句1.if语句条件语句中常用的比较运算符
- 在oracle数据库迁移至mysql数据库,除了oracle数据库模型移到mysql外,还一个重要环节就是要将oracle数据库的数据移到m
- Visio 是一款专门绘制流程示意图的办公软件。该软件能够把复杂信息、系统和流程进行可视化图表处理,从而利于用户进行分析交流和业务决策。鉴于
- #!/usr/bin/env python#coding=utf-8import osfrom pyinotify import Watch
- 复杂度可能高了点- - 也没太注意我想了好久 也找了好久 没看到什么能够用python解决n皇后问题而且不调用递归的 因为我不太能理解递归(
- 程序很简单,主要是 mp3play 模块的应用import mp3play, timefilename = "Should It
- 有个excle表格需要做一些过滤然后写入数据库中,但是日期类型的cell取出来是个数字,于是查询了下解决的办法。基本的代码结构data =
- while语句打印1-20的整数,并且每行打印五个数,为了实现每行5个数,我们使用一个if判断语句来实现,判断当打印出5个数之后,自动换行打
- 项目说明 该电商项目类似于京东商城,主要模块有验证、用户、第三方登录、首页广告、商品、购物车、订单、支付以及后台管理系统。项目开发模式采用前
- 万众瞩目的 Firefox 3 从昨天开始可以下载了,用“铺天盖地”四个字来形容她的宣传一点都不为过。大多数的广告还是她的fans自发进行的