一练般、cssText之起步
那些年,我們是這樣設(shè)置樣式的:
xxx.style.width = "233px";
xxx.style.position = "fixed";
xxx.style.left = "233px";
現(xiàn)如今祈纯,我們可以這樣搞:
xxx.style.cssText="width:233px;height:233px;position:fixed";
W3C是這樣描述cssText:
cssText糠爬,DOMString類型
cssText特性必須返回序列化的CSS規(guī)則。
當(dāng)設(shè)置cssText特性時(shí)運(yùn)行這些步驟:
1. 解析其值刽脖。
2. 如果解析失敗則終止運(yùn)行羞海。
3. 如果新對(duì)象的type并不匹配當(dāng)前對(duì)象的type則拋出"InvalidModificationError"異常。
4. 替換當(dāng)前對(duì)象為新對(duì)象曲管。
我以為關(guān)鍵在于第四條:
替換當(dāng)前對(duì)象為新對(duì)象却邓。
是替換,也就是說(shuō)會(huì)覆蓋到目標(biāo)元素之前本身所具有的全部樣式(繼承的不算)申尤。
舉個(gè)栗子:
這里有一個(gè)<div>
,長(zhǎng)下面這個(gè)模樣:
.xxx {height:233px;width:233px;background:#F60;}
然后我要改變它的高度昧穿,我可以這么寫(xiě):
xxx.style.height= "466px";
但是客官你不可以這么寫(xiě):
xxx.style.cssText="height:466px;";
二橙喘、cssText之提速
基于上面的原因时鸵,我們?cè)谑褂胏ssText修改某個(gè)元素樣式的時(shí)候,需要首先得到它當(dāng)前的樣式:
var xxx = document.getElementById("warp");
var xxx_style = xxx.style.cssText;
然后在加上現(xiàn)在的樣式:
xxx_style += "position:fixed;"
xxx.style.cssText = xxx_style;
但是,客官如果貴司有下面這種情況饰潜,還請(qǐng)留步。
面對(duì)這種喪心病狂彭雾、男默女淚的情況,我們需要額外注意一點(diǎn):
當(dāng)我們使用var xxx_style = xxx.style.cssText;
得到樣式的時(shí)候薯酝,最后是沒(méi)有分號(hào)的半沽。
也就是說(shuō),如果某個(gè)元素的樣式是:height: 100px; width: 100px;overflow: hidden;
在IE6/7/8下我們會(huì)得到:HEIGHT: 100PX; WIDTH: 100PX; OVERFLOW: HIDDEN
最后的分號(hào)被丟掉了吴菠。
結(jié)果就是當(dāng)我們?cè)偈褂?/p>
xxx_style += "background:#F60;"
xxx.style.cssText = xxx_style;
來(lái)處理樣式時(shí)者填,會(huì)出現(xiàn):height: 100px; width: 100px; overflow: hiddenbackground:#F60;
當(dāng)然你可以選擇使用:xxx_style = "background:#F60;" + xxx_style
的方式做葵,最后沒(méi)有分號(hào)也不會(huì)影響,但是世事難料酿矢,安全起見(jiàn),還是額外判斷一下谬哀,補(bǔ)上這個(gè)分號(hào)比較可靠严肪。
除此以外史煎,IE6/7/8下返回的屬性和值全是大寫(xiě)驳糯,為了避免日后出現(xiàn)意外,還是.toLowerCase( )
比較好酝枢。
三恬偷、cssText之靠邊停車
大家一路上在前端的道路上馳騁下去吧帘睦,就不用靠邊停車了!
馬上就要回家給偉大的祖國(guó)母親慶祝生日了诡延,微博上出現(xiàn)了2種不同的聲音:
作業(yè)本同學(xué)說(shuō):
某注明作家(反正我是不認(rèn)識(shí))說(shuō):
作為還在上班(班,小名SegmentFault)的人纲爸,我就不說(shuō)什么了...
大家國(guó)慶節(jié)快樂(lè)!