http://www.360doc.com/content/11/0125/12/5480484_88885141.shtml1、基础知识:
网页的大小和
浏览器窗口的大小
首先,要明确两个基本概念。
一张网页的全部面积,就是它的大小。通常情况下,网页的大小由内容和CSS样式表决定。浏览器窗口的大小,则是指在浏览器窗口中看到的那部分网页面积,又叫做viewport(视口)。很显然,如果网页的内容能够在浏览器窗口中全部显示(也就是不出现滚动条),那么网页的大小和浏览器窗口的大小是相等的。如果不能全部显示,则滚动浏览器窗口,可以显示出网页的各个部分。
2、clientLeft,clientTop,clientWidth,clientHeight
(图一 clientHeight和clientWidth属性)
clientWidth=width+padding
clientHeight=heigt+padding
function getViewport(){
if (document.compatMode == "BackCompat"){
return{
width:document.body.clientWidth;
height:document.body.clientHeight;
//整个网页的大小
}
else{
return{
width:document.documentElement(一个div).clientWidth
height:document.documentElement.clientHeight;
//一个div的大小
}
}
}3、screenLeft,screenTop,screenWidth,screenHeight
网页上的每个元素还有scrollHeight和scrollWidth属性,指包含滚动条在内的该元素的视觉面积.那么,document对象的scrollHeight和scrollWidth属性就是网页的大小,意思就是滚动条滚过的所有长度和宽度。
function getViewport(){
if (document.compatMode == "BackCompat"){
return{
width:document.body.screenWidth;
height:document.body.screenHeight ;
//整个网页的大小(包括不同见的滚动条大小,如没有滚动条,screenwidth=clientwidth)
}
else{
return{
width:document.documentElement(一个div).screenWidth
height:document.documentElement.screenHeight ;
//一个div的大小
}
}
} 4、offsetLeft,offsetTop,offsetWidth,offsetHeight(获取网页元素的绝对位置)
网页元素的绝对位置,指该元素的左上角相对于整张网页左上角的坐标。这个绝对位置要通过计算才能得到。
首先,每个元素都有offsetTop和offsetLeft属性,表示该元素的左上角与父容器(offsetParent对象)左上角的距离。所以,只需要将这两个值进行累加,就可以得到该元素的绝对坐标.
offsetWidth=width+padding+border
offsetHeight=height+padding+border
(图二 offsetTop和offsetLeft属性)
下面两个函数可以用来获取绝对位置的横坐标和纵坐标:
function getElementLeft(element){
var actualLeft = element.offsetLeft;
var current = element.offsetParent while (current !== null){
actualLeft += current.offsetLeft;
current = current.offsetParent;
}
return actualLeft;
}
function getElementTop(element){
var actualTop = element.offsetTop;
var current = element.offsetParent;
while (current !== null){
actualTop += current.offsetTop;
current = current.offsetParent
}
return actualTop;
}
由于在表格和iframe中,offsetParent对象未必等于父容器,所以上面的函数对于表格和iframe中的元素不适用.
5、获取元素位置的快速方法
除了上面的函数以外,还有一种快速方法,可以立刻获得网页元素的位置.那就是使用getBoundingClientRect()方法。它返回一个对象,其中包含了left、right、top、bottom四个属性,分别对应了该元素的左上角和右下角相对于浏览器窗口(viewport)左上角的距离。
var X= this.getBoundingClientRect().left;
var Y =this.getBoundingClientRect().top;
再加上滚动距离,就可以得到绝对位置
var X= this.getBoundingClientRect().left+document.documentElement.scrollLeft;
var Y =this.getBoundingClientRect().top+document.documentElement.scrollTop;
目前,IE、Firefox 3.0+、Opera 9.5+都支持该方法,而Firefox 2.x、Safari、Chrome、Konqueror不支持
名称: ♪4C.ESL | .↗Evon
口号: 遇到新问题♪先要寻找一个方案乄而不是创造一个方案こ
mail: 联系我