css层叠上下文

css层叠

stacking order

#div{
        background:#ddd;
        border:1px solid red;
        /*z-index: -1;*/
        /*display:block*/
        /*float: right;*/
        /*display: inline-block;*/
        /*z-index: auto;*/
        /*z-index: 1;*/
        }
        
首先html文档流有一个基于z-index=auto的上下文环境
css属性基于装饰,布局,类容展示,z-index属性值具有一个纵深的层叠顺序(上下文展示)
诸如border/background一般为装饰属性,
而浮动和块状元素一般用作布局,
而内联元素都是内容
当元素发生层叠的时候,其覆盖关系关系

遵循下面2个准则
根层叠上下文指的是页面根元素,也就是滚动条的默认的始作俑者<html>元素。
 
 对于包含有position:relative/position:absolute的定位元素
 z-index值大小有一个顺序覆盖关系
 
z-index:0所在的<div>元素是层叠上下文元素,而z-index:auto所在的<div>元素是一个普通的元素
而z-index一旦变成数值,哪怕是0,都会创建一个层叠上下文。

css元素对css层叠上下文的影响

半透明元素(opacity)/transform(30deg)/ filter: blur(5px)/will-change: transform; // 创建新的渲染层 具有层叠上下文,
图片的z-index:-1无法穿透,于是,在蓝色背景上面乖乖显示了。

代码重构:

当我们通过某些行为(点击、移动或滚动)触发页面进行大面积绘制的时候,浏览器往往是没有准备的,只能被动使用CPU去计算与重绘,

由于没有事先准备,应付渲染够呛,于是掉帧,于是卡顿。

will-change: transform; // 创建新的渲染层 礼貌而友好

其中:
auto
就跟width:auto一样,实际上没什么卵用,昨天嘛,估计就是用来重置其他比较屌的值。
scroll-position
告诉浏览器,我要开始翻滚了。
contents
告诉浏览器,内容要动画或变化了。
<custom-ident>
顾名思意,自定义的识别。非规范称呼,应该是MDN自己的称呼,以后可能会明确写入规范。比方说animation的名称,计数器counter-reset, counter-increment定义的名称等等。

.front::before {
    content: ‘‘;
    position: fixed; // 代替background-attachment
    width: 100%;
    height: 100%;
    top: 0;
    left: 0;
    background-color: white;
    background: url(/img/front/mm.jpg) no-repeat center center;
    background-size: cover;
    will-change: transform; // 创建新的渲染层
    z-index: -1;
  }

移动端的GPU加速。很多自以为然的同学写CSS3动画的时候,或者静态属性的时候,
动不动就把translateZ之类GPU hack属性写上

后果与建议

  • GPU这玩意提高页面渲染性能它是有代价的呀,什么代价呢,就是手机的电量
  • 手机上的电量弥足珍贵

如果发现(尤其Android)机子h5页面不流畅,找找看是不是动画属性使用问题,或者非可视动画层没隐藏等等原因
遵循最小化影响原则,所以,一开始的例子,才使用伪元素去搞,独立渲染
使用JS添加will-change, 事件或动画完毕,一定要及时remove

时间: 2024-10-27 12:46:59

css层叠上下文的相关文章

CSS层叠上下文、层叠等级、层叠顺序、z-index

以往,由于自己使用z-index的频率不大,所以对这个CSS属性存在比较片面的认识.一直认为z-index就是用来描述定义一个元素在屏幕Z轴上的堆叠顺序.z-index值越大在Z轴 上就越靠上,也就是离屏幕观察者越近.最后才发现这个认识存在很大的问题: 首先,z-index属性值并不是在任何元素上都有效果.它仅在定位元素(定义了position属性,且属性值为非static值的元素)上有效果. 判断元素在Z轴上的堆叠顺序,不仅仅是直接比较两个元素的z-index值的大小,这个堆叠顺序实际由元素的

CSS - 层叠上下文(The stacking context)

对 MDN 的上的例子的拓展 Root - DIV #1(z-index: 5) - DIV #2(z-index: 2) - DIV #3(z-index: 4) - DIV #4(z-index: 6) - DIV #5(z-index: 1) - DIV #6(z-index: 3) - DIV #7(未设置 z-index, 且 opacity: 1) - DIV #8(z-index: 6) 上面结构中 DIV #4 的 z-index 比 DIV #1 的大,但因为 DIV #3 创

