我用到的clientHeight等属性

63 篇文章 1 订阅
62 篇文章 0 订阅

弹出浮动层,让起居于浏览器底部是需求中,我用到的各种height有:

1  浏览器可见区域高度:document.documentElement.clientHeight;

   ***document.body.clientHeight*** 是整个页面内容的高度,而非浏览器可见区域的高度

2 滚动条已滚动的高度:document.documentElement.scrollTop;

   ***chrome 中 document.body.scrollTop才是滚动条滚过的高度***

   那么要得到滚动条的高度:有一个技巧:

var sTop=document.body.scrollTop+document.documentElement.scrollTop;

这两个值总会有一个恒为0,所以不用担心会对真正的scrollTop造成影响。一点小技巧,但很实用。

3 offsetTop、offsetLef

offsetParent 不同于parentNode ,offsetParent 返回的是在结构层次中与这个元素最近的position为absolute\relative\static的元素或者body

<style>
body{margin:0;padding:0;}
.absoluteParent{position:absolute;background:red;padding:10px;margin:10px;border:1px solid blue;width:100%;height:80px;}
.sible{background:blue;width:100%;height:20px;}
.parent {background:yellow;width:100%;height:20px;}
#node{height:15px;width:100%;background:black;padding:5px;margin:7px;}
</style>

<div class="absoluteParent">
		<div class=sible></div>
    <div class=parent>
			<div id=node></div>
	</div>
</div>
从这个例子中,我们学习了两点
一 node 的offsetParent 是absoluteParent ,他的parentNode 是 parent;当absoluteParent的position去掉后,node的offsetParent 是body

二 通过offsetLeft属性,我们得到node节点距离offsetParent的左距离。其中左距离,有关键的两个节点需要注意。offsetParent节点从padding算起,node节点从margin开始算起,算这两个量之间的距离,即是左距离。(通过测试,调整absoluteParent 的margin 和 border 并不改变offsetLeft的值;调整node的border和padding属性,也不会改变offsetLeft的值)

offsetLeft 来计算某个元素距body的左距离,其中type可以为offsetLeft 和offsetTop

getPosition = function (obj, type) {
    //offsetLeft or offsetTop
    var distance = 0;
    while (obj && !__.lang.isEmpty(obj.offsetParent)) {
      distance += obj[type];
      obj = obj.offsetParent;
    }
    distance += parseInt(__.doc.body[type], 10);
    return distance;
  };

4 height \ offsetHeight \clientHeight获取元素的高度

height: 为css中定义的height属性的高度,如果为定义,则为undefined

offsetHeight: 元素的内容高度+padding+border

clientHeight:元素的可见区域高度,可以理解为内容高度(如果有overflow:scroll属性,clientHeight的值再减去scrollbar的高度值,因为内容可见区域因为有scrollbar而变小了)




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值