js中巧用cssText属性批量操作样式

 更新时间:2011年03月13日 23:33:21   作者:  
js中巧用cssText属性批量操作样式,需要的朋友可以参考下。
给一个HTML元素设置css属性,如
复制代码 代码如下:

var head= document.getElementById("head");
head.style.width = "200px";
head.style.height = "70px";
head.style.display = "block";

这样写太罗嗦了,为了简单些写个工具函数,如
复制代码 代码如下:

function setStyle(obj,css){
for(var atr in css){
obj.style[atr] = css[atr];
}
}
var head= document.getElementById("head");
setStyle(head,{width:"200px",height:"70px",display:"block"})

发现 Google API 中使用了cssText属性,后在各浏览器中测试都通过了。一行代码即可,实在很妙。如
复制代码 代码如下:

var head= document.getElementById("head");
head.style.cssText="width:200px;height:70px;display:bolck";

和innerHTML一样,cssText很快捷且所有浏览器都支持。此外当批量操作样式时,cssText只需一次reflow,提高了页面渲染性能。

但cssText也有个缺点,会覆盖之前的样式。如
复制代码 代码如下:

<div style="color:red;">TEST</div>

想给该div在添加个css属性width
复制代码 代码如下:

div.style.cssText = "width:200px;";

这时虽然width应用上了,但之前的color被覆盖丢失了。因此使用cssText时应该采用叠加的方式以保留原有的样式。
复制代码 代码如下:

function setStyle(el, strCss){
var sty = el.style;
sty.cssText = sty.cssText + strCss;
}

使用该方法在IE9/Firefox/Safari/Chrome/Opera中没什么问题,但由于 IE6/7/8中cssText返回值少了分号 会让你失望。

因此对IE6/7/8还需单独处理下,如果cssText返回值没";"则补上
复制代码 代码如下:

function setStyle(el, strCss){
function endsWith(str, suffix) {
var l = str.length - suffix.length;
return l >= 0 && str.indexOf(suffix, l) == l;
}
var sty = el.style,
cssText = sty.cssText;
if(!endsWith(cssText, ';')){
cssText += ';';
}
sty.cssText = cssText + strCss;
}

相关:
http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSStyleDeclaration
https://developer.mozilla.org/en/DOM/CSSStyleDeclaration

相关文章

  • 解决Layui中layer报错的问题

    解决Layui中layer报错的问题

    今天小编就为大家分享一篇解决Layui中layer报错的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-09-09
  • js写一个弹出层并锁屏效果实现代码

    js写一个弹出层并锁屏效果实现代码

    js实现一个弹出层并锁屏效果是每一网友所期望的效果,于是搜集整理一番,把代码晒出来和大家分享
    2012-12-12
  • Javascript监视变量变化的方法

    Javascript监视变量变化的方法

    这篇文章主要介绍了Javascript监视变量变化的方法,涉及javascript针对变量的相关操作技巧,需要的朋友可以参考下
    2015-06-06
  • JS跳过debugger的几种方法小结

    JS跳过debugger的几种方法小结

    本文主要介绍了JS跳过debugger的几种方法小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-07-07
  • 手把手15分钟搭一个企业级脚手架

    手把手15分钟搭一个企业级脚手架

    这篇文章主要介绍了手把手15分钟搭一个企业级脚手架,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-09-09
  • 一文带你彻底搞懂JavaScript正则表达式

    一文带你彻底搞懂JavaScript正则表达式

    正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串搜索模式,这篇文章主要给大家介绍了关于彻底搞懂JavaScript正则表达式的相关资料,需要的朋友可以参考下
    2022-09-09
  • JS实现搜索框文字可删除功能

    JS实现搜索框文字可删除功能

    本文给大家分享一段js代码实现搜索框文字可删除功能,代码简单易懂,非常不错,具有参考借鉴价值,需要的朋友参考下吧
    2016-12-12
  • JScript分割字符串示例代码

    JScript分割字符串示例代码

    分割字符串的方法有很多,下面为大家介绍下使用JScript简单实现下,喜欢的朋友可以参考下
    2013-09-09
  • Ionic快速安装教程

    Ionic快速安装教程

    Ionic 是目前最有潜力的一款 HTML5 手机应用开发框架。通过 SASS 构建应用程序,它 提供了很多 UI 组件来帮助开发者开发强大的应用。接下来小编给大家介绍如何安装 Ionic 在自己的电脑上搭建一个简单的小应用,感兴趣的朋友一起看看吧
    2016-06-06
  • js实现页面转发功能示例代码

    js实现页面转发功能示例代码

    本文为大家介绍的是使用js实现页面转发,具体实现如下,感兴趣的朋友可以参考下,希望对大家有所帮助
    2013-08-08

最新评论