如何在DIV可见之前获取clientWidth和clientHeight

And*_*oom 9 javascript

我想获得DIV元素的尺寸(用于在光标位置显示弹出菜单)style.display='none;',但是DIV的尺寸总是返回0.我似乎能够获得尺寸的唯一方法是制作DIV style.display='block;'在0,0,然后将其移动到所需位置,但看起来很尖锐.

我已经尝试在可见屏幕区域外看到DIV,但这不起作用.DIV被隐藏的时候有没有办法获得clientWidthclientHeight价值?

itd*_*itd 13

如果您的DIV不可见,您将无法获得其尺寸.

但是,有一种解决方法.你的div必须是"可见的",但这并不意味着它的不透明度和位置必须是1和相对的.

将不透明度设置为0,将位置设置为"绝对",您将能够获得DIV尺寸.


编辑

由于我认为会有更多人遇到类似的问题,我觉得我应该多解释一下我的答案.

如果您尝试使用JavaScript获取隐藏元素的大小,则始终为0.

因此,有一些技术可以在不向用户显示元素的情况下获得实际大小.我最喜欢的是我上面已经写过的那个.以下是更详细的步骤:

  1. 您将元素不透明度设置为0.这样,在获取尺寸时,它不会显示给最终用户.

  2. 您将元素位置设置为"绝对".这样它就不会占用任何空间.

  3. 现在将显示设置为"内联块"是安全的.

  4. 你阅读元素维度.这一次,你将获得真正的价值.

  5. 将显示设置回"隐藏"并将不透明度和位置设置回原始值.

现在你有一个隐藏元素的大小.