javaScript 元素的位置,尺寸,宽度总结下
<style> body{ margin:0px; padding:0px; } #div1{ width:300px; height:200px; background:#CC3; margin:30px auto 0px 10px; position:relative; } #div2{ width:300px; height:200px; background:#096; position:absolute; left:310px; } #div11{ margin-left:10px; } </style> </head> <body> <div id='div1'> xxxxxx <div id='div11'>fasdfa</div> </div> <div id='div2'> </div> <div id='div3' style="width:200px"> <div id='div31'></div> </div> </body>
window.onload=function(){ //获得绝对位置 //这是个测试 /*var oParent=document.getElementById('div11').offsetParent; //var oParent=document.getElementById('div11').offsetLeft; while(oParent !==null){ console.info('oParent: '+oParent.offsetLeft+oParent); //实际上是margin-left oParent=oParent.offsetParent; }*/ //获得绝对位置 //网页元素的绝对位置,指该元素的左上角相对于整张网页左上角的坐标 //高类似这样写 function getAbsLeft(node){ var leftX=0; while(node !==null){ console.info(node+' '+leftX); leftX+=node.offsetLeft;//这个得放上面,因为最后一次循环的时候为null就会报错 node=node.offsetParent; } return leftX; } var oDiv11=document.getElementById('div11'); console.info(getAbsLeft(oDiv11)); //相对来位置 //网页元素的相对位置,指该元素左上角相对于浏览器窗口左上角的坐标。 //有了绝对位置就可以获得相对位置,用绝对位置减去滚动的距离就可 document中的scrollLeft 与 scrollTop //compat mode 兼容模式 //BackCompat:标准兼容模式关闭。 //CSS1Compat:标准兼容模式开启。 //当document.compatMode等于BackCompat时,浏览器客户区宽度是document.body.clientWidth; //当document.compatMode等于CSS1Compat时,浏览器客户区宽度是document.documentElement.clientWidth。 //以上是做兼容用的 function getRelLeft(node){ var leftX=0; var scrollLeftX=0; while(node !==null){ console.info(node+' '+leftX); leftX+=node.offsetLeft;//这个得放上面,因为最后一次循环的时候为null就会报错 node=node.offsetParent; } console.info(document.compatMode);//CSS1Compat if(document.compatMode=='BackCompat'){ scrollLeftX=document.body.scrollLeft; console.info('关scrollLeftX: '+scrollLeftX); }else{ scrollLeftX=document.documentElement.scrollLeft; console.info('开scrollLeftX: '+scrollLeftX); } return leftX-scrollLeftX; } //oDiv11.onclick=getRelLeft(oDiv11); //下面这个是延迟了让它出现滚动条都是不出值 setTimeout(function(){ console.info('开始'); getRelLeft(oDiv11); },6000); //怎么说呢,逻辑上是这样,可惜没有看出效果 //若有错误,欢迎指出 //快速得到元素的相对位置 console.info('快速'+oDiv11.getBoundingClientRect().left);//20 //绝对位置的效果还是没有出来 console.info('快速'+(oDiv11.getBoundingClientRect().left+document.documentElement.scrollLeft)); };
//在些说明下,绝对位置的图解,结合代码中的讲述
//相对位置的图解
//至此结束
相关推荐
nmgxzm00 2020-11-10
ifconfig 2020-10-14
hhanbj 2020-11-17
zfszhangyuan 2020-11-16
古叶峰 2020-11-16
一个智障 2020-11-15
jipengx 2020-11-12
81427005 2020-11-11
xixixi 2020-11-11
游走的豚鼠君 2020-11-10
苗疆三刀的随手记 2020-11-10
Web卓不凡 2020-11-03
小飞侠V 2020-11-02
帕尼尼 2020-10-30
爱读书的旅行者 2020-10-26
帕尼尼 2020-10-23
杏仁技术站 2020-10-23
淼寒儿 2020-10-22