J2EE社区

苟有恒,何必三更起五更眠;
最无益,只怕一日曝十日寒.
posts - 241, comments - 318, trackbacks - 0, articles - 16

javaScript 获取窗口左右宽高大小 大全

Posted on 2011-06-16 11:17 xcp 阅读(1242) 评论(0)  编辑  收藏 所属分类: AjaxJavascript
http://www.360doc.com/content/11/0125/12/5480484_88885141.shtml

1、基础知识:网页的大小浏览器窗口的大小
    首先,要明确两个基本概念。
        一张网页的全部面积,就是它的大小。通常情况下,网页的大小由内容和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: 联系我