CSS显示属性的渐变效果
P粉608647033
2023-08-21 11:08:32
<p>我目前正在设计一个CSS的“超级下拉菜单” - 基本上是一个常规的纯CSS下拉菜单,但其中包含不同类型的内容。</p>
<p>目前,<strong>似乎CSS 3的过渡效果不适用于“display”属性</strong>,也就是说,无法从<code>display: none</code>过渡到<code>display: block</code>(或任何组合)。</p>
<p>在上面的示例中,有没有办法使第二级菜单在有人悬停在顶级菜单项上时“淡入”?</p>
<p>我知道可以在<code>visibility:</code>属性上使用过渡效果,但我无法想出有效使用的方法。</p>
<p>我还尝试使用高度,但结果非常糟糕。</p>
<p>我也知道使用JavaScript可以轻松实现这一点,但我想挑战自己只使用CSS,但我觉得我有点力不从心。</p>
您需要通过其他方式隐藏元素以使其正常工作。
我通过将两个
<div>
都设置为绝对定位,并将隐藏的一个设置为opacity: 0
来实现效果。如果您将
display
属性从none
切换到block
,则其他元素的过渡效果将不会发生。为了解决这个问题,始终允许元素为
display: block
,但通过以下任何方式隐藏元素:height
设置为0
。opacity
设置为0
。overflow: hidden
的另一个元素的框架之外。可能还有更多解决方案,但如果将元素切换为
display: none
,则无法执行过渡。例如,您可能尝试类似于以下内容的操作:但这将不会起作用。根据我的经验,我发现这样做没有任何效果。
因此,您始终需要保持元素的
display: block
- 但您可以通过以下方式绕过此问题:您可以连接两个或更多的过渡效果,而
visibility
此时会很方便。