`
yxkelsey
  • 浏览: 39003 次
  • 性别: Icon_minigender_1
  • 来自: 青岛
社区版块
存档分类
最新评论

javascript关于document.body 和document.documentelement

阅读更多
在设计页面时可能经常会用到固定层的位置,这就需要获取一些html对象的坐标以更灵活的设置目标层的坐标,这里可能就会用到 document.body.scrollTop等属性,但是此属性在xhtml标准网页或者更简单的说是带<!DOCTYPE ..>标签的页面里得到的结果是0,如果不要此标签则一切正常,那么在xhtml页面怎么获得body的坐标呢,当然有办法-使用 document.documentElement来取代document.body,可以这样写
例:
var top = document.documentElement.scrollTop || document.body.scrollTop;
在javascript里||是个好东西,除了能用在if等条件判断里,还能用在变量赋值上。那么上例等同于下例。
例:
var top = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop;
这么写可以得到很好的兼容性。

相反,如果不做声明的话,document.documentElement.scrollTop反而会显示为0。


得到各个属性如下:

网页可见区域宽: document.body.clientWidth;
网页可见区域高: document.body.clientHeight;
网页可见区域宽: document.body.offsetWidth   (包括边线的宽);
网页可见区域高: document.body.offsetHeight  (包括边线的宽);
网页正文全文宽: document.body.scrollWidth;
网页正文全文高: document.body.scrollHeight;
网页被卷去的高: document.body.scrollTop;
网页被卷去的左: document.body.scrollLeft;
网页正文部分上: window.screenTop;
网页正文部分左: window.screenLeft;
屏幕分辨率的高: window.screen.height;
屏幕分辨率的宽: window.screen.width;
屏幕可用工作区高度: window.screen.availHeight;
屏幕可用工作区宽度:window.screen.availWidth;


scrollHeight: 获取对象的滚动高度。 
scrollLeft:设置或获取位于对象左边界和窗口中目前可见内容的最左端之间的距离
scrollTop:设置或获取位于对象最顶端和窗口中可见内容的最顶端之间的距离
scrollWidth:获取对象的滚动宽度
offsetHeight:获取对象相对于版面或由父坐标 offsetParent 属性指定的父坐标的高度
offsetLeft:获取对象相对于版面或由 offsetParent 属性指定的父坐标的计算左侧位置
offsetTop:获取对象相对于版面或由 offsetTop 属性指定的父坐标的计算顶端位置 
event.clientX 相对文档的水平座标
event.clientY 相对文档的垂直座标

event.offsetX 相对容器的水平坐标
event.offsetY 相对容器的垂直坐标 
document.documentElement.scrollTop 垂直方向滚动的值
event.clientX+document.documentElement.scrollTop 相对文档的水平座标+垂直方向滚动的量
Post by molong on 2009-05-19 11:57 PM  #1

要获取当前页面的滚动条纵坐标位置,用:
document.documentElement.scrollTop;
而不是:
document.body.scrollTop;
documentElement 对应的是 html 标签,而 body 对应的是 body 标签。

在标准w3c下,document.body.scrollTop恒为0,需要用document.documentElement.scrollTop来代替;
如果你想定位鼠标相对于页面的绝对位置时,你会发现google里面1000篇文章里面有999.99篇会让你使用 event.clientX+document.body.scrollLeft,event.clientY+document.body.scrollTop,如果你发现你的鼠标定位偏离了你的想象,请不要奇怪,这是再正常不过的事情。
ie5.5之后已经不支持document.body.scrollX对象了。
所以在编程的时候,请加上这样的判断
if (document.body && document.body.scrollTop && document.body.scrollLeft)
{
    top=document.body.scrollTop;
    left=document.body.scrollleft;   
}
if (document.documentElement && document.documentElement.scrollTop && document.documentElement.scrollLeft)
{
    top=document.documentElement.scrollTop;
    left=document.documentElement.scrollLeft;
}

一个简单的广告代码:
<script language="JavaScript" type="text/javascript">
lastScrollY=0;
function heartBeat(){
var diffY;
if (document.documentElement && document.documentElement.scrollTop)
diffY = document.documentElement.scrollTop;
else if (document.body)
diffY = document.body.scrollTop;
else
{/*Netscape stuff*/}
percent=.1*(diffY-lastScrollY);
if(percent>0)percent=Math.ceil(percent);
else percent=Math.floor(percent);
document.getElementById("lovexin12").style.top=parseInt(document.getElementById
("lovexin12").style.top)+percent+"px";
document.getElementById("lovexin14").style.top=parseInt(document.getElementById
("lovexin12").style.top)+percent+"px";
lastScrollY=lastScrollY+percent;
}
suspendcode12="<DIV id=\"lovexin12\" style='left:30px;POSITION:absolute;TOP:120px;'><a href=http://qingdao.51cityhome.com/zhaomudetail/zhaomu.htm target=_blank><img src=/images/left.jpg /></a></div>";
suspendcode14="<DIV id=\"lovexin14\" style='right:30px;POSITION:absolute;TOP:120px;'><a href=http://qingdao.51cityhome.com/zhaomudetail/zhaomu.htm target=_blank><img src=/images/right.jpg /></a></div>";
document.write(suspendcode12);
document.write(suspendcode14);
window.setInterval("heartBeat()",1);
</script>
分享到:
评论

相关推荐

    用javascript地址栏显示源码

    用javascript地址栏显示源码: javascript:s=document.documentElement.outerHTML;document.write('&lt;body&gt;&lt;/body&gt;');document.body.innerText=s;

    获取页面长宽和滚动条的位置

    } else if (document.documentElement && document.documentElement.clientHeight) { // IE 6 Strict Mode winW = document.documentElement.clientWidth; winH = document.documentElement....

    javascript scrollTop正解使用方法

    在实际应用中经常会遇到以下问题:document.documentElement.scrollTop在Chrome里总为0document.body.scrollTop 在IE和firefox里总为01、各浏览器下 window.pageYOffset/document.documentElement.scrollTop/...

    javascript获取网页宽高方法汇总

    document.body.offsetWidth – 网页可见区域宽,包括边线和滚动条的宽 document.body.offsetHeight – 网页可见区域高,包括边线和滚动条的高[FF,chrom下是整个页面高,IE opera 下正常] document.body.scrollWidth ...

    地址栏显示源码.js

    地址栏显示源码.js地址栏显示源码.js地址栏显示源码.js

    IE与FF下javascript获取网页及窗口大小的区别详解

    在新定义出来的标准下 document.documentElement.clientHeight在IE和火狐里都能获取正确值,下面一篇文章详细介绍了获取各种浏览器可见窗口大小这方面的差别: [removed]function getInfo(){ var s = “”; s += ...

    各种 javascript 弹出层 div

    var bHeight=parseInt(document.documentElement.scrollHeight)(document.documentElement.scrollHeight); if(isIe){ setSelectState('hidden');} var back=document.createElement("div"); back.id="back"; ...

    【JavaScript源代码】vue实现锚点定位功能.docx

    vue实现锚点定位功能 ...Firefox: document.documentElement.scrollTop Safari: window.pageYOffset  我这里是局部元素滚动,因此稍有差异。先附上html及css代码块: scroll-content为滚动区域, operation-btn为

    index.html

    let maxH = document.documentElement.clientHeight - 50, maxW = document.documentElement.clientWidth - 50; //监听resize,改变maxH,maxW window.onresize = function(){ maxH = document....

    深入浅析JavaScript中的scrollTop

    document.body.scrollTop和document.documentElement.scrollTop都可以 2、各浏览器下 scrollTop的差异 IE6/7/8/9/10: 对于没有doctype声明的页面里可以使用 document.body.scrollTop 来获取 scrollTop高度 ; ...

    网页QQ在线客服源码程序ASP+JS+XML漂浮版(绝对可用)

    找的前一个该程序,其中的document.body在ttp://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd声明中已经无效,所以造成了页面上不能随页面浮动,我已经把document.body已替换成document.documentElement,现在...

    原生javascript实现图片弹窗交互效果

    var sScrollTop = document.body.scrollTop || document.documentElement.scrollTop,  sWindow_h = document.documentElement.clientHeight,  t_h = parseInt(this.getCss(this.getId(‘gy_photoBox_head’),’...

    document-scroll-element:确定可滚动的文档元素

    例如,Firefox在document.documentElement ( &lt;html&gt; )上滚动,而Safari在document.body ( &lt;body&gt; )上滚动。 此功能确定哪个文档元素是可滚动的。 例如,为了使滚动动画,通常需要编写: $('html...

    JavaScript获取鼠标坐标的函数(兼容IE、FireFox、Chrome)

    还好网上什么都有,上网找了一个浏览器兼容性最佳的函数,经测试... return { x:e.clientX+document.body.scrollLeft+document.documentElement.scrollLeft, y:e.clientY+document.body.scrollTop+document.document

    javascript 获取页面的高度及滚动条的位置的代码

    代码如下: var Viewport={ top : function(){ return window.pageYOffset || document.documentElement && document.documentElement.scrollTop || document.body.scrollTop; }, height : function(){ return window...

    js使用小技巧

    document.documentElement.innerHTML 第一个style标签 document.styleSheets[0] style标签里的第一个样式 document.styleSheets[0].rules[0] 防止点击空链接时,页面往往重置到页首端。 &lt;a href="javascript...

    JS JQUERY实现滚动条自动滚到底的方法

    设置页面加载时滚动条自动滚到底的方法: jQuery: ... var h = document.documentElement.scrollHeight || document.body.scrollHeight;  window.scrollTo(h,h); } 以上2种方法均可以实现页面加

    jQuery 弹窗对话框拖动 非插件

    posx = e.clientX + document.body.scrollLeft + document.documentElement.scrollLeft; posy = e.clientY + document.body.scrollTop + document.documentElement.scrollTop; } gapx = (posx-...

    淘宝大图轮播

    document.documentElement.scrollLeft : document.body.scrollLeft); var y = e.clientY + (document.documentElement.scrollTop?document.documentElement.scrollTop : document.body.scrollTop); return {x:x,y:...

    JavaScript运动框架 解决防抖动问题、悬浮对联(二)

    var scrollTop = document.documentElement.scrollTop || document.body.scrollTop; offsetTop:此属性可以获取元素的上外缘距离最近采用定位父元素内壁的距离,如果父元素中没有采用定位的,则是获取上外边缘距离...

Global site tag (gtag.js) - Google Analytics