深入理解脚本化CSS系列第三篇——脚本化CSS类
来源:互联网 发布:dota2 for mac 编辑:程序博客网 时间:2024/05/16 01:31
前面的话
在实际工作中,我们使用javascript操作CSS样式时,如果要改变大量样式,会使用脚本化CSS类的技术,本文将详细介绍脚本化CSS类
style
我们在改变元素的少部分样式时,一般会直接改变其行间样式
<div id="test" style="height:100px;width:100px;background-color:blue;"></div><script>test.onclick = function(){ test.style.backgroundColor = 'green';}</script>
cssText
改变元素的较多样式时,可以使用cssText
<div id="test" style="height:100px;width:100px;background-color:blue;"></div><script>test.onclick = function(){ test.style.cssText = 'height:50px;width:50px;background-color:green';}</script>
css类
更常用的是使用css类,将更改前和更改后的样式提前设置为类名。只要更改其类名即可
<style>.big{ height:100px; width:100px; background-color:blue;}.small{ height:50px; width:50px; background-color:green;} </style><div id="test" class="big"></div><script>test.onclick = function(){ test.className = 'small';}</script>
classList
如果要改变多个类名,使用classList更为方便
[注意]IE9-浏览器不支持
<style>.big{ height:100px; width:100px;}.small{ height:50px; width:50px;} .green{ background-color:green;}.blue{ background-color:blue;}</style><div id="test" class="big green"></div><button id="btn1">大小变化</button><button id="btn2">颜色变化</button><script>btn1.onclick = function(){ test.classList.toggle('small');}btn2.onclick = function(){ test.classList.toggle('blue');}</script>
性能
<div id="test" style="height:100px;width:100px;background-color:blue;"></div><script>test.onclick = function(){ console.time(); for(var i = 0; i < 10000; i++){ test.style.backgroundColor = 'green'; test.style.height = '50px'; test.style.width = '50px'; } console.timeEnd();//59.937ms}</script>/*****************************/<div id="test" style="height:100px;width:100px;background-color:blue;"></div><script>test.onclick = function(){ console.time(); for(var i = 0; i < 10000; i++){ test.style.cssText = 'height:50px;width:50px;background-color:green'; } console.timeEnd();//38.065ms}</script>/*****************************/<style>.big{ height:100px; width:100px; background-color:blue;}.small{ height:50px; width:50px; background-color:green;} </style><div id="test" class="big"></div><script>test.onclick = function(){ console.time(); for(var i = 0; i < 10000; i++){ test.className = 'small'; } console.timeEnd();//9.534ms}</script>
在1万次循环中,改变style属性中的具体样式花费了59.937ms,改变style属性中的cssText花费了38.065ms,而改变css类名只花费了9.534ms
由此可见,使用脚本化CSS类的方式可以大大地提高性能
最后
脚本化CSS的场景非常常见,一直提倡使用脚本化CSS类的方式来操作CSS,以为只是为了方便。感觉脚本化CSS类应该和使用cssText的性能差不多,但没想到最终结果竟然不是同一个数量级的,改变CSS类名的性能竟然提升这么多
少一点感性认识,多一些理性测试
欢迎交流
阅读全文
0 0
- 深入理解脚本化CSS系列第三篇——脚本化CSS类
- 深入理解脚本化CSS系列第一篇——脚本化行内样式
- 深入理解脚本化CSS系列第二篇——查询计算样式
- 脚本化 css
- 脚本化CSS
- 【JS】【客户端】脚本化CSS
- 犀牛——第16章 脚本化CSS
- 【笔记】 《js权威指南》- 第16章 脚本化CSS 16.5 脚本化CSS类 - 16.6 脚本化样式表
- 客户端Javascript学习笔记-----脚本化CSS
- 【js学习笔记-089】-----脚本化CSS
- 深入理解ajax系列第三篇——响应解码
- 深入理解ajax系列第三篇——响应解码
- 深入理解ajax系列第三篇——响应解码
- 深入理解ajax系列第三篇——响应解码
- 深入理解ajax系列第三篇——响应解码
- 深入理解ajax系列第三篇——响应解码
- 深入理解ajax系列第三篇——响应解码
- JavaScript权威指南_155_第16章_脚本化CSS_16.5-脚本化CSS类
- Express入门教程:一个简单的博客
- 【Scikit-Learn 中文文档】模型持久化
- POI中设置单元格背景色
- 《设计模式》学习笔记7——观察者模式
- iOS 同一页面加载上百张图片,迅速滑动时导致内存暴涨程序崩溃的参考解决方法
- 深入理解脚本化CSS系列第三篇——脚本化CSS类
- 第14周项目3
- UML类图画法及其之间的几种关系
- window 下 notebook 中的 pyspark安装
- Java集合框架上机练习题
- android 数据存储和访问方式四:ContentProvider(内容提供者、数据共享)详解
- 【Scikit-Learn 中文文档】Pipeline(管道)和 FeatureUnion(特征联合): 合并的评估器
- 创建自定义输入法
- android手机与蓝牙4.0的之间的通讯