码迷,mamicode.com
首页 > Web开发 > 详细

css层叠上下文

时间:2017-09-10 16:46:31      阅读:346      评论:0      收藏:0      [点我收藏+]

标签:size   res   移动   z-index   其他   文档   absolute   代码重构   custom   

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

css层叠上下文

标签:size   res   移动   z-index   其他   文档   absolute   代码重构   custom   

原文地址:http://www.cnblogs.com/alan-alan/p/7501299.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!