国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

js中巧用cssText屬性批量操作樣式

2019-11-20 23:54:12
字體:
來源:轉載
供稿:網友
給一個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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 石台县| 德格县| 修武县| 盐源县| 黄陵县| 长海县| 柏乡县| 庆城县| 确山县| 武平县| 巨野县| 新安县| 宜章县| 嘉禾县| 乌兰浩特市| 大姚县| 防城港市| 息烽县| 阳新县| 德令哈市| 区。| 马尔康县| 五寨县| 新宁县| 阿坝| 东至县| 长宁区| 姜堰市| 白城市| 交城县| 遂昌县| 绍兴县| 汽车| 周口市| 临沂市| 盘山县| 河津市| 禹城市| 进贤县| 漳平市| 海城市|