最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

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

来源:懂视网 责编:小采 时间:2020-11-27 20:58:26
文档

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

js中巧用cssText属性批量操作样式_javascript技巧:给一个HTML元素设置css属性,如 代码如下: var head= document.getElementById(head); head.style.width = 200px; head.style.height = 70px; head.style.display = block; 这样写太罗嗦了,为了简单些写个工
推荐度:
导读js中巧用cssText属性批量操作样式_javascript技巧:给一个HTML元素设置css属性,如 代码如下: var head= document.getElementById(head); head.style.width = 200px; head.style.height = 70px; head.style.display = block; 这样写太罗嗦了,为了简单些写个工

给一个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也有个缺点,会覆盖之前的样式。如
代码如下:
TEST

想给该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

文档

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

js中巧用cssText属性批量操作样式_javascript技巧:给一个HTML元素设置css属性,如 代码如下: var head= document.getElementById(head); head.style.width = 200px; head.style.height = 70px; head.style.display = block; 这样写太罗嗦了,为了简单些写个工
推荐度:
标签: js 样式 属性
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top