(一)含义

will-change,顾名思意“我要变形了,它的作用是“提高浏览器的页面渲染性能”。

当我们通过某些行为(点击、移动或滚动)触发页面进行大面积绘制的时候,浏览器往往是没有准备的,只能被动使用CPU去计算与重绘,由于没有事先准备,应付渲染够呛,于是掉帧,于是卡顿。而will-change则是真正的行为触发之前告诉浏览器:“浏览器同学,我待会儿就要变形了,你心理和生理上都准备准备”。于是乎,浏览器同学把GPU给拉上了,从容应对即将到来的变形。

CPU:中央处理器

GPU:图形处理器(专门处理图形的)

(二)用法

/* 关键字值 */
will-change: auto;
will-change: scroll-position;
will-change: contents;
will-change: transform;        /* <custom-ident>示例 */
will-change: opacity;          /* <custom-ident>示例 */
will-change: left, top;        /* 两个<animateable-feature>示例 *//* 全局值 */
will-change: inherit;
will-change: initial;
will-change: unset;

auto
默认值

scroll-position
告诉浏览器,我要开始翻滚了。

contents
告诉浏览器,内容要动画或变化了。

custom-ident 就是哪个属性要变化了,写上

(三)代码

// 不要这样写 因为will-change会一直挂着
.will-change {will-change: transform;transition: transform 0.3s;
}
.will-change:hover {transform: scale(1.5);
}

可以让父元素hover的时候,声明will-change,这样,移出的时候就会自动remove,触发的范围基本上是有效元素范围。

.will-change-parent:hover .will-change {will-change: transform;
}
.will-change {transition: transform 0.3s;
}
.will-change:hover {transform: scale(1.5);
}

如果使用JS添加will-change, 事件或动画完毕,一定要及时remove. 比方说点击某个按钮,其他某个元素进行动画。点击按钮(click),要先按下(mousedown)再抬起才出发。因此,可以mousedown时候打声招呼, 动画结束自带回调,

dom.onmousedown = function() {target.style.willChange = 'transform';
};
dom.onclick = function() {// target动画哔哩哔哩...
};
target.onanimationend = function() {// 动画结束回调,移除will-changethis.style.willChange = 'auto';
};

css3 性能优化之 will-change 属性相关推荐

  1. CSS3与页面布局学习总结(八)——浏览器兼容与前端性能优化

    一.浏览器兼容 1.1.概要 世界上没有任何一个浏览器是一样的,同样的代码在不一样的浏览器上运行就存在兼容性问题.不同浏览器其内核亦不尽相同,相同内核的版本不同,相同版本的内核浏览器品牌不一样,各种运 ...

  2. CSS3与页面布局学习笔记(八)——浏览器兼容性问题与前端性能优化方案

    一.浏览器兼容 1.1.概要 世界上没有任何一个浏览器是一样的,同样的代码在不一样的浏览器上运行就存在兼容性问题.不同浏览器其内核亦不尽相同,相同内核的版本不同,相同版本的内核浏览器品牌不一样,各种运 ...

  3. css+动画优化,css3动画性能优化--针对移动端卡顿问题

    一.使用css,jquery,canvas制作动画 1.Canvas 优点:性能好,强大,支持多数浏览器(除了IE6.IE7.IE8),画出来的图形可以直接保存为 .png 或者 .jpg的图形: 缺 ...

  4. mysql属性配置提高查询_MYSQL性能优化-安装时优化参数配置提高服务性能

    MYSQL性能优化一直是个头痛的问题,目前大多都是直接把页面html静态页面或直接使用了缓存技术,下面我就mysql本身的性能优化来分享一下. 安装时优化参数配置提高服务性能 在Linux下安装Mys ...

  5. 巧用css的border属性完成对图片编辑功能的性能优化

    一.需求场景: 最近闲来无事,boss提出了一个要求,研究相关代码并完成一个关于编辑图片功能的性能优化,该功能的主要界面展示如下: 通过了几分钟的短暂试用,发现就是一个简单的裁剪并保存用户选择并上传的 ...

  6. CSS3 动画卡顿性能优化解决方案--摘抄

    最近在开发小程序,与vue类似,它们都有生命周期这回事. onLoad 监听页面加载 onReady 监听页面初次渲染完成 onShow 监听页面显示 到底是什么意思? 所以这又触碰到了我的知识盲区, ...

  7. 炫技,从12.67s到1.06s的网站性能优化实战

    (给视学算法加星标,提升全栈技能) 作者:jerryOnlyZRJ https://juejin.im/post/5b6fa8c86fb9a0099910ac91 0.引言 作为互联网项目,最重要的便 ...

  8. 移动H5前端性能优化指南[转]

    移动H5前端性能优化指南 米随随2015.01.23 移动H5前端性能优化指南 概述 1. PC优化手段在Mobile侧同样适用 2. 在Mobile侧我们提出三秒种渲染完成首屏指标 3. 基于第二点 ...

  9. 移动端HTML5性能优化

    [导读] 得益于智能手机的普及和各行各业互联网+的运动,移动端的市场占比疯狂增长. 2016年1月发布的2015年电商数据显示,2015年中国移动端网购交易额同比暴涨123 2%,在网购总交易额中的占 ...

最新文章

  1. 面向对象设计:共性VS个性-------继承的粒度和聚合的粒度以及类的重构
  2. 阿里云centos服务器rdp远程桌面规则_阿里云服务器使用教程 新手用户的好帮手...
  3. grep -A :显示匹配行和之后的几行
  4. 揭示地理数据分布规律的方法
  5. Less 混合(mixin)
  6. SQL截断增强功能:SQL Server 2019中的静默数据截断
  7. php数据库框架 edusoho,CentOS 6.x + Apache+ PHP + MySQL + EduSoho[文档]
  8. Git(11)-- Git 别名(alias)
  9. jQuery中return false e preventDefault e stopPropagation 的区
  10. JAVA中this三种方法详解
  11. 马蜂窝张矗:我对技术团队绩效考核管理的几点思考
  12. 如何清空c盘只剩系统_怎么把C盘东西都删除只留系统东西
  13. 如何使用u深度启动u盘清除系统登录密码
  14. python caffe框架_Caffe(卷积神经网络框架)配置-Windows篇
  15. 【pandas】 之 Series、DataFrame 的拼接 —— pd.concat、df.append(df)
  16. 算法三十四:最近点对
  17. 「雷军万字总结」小米十周年公开演讲全文
  18. 疯子、精神病患者、诗人、哲学家、伟大的思想家—— 尼采的孤独:《最孤独者》...
  19. mybatis 查询忽略字段
  20. QQ浏览器劫持video标签加载自己的广告(怎么解决?)

热门文章

  1. Gunicorn、Supervisor
  2. 微型计算机AL和AH区别,微型计算机的技术与应用.ppt
  3. 约8937亿元:台积电创下台湾企业市值最高纪录
  4. 反积分饱和 程序_三面大疆惨败,因为不懂PID的积分抗饱和
  5. 引入静态路由_网络工程师提高篇 | 路由重发布你了解多少?从原理到配置,瑞哥带你学习一波!...
  6. [收藏|转贴]货币金额大写转换库(C#)
  7. 当SWOOLE遇上PROTOCOL
  8. 光猫修改配置同步到服务器,光猫—防火墙—3台服务器防火墙需要怎么配置,防火墙做二层?...
  9. WebGL入门(六)-通过坐标计算实现图形的平移、旋转和缩放变换
  10. wps打开word是绿色的怎么解决?