我知道t2
会从页面中删除元素,而display: none
会隐藏元素,但会保留空间。
我的问题是,在元素上一起使用这两种样式是一个好主意吗?如果是这样,两者在一起使用时的优先顺序是什么?
我的用例是这样的:
visibility: hidden
时,无论如何
shouldRemoveElement = true
应该从页面中删除div。
当shouldHideElement
时,div应该尊重
基于shouldRemoveElement = false
值的visibility
样式。
虽然这可以按预期工作,但我想知道它是否会引起任何意外的副作用。
示例代码:
shouldHideElement
答案 0 :(得分:1)
将display: none
与visibility: hidden
一起使用没有意外的副作用,如果这就是您所要求的。由于display: none
会从布局中删除元素的框,因此无论您将其设置为什么值,visibility
都不会产生任何影响,因为没有任何内容可以显示或隐藏。
通过从display
更改其none
属性确实将元素返回到布局后,当时visibility
的任何值都将恢复生效,该元素将继续通过现在生成的框来影响其周围的布局。
答案 1 :(得分:0)
首先,根本没有优先级。两者都用于不同的情况。您无法相互覆盖,display: none
无法使用visibility: visible
覆盖。
实际答案存在于你的问题中(“我知道显示:none从页面中删除元素,而visibility:hidden隐藏元素但保留空间”)。
display
和visibility
两者都用于不同目的只有共同特征是从用户眼睛隐藏元素但都保持元素在DOM结构中。因此,在这两种情况下,您都可以从DOM树中将元素作为对象进行访问。这就是为什么我们不能说display: none
删除元素。
我们可以使用opacity: 0
通过其他方式隐藏元素,但与display
和visibility
的区别是mouse
events
{}} {} 1}}让我们有机会应用所有opacity
假设mouse events
,hover
,mousedown
,mouseup
等。
答案 2 :(得分:0)
最后写的CSS将适用,除非它被定义为!important
,display
和visibility
是两个不同的CSS属性,你不能优先考虑它们