精確獲取元素樣式值 位置

2022-07-05 05:27:08 字數 1422 閱讀 7908

寫這篇文章我很矛盾,因為如果非常規範的寫**,這篇文章說的問題根本就不存在。因為 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...