?用JS代碼求出頁(yè)面上一個(gè)元素的最終的background-color,不考慮IE瀏覽器,不考慮元素float情況。

二、題目解析

?1.考察底層JavaScript基礎(chǔ)
?前端開(kāi)發(fā),日常最常接觸的就是頁(yè)面樣式的編寫(xiě)。而擺脫jQuery等工具庫(kù),用原生js獲取樣式,是每個(gè)前端程序猿進(jìn)階階段必須掌握的技能。

?2.考察面試者的思維縝密程度和開(kāi)發(fā)經(jīng)驗(yàn)
?如果認(rèn)為單單求元素計(jì)算后的樣式,就有點(diǎn)too young了。頁(yè)面的樣式的復(fù)雜,永遠(yuǎn)是最虐心的。就算前端有多牛逼,一聽(tīng)到兼容IE6,論誰(shuí)都會(huì)心塞??。所以還要考慮特殊的情況:display,opacity,visibility的取值。

三、理論基礎(chǔ)

?1. 內(nèi)聯(lián)樣式
?內(nèi)聯(lián)樣式可以通過(guò)元素的style屬性獲取,如果style屬性有background-color值,則可以直接獲取出來(lái) (暫不考慮!important) 。

?2. 外聯(lián)的層疊樣式
?DOM2樣式規(guī)范在document.defaultView中包含了一個(gè)getComputedStyle()方法。該方法返回一個(gè)只讀的CSSStyleDeclaration對(duì)象,其中包含特定元素的所有計(jì)算樣式。

四、解題

4.1 將所有工具方法封裝在WDS(wall dom script)命名空間中

(function(WDS,&