获取隐藏元素的尺寸


οnlοad=function(){
//由于此时元素的display为none,因此无法获取尺寸,固输出0
console.log(div.offsetWidth,div.offsetHeight);
//保存原来的属性值
var display=div.style.display,
position=div.style.position,
left=div.style.left;
//设置新属性
div.style.display="block";
div.style.position="absolute";
div.style.left="-10000px";
//由于元素已经参与渲染,所以可以获取到尺寸
console.log(div.offsetWidth,div.offsetHeight);
//还原被修改的属性
div.style.display=display;
div.style.position=position;
div.style.left=left;
};
  这个方法太暴力了!虽然这对于一般的情况而言并没有什么问题,它也是最方便的方法。但它强制性的把一个元素丢到了流外,这会导致一些继承性的东西失效。考虑元素是自适应容器宽度的情况,这样不分青红皂白的就把元素丢到流外显然会得到错误的结果。比如把上面例子的HTML改成这样,输出的结果还是一样的,但事实上真正渲染出来的结果不会那样的。

div {display:none;margin:20px;}



















评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值