获取浏览器(<html>/<body>)视口大小
这个函数首先检查document.compatMode属性,确定浏览器是否运行在混杂模式。大多数浏览器都运行在标准模式下,所以会自动执行else代码。
function getViewport() {
if (document.compatMode == "BackCompat") {
return {
width: document.body.clientWidth,
height: document.body.clientHeight
}
} else {
return {
width: document.documentElement.clientWidth,
height: document.documentElement.clientHeight
}
}
}
获取元素偏移量
下面函数可以准确获得元素相对于document的(左)偏移量,如果想得到上偏移量,只需将代码中所有的offsetLeft替换为offsetTop即可。
function getElementLeft (element) {
var actualLeft = element.offsetLeft;
var current = element.offsetParent;
while (current !== null) {
actualLeft += current.offsetLeft;
current = current.offsetParent;
}
return actualLeft;
}