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

仅IE6/7/8下cssText返回值少了分号

原文:http://www.cnblogs.com/snandy/archive/2011/03/12/1980444.html

时间: 2024-10-12 23:39:01

cssText的相关文章

javascript:cssText 修改元素的style样式 - &nbsp; &nbsp; - innerHTML 修改元素的内容!

<!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>无标题文档</title> <style> div { width:100px; height:100px; border:1px solid #333; } </sty

JavaScript 学习笔记——cssText

cssText 的使用 obj.cssText = " width:200px;position:absolute;left:100px;"; cssText会清除之前元素含有的样式,所以得使用 obj.cssText += " width:200px;position:absolute;left:100px;"; 但是在IE(6/7/8)中的最后一个分号会被删除 obj.cssText += " ;width:200px;position:absolut

巧用cssText属性

给一个HTML元素设置css属性,如 1 2 3 4 var head= document.getElementById("head"); head.style.width = "200px"; head.style.height = "70px"; head.style.display = "block"; 这样写太罗嗦了,为了简单些写个工具函数,如 1 2 3 4 5 6 7 function setStyle(obj,c

前端试题-cssText?

平常我们想更改页面上某个元素的样式时,我们一般会在js里这样写: 想更新obj的宽时,写上一行: obj.style.width = "200px": 想改它的定位类型时,再写一行: obj.style.position = "absolute"; 又想改它的边框了,再加一行: obj.style.border = "1px solid brown"; -- 改的样式多时,我们就要这样不停的写一行写一行--   如果我们在网上搜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 c

cssText笔记

style.cssText 用来获取/设置元素的样式 设置: <div id= "a" style= "background: red;"> document.getElementById("a").style.cssText= "width: 200px; height: 200px"; 设置成功,但background属性没有了! 设置的属性会完全覆盖原有的内联样式! 所以要想保留原先的内联样式需要在设置时叠加

IE6/7/8下cssText值与IE9/Firefox/Safari/Chrome/Opera不同

一,结尾没有分号 如下 <div style="color:red;">TEST</div> <script> var div = document.getElementsByTagName('div'); alert(div[0].style.cssText); </script> 各浏览器输出如下IE6/7/8 : IE9/Firefox/Chrome/Safari/Opera : 可以看到IE6/7/8中少了分号. 二,属性名(co

cssText文本格式化

<!DOCTYPE html><html> <head>  <meta charset="UTF-8">  <title></title>       <style>   div{width:100px;height:100px;border:1px solid #333;}  </style>   </head> <body>  <div id="d

巧用cssText属性批量操作样式

原链接: 巧用cssText属性批量操作样式 给一个HTML元素设置css属性,如 1 2 3 4 var head= document.getElementById("head"); head.style.width = "200px"; head.style.height = "70px"; head.style.display = "block"; 这样写太罗嗦了,为了简单些写个工具函数,如 1 2 3 4 5 6 7