閱讀375 返回首頁    go 技術社區[雲棲]


windows對象屬性總結

獲取url中一部分:

alert(window.location.pathname);//設置或獲取對象指定的文件名或路徑
alert(window.location.href);//設置或獲取整個 URL 為字符串
alert(window.location.port);//設置或獲取與 URL 關聯的端口號碼
alert(window.location.protocol);//設置或獲取 URL 的協議部分
alert(window.location.hash);//設置或獲取 href 屬性中在井號“#”後麵的分段
alert(window.location.host);//設置或獲取 location 或 URL 的 hostname 和 port 號碼
alert(window.location.search);//設置或獲取 href 屬性中跟在問號後麵的部分

獲取元素的實際大小

  1. clientWidth和clientHeight

這組屬性可以獲取元素可視區的大小,可以得到元素內容及內邊距所占據的空間大小。返回了元素大小,但沒有單位,默認單位是px,如果你強行設置了單位,比如100em之類,它還是會返回px的大小。(CSS獲取的話,是照著你設置的樣式獲取)。對於元素的實際大小,clientWidth和clientHeight理解方式如下:

a. 增加邊框,無變化;

b. 增加外邊距,無變化;

c. 增加滾動條,最終值等於原本大小減去滾動條的大小;

d. 增加內邊距,最終值等於原本大小加上內邊距的大小;

  1. scrollWidth和scrollHeight

這組屬性可以獲取滾動內容(可見內容)的元素大小。返回了元素大小,默認單位是px。如果沒有設置任何CSS的寬和高度,它會得到計算後的寬度和高度。對於元素的實際大小,scrollWidth和scrollHeight理解如下:

(1) 增加邊框,不同瀏覽器不同解釋(下麵在IE8中運行正常,IE6運行不正常):

a) Firefox和Opera瀏覽器會增加邊框的大小,220x220

b) IE、Chrome和Safari瀏覽器會忽略邊框大小,200x200

c) IE瀏覽器隻顯示它本來內容的高度,200x18(IE8已經修改該問題)

(2) 增加內邊距,最終值會等於原本大小加上內邊距大小,220x220,IE為220x38

(3) 增加滾動條,最終值會等於原本大小減去滾動條大小,184x184,IE為184x18

(4) 增加外邊據,無變化。

(5) 增加內容溢出,Firefox、Chrome和IE獲取實際內容高度,Opera比前三個瀏覽器獲取的高度偏小,Safari比前三個瀏覽器獲取的高度偏大

  1. offsetWidth和offsetHeight

這組屬性可以返回元素實際大小,包含邊框、內邊距和滾動條。返回了元素大小,默認單位是px。如果沒有設置任何CSS的寬和高度,他會得到計算後的寬度和高度。對於元素的實際大小,offsetWidth和offsetHeight理解如下:

(1)增加邊框,最終值會等於原本大小加上邊框大小,為220;

(2)增加內邊距,最終值會等於原本大小加上內邊距大小,為220;

(3) 增加外邊據,無變化;

(4)增加滾動條,無變化,不會減小;

對於元素大小的獲取,一般是塊級(block)元素並且以設置了CSS大小的元素較為方便。如果是內聯元素(inline)或者沒有設置大小的元素就尤為麻煩,所以,建議使用的時候注意

獲取元素周邊大小

  1. clientLeft和clientTop獲取邊框大小

這組屬性可以獲取元素設置了左邊框和上邊框的大小。目前隻提供了Left和Top這組,並沒有提供Right和Bottom。如果四條邊寬度不同的話,可以直接通過計算後的樣式獲取,或者采用以上三組獲取元素大小的減法求得

右邊框的寬度:obj.offsetWidth-obj.clientWidth-obj.clientLeft

底邊框的寬度:obj.offsetHeight-obj.clientHeight-obj.clientTop

  1. offsetLeft和offsetTop

這組屬性可以獲取當前元素相對於父元素的位置。獲取元素當前相對於父元素的位置,最好將它設置為定位position:absolute;否則不同的瀏覽器會有不同的解釋。

a、將position設置為absolute,則所有瀏覽器返回一樣的值

b、加上邊框和內邊距不會影響它的位置,但加上外邊據會累加

3、box.offsetParent得到父元素

offsetParent中,如果本身父元素是

,非IE返回body對象,IE(IE6)返回html對象。如果兩個元素嵌套,如果父元素沒有使用定位position:absolute,那麼offsetParent將返回body對象或html對象。所以,在獲取offsetLeft和offsetTop時候,CSS定位很重要

如果說,在很多層次裏,外層已經定位,我們怎麼獲取裏層的元素距離body或html元素之間的距離呢?也就是獲取任意一個元素距離頁麵上的位置。那麼我們可以編寫函數,通過不停的向上回溯獲取累加來實現

4.scrollTop和scrollLeft

這組屬性可以獲取滾動條被隱藏(滾動條上方區域)的區域大小,也可設置定位到該區域

5、getBoundingClientRect()

這個方法返回一個矩形對象,包含四個屬性:left、top、right和bottom。分別表示元素各邊與頁麵上邊和左邊的距離

var box=document.getElementById('box');// 獲取元素
alert(box.getBoundingClientRect().top);// 元素上邊距離頁麵上邊的距離
alert(box.getBoundingClientRect().right);// 元素右邊距離頁麵左邊的距離
alert(box.getBoundingClientRect().bottom);// 元素下邊距離頁麵上邊的距離
alert(box.getBoundingClientRect().left);// 元素左邊距離頁麵左邊的距離

注意:IE、Firefox3+、Opera9.5、Chrome、Safari支持,在IE中,默認坐標從(2,2)開始計算,導致最終距離比其他瀏覽器多出兩個像素,我們需要做個兼容

document.documentElement.clientTop; //非IE為0,IE為2
document.documentElement.clientLeft; //非IE為0,IE為2
functiongGetRect (element) {
    var rect = element.getBoundingClientRect();
    var top = document.documentElement.clientTop;
    var left= document.documentElement.clientLeft;
    return{
        top  :   rect.top - top,
        bottom  :   rect.bottom - top,
        left  :   rect.left - left,
        right  :    rect.right - left
    }
}

分別加上外邊據、內邊距、邊框和滾動條,用於測試所有瀏覽器是否一致

$.ajax({
    type: "get",//使用get方法訪問後台
    dataType: "json",//返回json格式的數據
    url: "BackHandler.ashx",//要訪問的後台地址
    data: "pageIndex=" + pageIndex,//要發送的數據
    complete :function(){$("#load").hide();},//AJAX請求完成時隱藏loading提示
    success: function(msg){});//msg為返回的數據,在這裏做數據綁定
})

最後更新:2017-05-22 15:33:37

  上一篇:go  Adopt Open JDK官方文檔(三)對Adopt OpenJDK的初步了解
  下一篇:go  深入理解並行編程-分割和同步設計(三)