CSS基础:层叠顺序和层叠上下文

简介 在考虑到两个元素可能重叠的情况下,层叠顺序决定了那个元素在前面,那个元素在后面,这是针对普通元素而言.而层叠上下文和块级格式化上下文 (BFC) 一样,基本上也是由一些 CSS 属性创建的,它单独作为一个体系,也就是说内容的层叠顺序是以容器的层叠顺序为基准的,而与容器外部元素的层叠顺序无关,层叠上下文的创建可以分为以下三类: (1) 页面根元素天生具有层叠上下文,称为根层叠上下文 (2) "z-index" 为数值的定位元素拥有自己的层叠上下文,数值越大,层叠顺序越高 (3) 某

层叠顺序与层叠上下文

一.层叠顺序 所谓层叠顺序就是用户看到页面视角z轴上显示顺序 二.层叠上下文 层叠上下文 html中的三维概念,这些HTML元素在一条假想的相对于面向(电脑屏幕)视窗或网页用户z轴上的延申,html元素依据自身的属性按优先顺序占用层叠上下文的空间. 1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="UTF-8"> 5 <title>层叠顺序与层叠上下文</title

什么是层叠上下文?如何形层叠上下文?层叠顺序是怎样的?

在CSS2.1规范中,每个盒模型的位置是三维的,分别是平面画布上的x轴,y轴以及表示层叠的z轴.层叠上下文即元素在某个层级上z轴方向的排列关系. 那么这里有几个重要的概念:层叠上下文 (堆叠上下文, Stacking Context).层叠等级 (层叠水平, Stacking Level).层叠顺序 (层叠次序, 堆叠顺序, Stacking Order).z-index. 1. 层叠上下文 (Stacking Context) 文章<关于z-index 那些你不知道的事>有一个很好的比喻,这

css层叠顺序

css层叠规则及各个选择器的特殊性. 1.有!important的规则的权重要高于没有的,有!important的规则优先级最高. 2.按特殊性对规则进行排序,各个选择器的特殊性为: 内联样式(即在html中声明的css)的特殊性为:1000 ID选择器的特殊性为:100 类属性值(class).伪类(:not).属性选择器([id=""])的特殊性为:10 各个元素和伪元素(:first-letter,first-line,before,after) 特殊性为:1 通配选择器(*)的

css层叠规则(层叠样式表)

CSS层叠规则是: 1.找出所有相关的规则,这些规则都包含与一个给定元素匹配的选择器. 2.按权重(!important)和来源对应用到给定元素的所有声明进行排序. 3.按特殊性对应用到给定元素的所有声明进行排序,有较高特殊性的元素权重要大于有较低特殊性的元素,0特殊性比无特殊性要强(继承). 4.按出现顺序对应用到给定元素的所有声明进行排序,后面出现的声明权重要大于前面出现的声明,即后定义的样式会覆盖前面定义的样式.(适用于特殊性一样的时候) 解读: 一.权重和来源 来源: 1.创作人员(开发

CSS 层叠规则

CSS 规则特殊性计算 特殊性 选择器的特殊性由选择器本身的组件确定.特殊性值表述为4个部分:0,0,0,0. 对于选择器中给定的各个id属性值,加0,1,0,0. 对于选择中给定的各个类属性值,属性选择或伪类,加0,0,1,0. 对于选择器中给定的各个元素和伪元素,加0,0,0,1. 结合符合通配符选择器对特殊性没有任何贡献 比较规则 因为值是从左向右排序的,所有1,0,0,0大于以0开头的所有特殊值,而不论后面的数是什么.比如,0,0,1,0比值0,0,0,13更高. 通配符的特殊性为0,0

CSS 层叠 学习笔记

看了一天控制器和视图头都大了,于是去微博上逛了逛,看到了一个讨论CSS权重的博客,于是把书翻了翻,对CSS中的层叠做一个笔记. 先从一个实例说起: 小明写了一个列表,并给里面的列表项添加了一些样式: #list li{ color: #000; } <ul id="list"> <li>Javascript</li> <li>HTML</li> <li>CSS</li> </ul> 结构写好