在table不能遺露了tbody的最後測試圖中,會發現雖然設置了table的一個高度,但通過瀏覽器渲染後的實際高度沒有200px,所以,小小研究一下,記錄以下css
能夠經過style來獲取一個元素的內聯樣式,這個返回值就是你設置的值(顏色能夠會變進制)html
1. 能夠返回組合式的樣式,好比font,border,background等,chrome
a), 但在處理顏色上稍微有一些變化,好比background = #000000 在 IE > 9和其餘瀏覽器中會把它算成rgb而後返回來(rgb(0,0,0)),但 IE < 9中直接返回你所設置的#000000瀏覽器
b). 在輸出順序上有必定的變化,好比 border: 1px solid #000, 在IE > 9和其餘瀏覽器中會輸出 測試
1px solid rgb(0, 0, 0) 但在ie < 9中會輸出 #000000 1px solid ,而且這個順序是不會據你設置的順序來改變的,是瀏覽器固定了的this
2.假如你想獲取一個在行間沒設置的樣式或者是一個非標準的樣式,IE < 9 會返回一個undefined, 其餘的瀏覽器會返回一個空字符串spa
這個是IE係獲取計算後的樣式值;語法以下code
element.currentStyle[attr]orm
返回的的是一個只讀的CSSStyleDeclaration對象,其中[ie6 => 110個, ie7,ie8 => 124個, ie9 => 201個 , ie10 => 298個]個屬性,包含各自的私有屬性htm
1.不能獲取組合式樣式的值,在IE < 9 中返回undefined,在ie > 9 中返回 空字符串
obj.currentStyle[‘font’] ==> ie < 9 ? undefined : ‘’
2. 對顏色的不進行進制轉換的處理,#000000 ===> #000000,對百分比也不進行處理
3.對於瀏覽器支持的屬性,可是沒有設置相應的屬性的(好比說 boxShadow), IE > 9 返回 默認值 好比( 'none’, 'auto’)
obj.currentStyle[‘boxShadow’] ===> ie < 9 ? undefined : ‘none’
4.對於瀏覽器不支持的屬性(好比說'fsy’) 瀏覽器都會返回 undefined
這個是標準瀏覽器獲(ie>9 和其餘的)取樣式值,
語法
var style = window.getComputedStyle(element[, pseudoElt]);
返回的是一個只讀的CSSStyleDeclaration對象,其中[ie9 => 201, ie10 => 298, chrome29 => 258; opera16 => 267, safari5.17 => 233, ff23.01 => 210]個屬性,還有6個方法
getPropertyCSSValue,getPropertyPriority,getPropertyValue,item,removeProperty,setProperty
1.常見的用法
getComputedStyle(element,null)[attr]
a). 這個用法不能獲取組合屬性
b). 這個用法獲取的是絕對值,會對百分比,小數點進行處理,(ie ff對絕對值是小數的不會進行取整,opera,chrome,safari會把小數向下取整,返回一個整數)不會對顏色進行處理
c). 對於瀏覽器不支持的屬性(好比自造的,瀏覽器私有屬性)返回undefined
d). 對於沒有重寫的屬性,會返回瀏覽器默認值
e). 最重要的區別是,這個屬性對於table的處理
getComputedStyle
對於一個元素的HTML屬性有border時,並重寫了它的高(寬,不論是樣式重寫,仍是HTML屬性聲明border),ff ie會把bordder計算在內,而chrome,opera,safari會把實際的border除掉 (緣由,我以爲是對table的渲染機制不一樣)
第二個參數能夠是null,空字符串,也能夠是' : before, : after, :first-line等僞類'
1. 獲取一個僞類元素的內容,好比
getComputedStyle
a) ff,ie 會直接把content的內容不通過解析直接當字符串返回 ==> "\"fsy\"」 長度爲5
b) chrome,safari,opera 會把content通過解析後的內容返回 ===> "fsy" 長度爲3
c) 二者的類型都是string
2. 當一個元素支持的僞類設置了高與寬,但沒將它設置成塊級元素(行內塊級),獲取它的高度
getComputedStyle
a) ff,ie,safari會返回設置的值 ===> 100px
b) chrome,opera 返回屬性的默認值 ===> auto
3. 當一個元素支持的屬性,好比返回p: before的boxShadow,都會返回默認值 'none’
getComputedStyle
1.獲取它的content
ie ==> ‘normal’
ff ===> ‘none’
safari,ff,chrome ===> ‘’
總結:當獲取一個元素僞類的content時,若是該元素不支持這個屬性;ie ==> ‘normal’ ff ==> ‘none’ 其餘的 ==> ''
2. 獲取它的寬度 所有===> ‘100px’
3. 獲取它的boxShadow ===> ‘none’
4. 獲取它不存在的屬性 ‘fsy’ ===> undefined
三.目前就對a: [link | visited | focus | hover | acitve] : before : after支持度比較好 ,有的瀏覽器返回的僅僅是設置值,而不是計算值
1. getPropertyValue 返回一個元素的計算值,與currentStyle同樣,但也有不一樣的
a) 這個方法在opera16,chrome29中獲取組合屬性,顏色也會轉換成rgb模式,但在其餘瀏覽器中仍是不能夠
===================================================================
注: 如下內容摘自張鑫旭-鑫空間-鑫生活[http://www.zhangxinxu.com]
b) 能夠獲取CSS樣式申明對象上的屬性值(直接屬性名稱),例如:
window.getComputedStyle(element, null).getPropertyValue("float");
若是咱們不使用getPropertyValue
方法,直接使用鍵值訪問,其實也是能夠的。可是,好比這裏的的float
,若是使用鍵值訪問,則不能直接使用getComputedStyle(element, null).float
,而應該是cssFloat
與styleFloat
,天然須要瀏覽器判斷了,比較折騰!
c) 使用getPropertyValue
方法沒必要能夠駝峯書寫形式(不支持駝峯寫法),例如:style.getPropertyValue("border-top-left-radius")
;
2.getPropertyCSSValue
a) getPropertyCSSValue
方法返回一個CSS最初值(CSSPrimitiveValue)對象(width, height, left, …)或CSS值列表(CSSValueList)對象(backgroundColor, fontSize, …),這取決於style
屬性值的類型。在某些特別的style屬性下,其返回的是自定義對象。該自定義對象繼承於CSSValue對象(就是上面所說的getComputedStyle
以及currentStyle
返回對象)。
b) getPropertyCSSValue
方法兼容性很差,IE9瀏覽器不支持,Opera瀏覽器也不支持(實際支持,只是總是拋出異常)。並且,雖然FireFox中,style
對象支持getPropertyCSSValue
方法,但老是返回null
. 所以,目前來說,getPropertyCSSValue
方法能夠先漠不關心。
=================完畢================================================
3. getPropertyPriority()
若是在規則中指定CSS特性"important",則返回"important";不然返回空字符串。
4. removeProperty(propertyName)
從CSS定義中刪除propertyName。
5.item(index)
返回在給定索引index處的CSS特性的名稱,例如"background-color"。
6. setProperty(propertyName,value,priority)
按照指定的優先級priority來設置CSS特性propertyName的value值("important"或者爲空字符串)。