js的offset什么意思

JavaScript07

js的offset什么意思,第1张

offset有offsetParent、offsetTop、offsetLeft、offsetWidth、offsetHeight;

offsetParent:当前容器的父级并且是已进行过CSS定位的容器元素。 如果这个容器元素未进行CSS定位, 则offsetParent属性的取值为根元素

offsetWidth:元素的可视宽度,包括元素的边框(border),水平padding,元素本身宽度

offsetLeft:元素的边框的外边缘距离与已定位的父容器(offsetparent)的左边距离(不包括元素的边框和父容器的边框)

/*不知道楼主的程序是要做什么……不过我看到offset首先想到css的偏移量。

callee 属性是 arguments 对象的一个成员,该属性仅当相关函数正在执行时才可用。

callee 属性的初始值是正被执行的 Function 对象。这将允许匿名函数成为递归的。

*/

/*IE、Firefox3及更高和Opera9.5及更高为每一个元素提供了一个getBoundingClientRect()方法。这个方法返回一个矩形对象,含4个属性:left、top、right和bottom。这些属性给出了元素在页面中相对于视口的位置。但IE认为左上角坐标为(2,2),其他浏览器认为是(0,0)。

*/ 

//所以我用过的方法是这样的(获取元素大小):

function getBoundingClientRect(element){ 

var scrollTop = document.documentElement.scrollTop 

var scrollLeft = document.documentElement.scrollLeft 

    if(element.getBoundingClientRect){ 

        If(typeof arguments.callee.offset != "number"){ 

            var temp = document.createElement("div") 

            temp.style.cssText = "position:absoluteleft:0top:0" 

            document.body.appendChild(temp) 

            arguments.callee.offset = -temp.getBoundingClientRect().top - scrollTop 

            document.body.removeChild(temp) 

            temp = null 

        } 

    

        var rect = element.getBoundingClientRect() 

        var offset = arguments.callee.offset 

    

        return{ 

            left: rect.left + offset, 

            right: rect.right + offset, 

            top: rect.top + offset, 

            bottom: rect.bottom + offset 

        } 

    }else{ 

        var actualLeft = getElementLeft(element) 

        var actualTop = getElementTop(element) 

    

        return{ 

            left: actualLeft - scrollLeft, 

            right: actualLeft + element.offsetWidth - scrollLeft, 

            top: actualTop - scrollTop, 

            bottom: actualTop + element.offsetHeight - scrollTop 

        } 

    } 

}

纯js

function getOffsetLeft(o)

{

    var left=0

    var offsetParent = o

    while (offsetParent != null && offsetParent != document.body){

        left += offsetParent.offsetLeft

        offsetParent = offsetParent.offsetParent

    }

    return left

}

jQuery中很好的函数可以实习那

$("#Button").offset().left

注意:offset() 函数的计算 不包括margin值(但包含border值)