一.滚动距离与高度
(1).查看滚动条的距离
常规
window.pageXOffset/pageYOffset
IE9/IE8及以下
怪异:document.body.scrollLeft/scrollTop
标准:document.documentElement.scrollLeft/scrollTop
不常见
二.可视尺寸(窗口的宽高)
(1).可视窗口尺寸
常规
IE9/IE8及以下
怪异:document.body.clientWidth/clientHeight
标准:document.documentElement.clientWidth/clientHeight
(2).可视位置(包含滚动条,工具栏等等)
(3)实际文档距离(不管你页面缩放不缩放)
document.body.scrollHeight/scrollWidth
document.documentElement.scrollHeight/scrollWidth
(4).打印当前选择位置信息(IE中是没有宽度高度)
(5).元素距左距右
确认那个祖先有定位
(6).移动滚动条
scroll和scrollto是一致的
window.scroll(100,100);
window.scrollTo(100,100);
scrollBy(x,y)
三.兼容模式
(1).浏览器怪异模式和标准模式
document.compatMode;
//CSS1Compat W3C模式
//BackCompat 怪异模式
(2).封装滚动条功能
function getScrollOffset(){
if(window.pageXOffset){
return{
left:window.pageXOffset,
top:window.pageYOffset,
}
}else{
return{
left:document.body.scrollLeft+document.documentElement.scrollLeft,
top:document.body.scrollTop+document.documentElement.scrollTop
}
}
}
(3).封装可视尺寸
function getViewportSize(){
if(window.innerWidth){
return{
width:window.innerWidth,
height:window.innerHeight
}
}else{
if(document.compatMode==='BackCompat'){
return{
width:document.body.clientWidth,
height:document.body.clientHeight
}
}else{
return{
width:document.documentElement.clientWidth,
height:document.documentElement.clientHeight
}
}
}
}
(4).封装实际尺寸
function getScrollSize(){
if(document.body.scrollWidth){
return{
width:document.body.scrollWidth,
height:document.body.scrollHeight
}
}else{
return{
width:document.documentElement.scrollWidth,
height:document.documentElement.scrollHeight
}
}
}
(5).封装距左距上绝对距离
function getElemDocPosition(el){
var parent=el.offsetParent,
offsetLeft=el.offsetLeft,
offsetTop=el.offsetTop;
while(parent){
offsetLeft+=parent.offsetLeft;
offsetTop+=parent.offsetTop;
parent=parent.offsetParent;
}
return {
left:offsetLeft,
top:offsetTop
}
}