Effet dégradé des propriétés d'affichage CSS
P粉608647033
2023-08-21 11:08:32
<p>Je suis actuellement en train de concevoir une "super liste déroulante" CSS - essentiellement une liste déroulante CSS pure, mais avec différents types de contenu. </p>
<p>Actuellement, <strong>, il semble que les effets de transition CSS 3 ne s'appliquent pas à l'attribut "display"</strong>, c'est-à-dire qu'il n'y a aucun moyen de passer de <code>display: none</ code> à < code>afficher : bloc</code> </p>
<p>Dans l'exemple ci-dessus, existe-t-il un moyen de faire apparaître en fondu le menu de deuxième niveau lorsque quelqu'un survole l'élément de menu supérieur ? </p>
<p>Je sais que vous pouvez utiliser des effets de transition sur l'attribut <code>visibility:</code>, mais je n'arrive pas à trouver un moyen de l'utiliser efficacement. </p>
<p>J'ai également essayé d'utiliser la hauteur, mais les résultats ont été terribles. </p>
<p>Je sais aussi que cela peut être facilement réalisé en utilisant JavaScript, mais je voulais me mettre au défi d'utiliser simplement CSS, mais j'ai l'impression d'être un peu dépassé. </p>
Vous devez masquer l'élément d'une autre manière pour qu'il fonctionne correctement.
J'ai obtenu l'effet en combinant deux
<div>
都设置为绝对定位,并将隐藏的一个设置为opacity: 0
.Si vous ajoutez
display
属性从none
切换到block
, l'effet de transition pour les autres éléments ne se produira pas.Pour résoudre ce problème, autorisez toujours les éléments à être
display: block
, mais masquez les éléments de l'une des manières suivantes :height
设置为0
.opacity
设置为0
.overflow: hidden
.Il y a peut-être d'autres solutions, mais si vous basculez l'élément sur
display: none
, vous ne pourrez pas effectuer la transition. Par exemple, vous pourriez essayer quelque chose de similaire à :Mais cela ne fonctionnera pas. D'après mon expérience, j'ai constaté que cela n'a aucun effet. Vous devez donc toujours conserver les éléments
- mais vous pouvez contourner ce problème en :Vous pouvez connecter deux effets de transition ou plus, et
visibility
cela s'avère pratique.