Js如何获取display为none的元素的宽高

0x00 原理

    在css中visibility:hidden为不可见属性,但使用visibility:hidden隐藏的元素有物理尺寸,因此这里的原理就是将display:none的元素转换为isibility:hidden的元素,并计算宽高后改回来;

0x01 弊端

    此方法有一个弊端,就是可能会导致闪烁的现象(当计算时间较长时);如果实际过程中仅仅只是计算长宽,那么往往可以忽略掉这个时间,也就是等于没有闪烁;并且将元素设为绝对定位脱离文档流,这样便不会影响其他元素,加上极短的闪烁时间,便可以做到不改变页面便可获取宽高。

0x02 示例

//获取元素的物理尺寸,参数:element隐藏的元素节点;targetEl需要获取尺寸的目标元素
this.getSize = function(element,targetEl) {
    //增加隐藏,防止element在取消隐藏时闪烁; position: absolute;和display:none看需要是否加上
    let _addCss = { visibility: 'hidden' };
    let _oldCss = {};
    let _width;
    let _height;
    if (this.getStyle(element, "display") != "none") {
        return { width: !!targetEl ? targetEl.offsetWidth  : element.offsetWidth , height: !!targetEl ? targetEl.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值