Javascript !重要提示和显示:无和.height()古怪
我昨天在处理一段JS代码时发现了一些奇怪的东西。我有一个隐藏的Javascript !重要提示和显示:无和.height()古怪,javascript,jquery,css,Javascript,Jquery,Css,我昨天在处理一段JS代码时发现了一些奇怪的东西。我有一个隐藏的div(display:none),我在JS的一些计算中使用了它的高度。这一切都很正常,直到我添加了我的“隐藏”类(它有display:none!important) 突然,高度总是0。除了,没有其他变化!重要信息显示在显示屏上 经过一番挖掘,我把问题缩小到了我觉得很奇怪的地方: #b{display:none;}/*报告的高度为36*/ #c{显示:无!重要;}/*报告的高度为0*/ 我已经创建了一个非常基本的方法来隔离它。它还使
div
(display:none
),我在JS的一些计算中使用了它的高度。这一切都很正常,直到我添加了我的“隐藏”类(它有display:none!important
)
突然,高度总是0
。除了,没有其他变化!重要信息
显示在显示屏上
经过一番挖掘,我把问题缩小到了我觉得很奇怪的地方:
#b{display:none;}/*报告的高度为36*/
#c{显示:无!重要;}/*报告的高度为0*/
我已经创建了一个非常基本的方法来隔离它。它还使用vanilla JS来获取高度,这似乎很好/正如预期的那样
jQuery似乎不正确地报告了不可见div的高度,这是!重要信息
操作正确
这是jQuery中的一个bug吗 我不认为这是jQuery中的错误,当您设置
时,jQuery会将显示设置为块,计算高度的时间为几分之一秒!重要信息
即使是ovverriden,也仅此而已
我想我们需要更多的解释
如果元素没有任何高度,则基本上无法从DOM中获取元素的高度。因此,当显示
为无
时,高度
不存在或为零
在jQuery中,如果display
是none
,我们可以将display
设置为block
几秒钟以获得高度
,在此期间内联
样式会像jQuery通常所做的那样进行更改
<div id="something" style="display:block">/div>
/div>
然后取高度
,但此时如果设置了显示:无!重要信息
在css中,此内联样式不起作用,height
computed变为zero
在我个人看来,最好不要使用!这很重要,因为它使您的代码/演示文稿难以阅读。Css通常有多种方式覆盖样式
如果仍要继续,请使用内联!重要信息
可能会覆盖您的样式,并使用jQuery show作为第二种技术自己计算高度,或者只需覆盖jQuery函数来计算高度:)最有可能的是您的显示:无代码>不带!重要信息
被否决。Display none确实应该返回0可能重复的@user3008011 No,请参阅小提琴。@DAC84,它不包括!重要用途如果您手动设置高度,它会报告。为什么$('#c')
的高度是0呢?@JamesDonnelly,因为!重要的可以重写甚至是内联样式,我们通常认为它不会被任何东西所覆盖。answer@sabithpocker我想你是对的。谢谢