寫這篇文章我很矛盾,因為如果非常規範的寫**,這篇文章說的問題根本就不存在。因為 top right / bottom left 一般都會手動設定,如果不小心結果是 auto,那絕對是您忘了賦值了。
比如為了絕對定位到父級元素(offsetparent)的左上角,有時候我們會偷懶寫成下面這樣:
position: absolute;我們以為瀏覽器缺省會填上 left: 0; top: 0; 沒錯,大部分瀏覽器都會實現同樣的效果,但是卻不是 0px,而是 auto,這時候問題就來了,而且我曾經在firefox x.0 中發現,這樣簡寫居然不是定位到左上角,當然最新的版本已經解決了這個問題。
static: auto -> 0px
relative: auto -> 0px
fixed: auto -> 元素相對於瀏覽器視窗的位置
我真心覺得沒必要考慮這三位,所以我的處理方式是,非 'absolute' 碰到 auto 統一轉為 0px
下面給幾個絕對定位(top / right / bottom / left 全是 auto)的例子:
1. 預設
這時 left 和 top 等同於 0px
2. 父元素設定padding
這時 left 和 top 等同於 父元素的 padding-left 和 padding-top
3. 父元素沒設定 padding,子元素設定 margin
這時 left 和 top 等同於 元素的 margin-left 和 margin-top
4. 最後給乙個特殊例子,元素設定 left: 0; top: 0; 並且 設定margin,而父元素設定 padding
#b 這時,即使設定了 left 和 top,還是被自己的 margin 影響了
綜上,我們不用考慮目標元素的盒模型,只管父元素(offsetparent)的 padding,所以的當位置為 auto 時,轉換公式如下:
位置(left) = 父元素padding(left);
js獲取元素具體樣式屬性值
需要把元素的樣式都寫在行內樣式上才可以 寫在樣式表中不起作用 在真實專案中,這種方式不常用 無法實現css和html分離 只要當前的元素標籤可以在頁面中呈現出來,那麼它的所有樣式都是經過瀏覽器計算過的 渲染過的 哪怕有些樣式沒有寫,我們也可以獲取到 window.getcomputedstyle 當...
獲取元素樣式
object.style attr 只可獲取html標籤內的樣式,主要用來設定css,而不可獲取style標籤中的css樣式 ie支援object.currentstyle attr ff支援getcomputedstyle object,false attr 首先是有兩個引數,元素和偽類。第二個引...
獲取元素樣式
1 ele.style ele.style只能獲取寫在元素標籤中的style屬性裡的樣式值,無法獲取到定義在和通重載入進來的樣式屬性 var test document.getelementbyid test 獲取節點的color test.style.color 2 getcomputedstyl...