[英]jQuery hide() method do show element with display:none !important
[英]!important and display:none and .height() weirdness
昨天我在使用一段JS代码时发现了一些奇怪的东西。 我有一个隐藏的div
( display:none
),我在JS的一些计算中使用它的高度。 这一切都很好,直到我添加了我的“隐藏”类( display:none !important
)。
突然,高度始终为0
。 在显示屏上没有其他任何变化!important
。
经过一番挖掘,我把问题缩小到了一些我觉得很奇怪的东西:
#b { display:none; } /* reported height is 36 */
#c { display:none !important; } /* reported height is 0 */
我创建了一个非常基本的JSFiddle来隔离它。 它还使用香草JS来获得高度,这看起来很好/正如预期的那样。
似乎jQuery错误地报告了不可见DIV的高度,而且!important
行为正确。
这是jQuery中的错误吗?
我不认为这是jQuery中的一个错误,jQuery设置display
block
一小段时间来计算height
,当你设置!important
甚至是ovverriden,那就是全部。
我想我们需要更多解释
目前基本上没有办法让height
从DOM元素,如果它不具有任何高度。 因此,当display
为none
, height
不存在或zero
。
在jQuery中,如果display
为none
,我们可以将display
设置为block
一小段时间以获得height
,在此inline
样式中通常由jQuery更改。
<div id="something" style="display:block">/div>
然后是height
,但是此时如果你在css中设置了display:none!important
,这个内联样式将不起作用,并且height
计算变为zero
。
在我个人看来,最好不要使用!重要因为它使您的代码/演示文稿难以阅读。 Css通常有多种方式来覆盖样式。
如果您仍想继续,内联!important
可能会覆盖您的样式,并使用jQuery show为第二种技术自己计算高度,或者只是覆盖jQuery函数来计算高度:)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.