天天看點

bom初步學習

一、檢視滾動條得滾動距離:

1、windows.pageXOffset/pageYOffset(IE8及IE8以下不相容)

2、document.body/documentElement.scrollLeft/scrollTop(相容性比較混亂)

IE8和IE8以下的浏覽器:

(1)document.body.scrollLeft/Top

(2)document.documentElement.scorllLeft/Top

因為(1)(2)的相容性是互斥的,是以采用(1)+(2)的方法解決問題。

相對應的解決問題的代碼:

function getScrollOffset(){
			if(window.pageXOffset){
				return{
					x:windows.pageXOffset,
					y:windows.pageYOffset
				}
			}
				else{
					return{
						x:document.body.scrollleft+document.documentElement.scrollLeft,
						y:document.body.scrollTop+document.documentElement.scrollTop
					}
				}
			}

           

二、檢視可視區視窗的尺寸

1、window.innerWidth/window.innerHeight (IE8及IE8以下不相容)

2、document.documentElement.clientWidth/clientHeight(标準模式下,任何浏覽器都相容)

3、document.body.clientWidth/clientHeight(适用于怪異模式下的浏覽器)

4、封裝相容性方法,傳回浏覽器尺寸getViewportOffset()

附:怪異模式/混雜模式 和 标準模式 問題

判斷:document.compatMode:(1)CSS1Compat;(2)BackCompat。

檢視可視區視窗的尺寸:

function getViewportOffset(){
				if(window.innerWidth){
					return{
						w : window.innerWidth,
						h : window.innerHeight
					}
				}else{
					if(document.compatMode==="BackCompat"){
						return{
							w : document.body.clientWidth,
							h : document.body.clientHeight
						}
					}else{
						return{
							w : document.documentElement.clientWidth,
							h : document.documentElement.clientHeight
						}
					}
				}
			}
           

三、檢視元素的幾何尺寸

1、domEle.getBoundingClientRect();

2、相容性很好

3、該方法傳回一個對象,對象裡面有left,top,right,bottom等屬性。left和top代表該元素左上角的x和y坐标,right和bottom代表元素右下角的x和y坐标(即四條邊距邊的距離)

4、height和width屬性老版本IE并未實作

5、傳回的結果并不是“實時的”

四、檢視元素的(視覺上的)尺寸

1、dom.offsetWidth,dom.offsetHeight

五、檢視元素的位置

1、dom.offsetLeft,dom.offsetTop

對于無定位父級的元素,傳回相對于文檔的坐标。對于有定位父級傳回相對于最近的有定位的父級的坐标。

2、dom.offsetParent

傳回最近的有定位的父級,如無,傳回body,body.offsetParent傳回null

六、讓滾動條滾動

1、window上有三個方法

(1)scroll();

(2)scrollTo();

(3) scrollBy();

三個方法功能類似,用法都是将x,y坐标傳入。即實作讓滾動輪滾動到目前位置。

差別:前兩者沒有任何差別,且都不會累加,而scrollBy()會在之前的資料基礎之上做累加。