will-change属性

很长一段时间内我们都通过translateZ()或者translate3d() hack来骗取浏览器触发硬件加速,具体做法就是为元素添加没有变化的3D变形,比如元素在2维空间可以通过添加以下CSS来硬件加速

transform: translate3d(0, 0, 0);

所谓硬件加速就是创建了一个被传递到GPU处理的层的操作,然而强制使用hack方式创建layer并不是长久之计,创建layer的技术可以使页面加速,但是也有代价:它们占用RAM和GPU存储空间(考虑到移动设备的存储容量有限),所以必须呗小心使用,确保这么做真的对页面渲染有所帮助

为了避免创建layer的hacks,一个允许我们提前通知浏览器我们将对元素做何种变化的CSS属性被引入,这样浏览器可以优化处理元素渲染的方式,为元素提前准备昂贵的动画处理操作,这就是wiil-change属性

will-change属性的值

  1. auto 表示没有明确的意图; 无论是启发式和最优化,用户代理应该应用都和正常情况相同
  2. scroll-position 表示开发者期望去在接下来去改变或者有动画应用元素的滚动位置
  3. contents 表示开发者期望去在接下来去改变或者有动画应用元素的内容
  4. 用来排除关键字 will-change, none, all, auto, scroll-position, and contents, 从之外增加一些通用的关键字

    will-change: transform:
    will-change: opacity:
    will-change: top, left, bottom, right:

如果一个属性无最初的值,在这个元素上这个属性将创建一个堆栈的内容, 明确规定在will-change的属性必须在这个元素上创建一个堆栈的内容.

如果一个属性无最初的值, 这个属性将造成这个元素产生一个包含区块的固定定位的元素, 明确规定在 will-change的属性必须造成这个元素产生一个包含区块的固定定位的元素

时间: 2024-08-03 15:13:15

will-change属性的相关文章

Android Configuration change属性

问题:横竖屏切换时Activity的生命周期? 答案: 1.不设置Activity的android:configChanges时,切屏会重新调用各个生命周期,切横屏时会执行一次,切竖屏时会执行两次 2.设置Activity的android:configChanges=”orientation”时,切屏还是会重新调用各个生命周期,切横.竖屏时只会执行一次 3.设置Activity的android:configChanges=”orientation|keyboardHidden”时,切屏不会重新调

Android SystemProperties系统属性详解

Systemproperties类在android.os下,但这个类是隐藏的,上层程序开发无法直接使用,用Java的反射机制就可以了.Java代码中创建与修改android属性用Systemproperties.set(name, value),获取android属性用Systemproperties.get(name),Native代码中通过property_get(const char *key, char *value, const char *default_value)/propert

Android6.0 属性系统

属性在android中非常重要,我们基本的不多介绍了,主要说下其用法,原理等. 一.java层获取属性 在java层主要通过SystemProperties这个类来访问Android的系统属性,通过一系列的native函数. public class SystemProperties { ...... public static String get(String key) { if (key.length() > PROP_NAME_MAX) { throw new IllegalArgume

Android 系统属性SystemProperty分析

http://www.cnblogs.com/bastard/archive/2012/10/11/2720314.html Android System Property 一 System Property 代码中大量存在:SystemProperties.set()/SystemProperties.get():通过这两个接口可以对系统的属性进行读取/设置, 顾名思义系统属性,肯定对整个系统全局共享.通常程序的执行以进程为单位各自相互独立,如何实现全局共享呢? System Properti

Android系统属性简介

查看Android源码你会发现,代码中大量存在:SystemProperties.set()/SystemProperties.get():通过这两个接口可以对系统的属性进行读取/设置,顾名思义系统属性,肯定对整个系统全局共享. 属性系统是android的一个重要特性.它作为一个服务运行,管理系统配置和状态.所有这些配置和状态都是属性.每个属性是一个键值对(key/value pair),其类型都是字符串.这些属性可能是有些资源的使用状态,进程的执行状态,系统的特有属性--  可以通过命令adb

Linux操作系统

Linux的基本原则: 1. 由目的单一的小程序组成 2.一切皆文件 3.避免捕获用户接口 4.配置文件保存为文本格式 GPL:general public liscense   GNU:gun is not unix GUI:graphical user interface CLI接口:command line interface 命令提示符prompt,bash #:root $:普通用户 命令格式:ELF:executable and linkable format 命令   选项(短选项

iOS进阶面试题

1. 风格纠错题 修改完的代码: 修改方法有很多种,现给出一种做示例: // .h文件 // http://weibo.com/luohanchenyilong/ // https://github.com/ChenYilong // 修改完的代码,这是第一种修改方法,后面会给出第二种修改方法 typedef NS_ENUM(NSInteger, CYLSex) { CYLSexMan, CYLSexWoman }; @interface CYLUser : NSObject<NSCopying

05-linux文件属性-硬链接-时间戳

linux文件属性-硬链接-时间戳 作者:矮哥 归档:学习笔记 2017/01/19 目 录 第1章 链接... 1 1.1 硬链接... 1 1.1.1 硬链接简介... 1 1.1.2 硬链接删除原理... 1 1.1.3 硬链接小结... 1 1.2 软连接... 2 1.2.1 小结... 2 1.3 软硬链接一些知识... 2 1.4 有关目录的小结... 2 1.5 链接示意图... 3 1.6 文件删除原理图... 4 1.6.1 报错:no space left on devic

Android Default Settings

1      Introduce 在android 系统中,为统一管理系统的属性,设计了一个统一的属性系统.每个属性都有一个名称和值,他们都是字符串格式.属性被大量使用在Android系统中,用来记录系统设置或进程之间的信息交换.属性是在整个系统中全局可见的.每个进程可以get/set属性.在编译的过程中会将各种系统参数汇总到build.proc 以及default.proc 这两个文件中,主要属性集中在build.proc中.系统在开机后将读取配置信息并构建共享缓冲区,加快查询速度.另外一个方

iOS开发——面试篇&amp;面试总结(二)

面试总结(二) 1. 风格纠错题 修改方法有很多种,现给出一种做示例: 下面对具体修改的地方,分两部分做下介绍:硬伤部分和优化部分 .因为硬伤部分没什么技术含量,为了节省大家时间,放在后面讲,大神请直接看优化部分. 优化部分 1)enum建议使用 NS_ENUM 和 NS_OPTIONS 宏来定义枚举类型,参见官方的 Adopting Modern Objective-C 一文: 1 2 3 4 5 //定义一个枚举 typedef NS_ENUM(NSInteger, CYLSex) {