Je suis en train de concevoir un «menu déroulant» CSS - essentiellement un menu déroulant CSS uniquement, mais qui contient différents types de contenu.
Pour le moment, il semble que les transitions CSS 3 ne s'appliquent pas à la propriété 'display' , c'est-à-dire que vous ne pouvez faire aucune sorte de transition de display: none
à display: block
(ou toute combinaison).
Existe-t-il un moyen pour le menu de deuxième niveau de l'exemple ci-dessus de 'fondre' quand quelqu'un survole l'un des éléments de menu de niveau supérieur?
Je sais que vous pouvez utiliser des transitions sur la visibility:
propriété, mais je ne peux pas penser à un moyen de l'utiliser efficacement.
J'ai également essayé d'utiliser la hauteur, mais cela a échoué lamentablement.
Je suis également conscient qu'il est trivial d'y parvenir en utilisant JavaScript, mais je voulais me mettre au défi d'utiliser uniquement CSS, et je pense que je viens un peu court.
la source
z-index:0
aussi.visibility: hidden
sauf si vous souhaitez que les lecteurs d'écran le lisent (contrairement aux navigateurs classiques). Il ne définit que la visibilité de l'élément (comme direopacity: 0
), et il est toujours sélectionnable, cliquable et quoi qu'il soit; ce n'est tout simplement pas visible.pointer-events
en charge dans IE 8,9,10, donc ce n'est pas toujours correctRéponses:
Vous pouvez concaténer deux transitions ou plus, et
visibility
c'est ce qui est utile cette fois.(N'oubliez pas les préfixes du vendeur à la
transition
propriété.)Plus de détails sont dans cet article .
la source
Vous devez masquer l'élément par d'autres moyens pour que cela fonctionne.
J'ai accompli l'effet en positionnant les deux
<div>
absolument et en réglant le caché suropacity: 0
.Si vous basculez même la
display
propriété denone
lablock
, votre transition sur d'autres éléments ne se produira pas.Pour contourner ce problème, laissez toujours l'élément être
display: block
, mais masquez-le en ajustant l'un de ces moyens:height
sur0
.opacity
sur0
.overflow: hidden
.Il existe probablement plus de solutions, mais vous ne pouvez pas effectuer de transition si vous basculez l'élément vers
display: none
. Par exemple, vous pouvez essayer d'essayer quelque chose comme ceci:Mais cela ne fonctionnera pas . D'après mon expérience, j'ai trouvé que cela ne faisait rien.
Pour cette raison, vous devrez toujours conserver l'élément
display: block
- mais vous pouvez le contourner en faisant quelque chose comme ceci:la source
visibility:hidden; opacity:0; -webkit-transition: all .2s ease-in-out;
Non seulement cela ne se transforme pas correctement, mais l'élément cible ne s'affichera jamais. QA vous fera défaut, moi et votre maman.height: 0;
et ne le transformez pas, la transition ne fonctionnera pas. J'ai essayé cela simplement en essayant de faire la transition de l'opacité. J'ai dû retirer leheight: 0;
overflow: hidden
merci beaucoup!Au moment de cette publication, tous les principaux navigateurs désactivent les transitions CSS si vous essayez de modifier la
display
propriété, mais les animations CSS fonctionnent toujours bien afin que nous puissions les utiliser comme solution de contournement.Exemple de code (vous pouvez l'appliquer à votre menu en conséquence) Démo :
Ajoutez le CSS suivant à votre feuille de style:
Ensuite, appliquez l'
fadeIn
animation à l'enfant lors du survol des parents (et bien sûr définidisplay: block
):Mise à jour 2019 - Méthode qui prend également en charge la décoloration:
(Un code JavaScript est requis)
la source
height: 0
astuce (pour les transitions) mentionnée ci-dessus ne semble pas fonctionner car la hauteur est définie sur 0 lors de la transition en fondu, mais cette astuce semble fonctionner très bien.display
propriété - il n'y a vraiment aucune raison de le faire. Et même s'ils le faisaient , pourquoi les animations fonctionneraient-elles alors? Vous ne pouvez pas non plus utiliser ladisplay
propriété dans les animations CSS.Je soupçonne que la raison pour laquelle les transitions sont désactivées si elles
display
sont modifiées est à cause de ce que fait réellement l'affichage. Il ne ne change rien qui pourrait peut - être animé en douceur.display: none;
etvisibility: hidden;
sont deux choses entièrement différentes.Les deux ont pour effet de rendre l'élément invisible, mais avec
visibility: hidden;
son rendu dans la mise en page, mais tout simplement pas visiblement .L'élément caché occupe toujours de l'espace et est toujours rendu en ligne ou en tant que bloc ou bloc en ligne ou table ou tout ce que l'
display
élément lui dit de rendre en tant que, et prend de l'espace en conséquence.D'autres éléments ne se déplacent pas automatiquement pour occuper cet espace. L'élément caché ne rend tout simplement pas ses pixels réels à la sortie.
display: none
d'autre part en fait empêche l'élément de rendu entièrement .Il ne prend aucun espace de mise en page.
D'autres éléments qui auraient occupé une partie ou la totalité de l'espace occupé par cet élément s'ajustent maintenant pour occuper cet espace, comme si l'élément n'existait tout simplement pas .
display
n'est pas simplement un autre attribut visuel.Il établit le mode entier rendu de l'élément, par exemple , que ce soit un
block
,inline
,inline-block
,table
,table-row
,table-cell
,list-item
, ou quoi que!Chacun de ceux -ci ont très différentes ramifications de mise en page, et il n'y aurait aucun moyen raisonnable d'encourager ou en douceur les transition (essayez d'imaginer une transition en douceur de
block
lainline
ou vice-versa, par exemple!).C'est pourquoi les transitions sont désactivées si l'affichage change (même si le changement est de ou vers
none
-none
n'est pas simplement l'invisibilité, c'est son propre mode de rendu d'élément qui signifie aucun rendu du tout!).la source
display
ne peuvent pas être transférées en douceur comme les autres propriétés, mais cela ne signifie pas que le timing n'est pas important. Être capable de contrôler quand la transition dedisply:block
sedisplay:none
produit est très important. Tout comme @CurtisYallop l'a décrit. Si je veux faire la transition entreopacity:1
laopacity:0
et puis le changementdisplay:block
dedisplay:none
je devrais être en mesure de le faire.Au lieu de rappels, qui n'existent pas en CSS, nous pouvons utiliser la
transition-delay
propriété.Alors, que se passe-t-il ici?
Lorsque la
visible
classe est ajoutée, les deuxheight
etopacity
démarrent l'animation sans délai (0 ms), mais celaheight
prend 0 ms pour terminer l'animation (équivalent dedisplay: block
) etopacity
prend 600 ms.Lorsque la
visible
classe est supprimée,opacity
démarre l'animation (délai de 0 ms, durée de 400 ms) et la hauteur attend 400 ms, puis seulement instantanément (0 ms) restaure la valeur initiale (équivalente àdisplay: none
dans le rappel d'animation).Notez que cette approche est meilleure que celles utilisées
visibility
. Dans de tels cas, l'élément occupe toujours l'espace sur la page, et il n'est pas toujours adapté.Pour plus d'exemples, veuillez vous référer à cet article .
la source
height:100%
qui peut détruire la mise en page dans certains cas. Excellente solution, si ce n'est pas un problème. L'un des rares fonctionnants bidirectionnels.transition: height 0ms 0ms, opacity 600ms 0ms
, je viens de l'utilisertransition-delay: 0s
.display
ne fait pas partie des propriétés sur lesquelles opère la transition.Voir Propriétés CSS animables pour la liste des propriétés CSS qui peuvent avoir des transitions qui leur sont appliquées. Voir Module de valeurs et d'unités CSS, niveau 4, Combinaison de valeurs: interpolation, addition et accumulation pour savoir comment elles sont interpolées.
Jusqu'à CSS 3 était répertorié en 9.1. Propriétés de CSS (fermez simplement la fenêtre d'avertissement)
La dernière fois que j'ai dû le faire, j'ai utilisé à la
max-height
place, qui est une propriété animable (même si c'était un peu un hack, cela a fonctionné), mais attention, cela peut être très saccadé pour les pages complexes ou les utilisateurs avec un mobile bas de gamme dispositifs.la source
Vous pouvez maintenant ajouter une animation personnalisée à la propriété de bloc.
Démo
Dans cette démo, le sous-menu passe de
display:none
àdisplay:block
et parvient toujours à s'estomper.la source
myfirst
êtreshowNav
ici? Et qu'en est-il de Firefox? Malheureusement, je ne trouve rien sur la page de démonstration que vous mentionnez.Selon le W3C Working Draft, le 19 novembre 2013
display
n'est pas une propriété animable . Heureusement,visibility
est animable. Vous pouvez enchaîner sa transition avec une transition d'opacité ( JSFiddle ):HTML:
CSS:
JavaScript pour les tests:
Notez que si vous rendez le lien transparent, sans le définir
visibility: hidden
, il restera cliquable.la source
0
pour0s
. Apparemment, dans le passé, le navigateur que j'avais utilisé pour tester les temps zéro sans unité pris en charge. Cependant, les temps sans unité ne font pas partie de la recommandation du W3C du 29 septembre 2016 .Modifier: aucun affichage n'est appliqué dans cet exemple.
Ce qui se passe ci-dessus, c'est que 99% de l'affichage de l'animation est réglé pour se bloquer pendant que l'opacité s'estompe. Au dernier moment, la propriété d'affichage est définie sur aucune.
Et le plus important est de conserver la dernière image après la fin de l'animation en utilisant animation-fill-mode: forwards
Voici deux exemples: https://jsfiddle.net/qwnz9tqg/3/
la source
display: none
ne fonctionne pas alors?display: none
n'est jamais réellement implémenté. jsfiddle.net/3e6sduqhMon astuce JavaScript est de séparer le scénario entier en deux fonctions différentes !
Pour préparer les choses, une variable globale est déclarée et un gestionnaire d'événements est défini:
Ensuite, lorsque je cache un élément, j'utilise quelque chose comme ceci:
Pour réapparaître l'élément, je fais quelque chose comme ceci:
Cela fonctionne, jusqu'à présent!
la source
Je suis tombé sur cela aujourd'hui, avec un
position: fixed
modal que je réutilisais. Je ne pouvais pas le garderdisplay: none
, puis l'animer, car il venait juste d'apparaître et etz-index
(valeurs négatives, etc.) faisait aussi des choses étranges.J'utilisais également un
height: 0
toheight: 100%
, mais cela n'a fonctionné que lorsque le modal est apparu. C'est la même chose que si vous avez utiliséleft: -100%
ou quelque chose.Ensuite, il m'a frappé qu'il y avait une réponse simple. Et voilà:
Tout d'abord, votre modal caché. Remarquez le
height
est0
, et consultez laheight
déclaration dans les transitions ... elle a un500ms
, qui est plus long que maopacity
transition . N'oubliez pas que cela affecte la transition de fondu sortant: le retour du modal à son état par défaut.Deuxièmement, votre modal visible. Supposons que vous définissez a
.modal-active
surbody
. Maintenant ,height
c'est le cas100%
, et ma transition a également changé. Je veux que celaheight
soit changé instantanément et que çaopacity
prenne300ms
.Ça y est, ça marche comme un charme.
la source
En prenant quelques-unes de ces réponses et quelques suggestions ailleurs, ce qui suit fonctionne très bien pour les menus de survol (j'utilise cela avec Bootstrap 3, en particulier):
Vous pouvez également utiliser
height
à la place demax-height
si vous spécifiez les deux valeurs car celaheight:auto
n'est pas autorisé avectransition
s. La valeur de survol demax-height
doit être supérieure à celleheight
du menu.la source
J'ai trouvé un meilleur moyen pour ce problème, vous pouvez utiliser l'animation CSS et créer un effet impressionnant pour afficher les éléments.
la source
J'ai rencontré ce problème plusieurs fois et je suis maintenant simplement allé avec:
En ajoutant la classe,
block--invisible
l'ensemble des éléments ne sera pas cliquable, mais tous les éléments derrière elle le seront en raison de celuipointer-events:none
qui est pris en charge par tous les principaux navigateurs (pas d'IE <11).la source
pointer-events
Remplacez
overflow:hidden
paroverflow:visible
. Ça marche mieux. J'utilise comme ça:visible
c'est mieux caroverflow:hidden
agissez exactement comme undisplay:none
.la source
JavaScript n'est pas requis, et aucune hauteur max scandaleusement énorme n'est nécessaire. Au lieu de cela, définissez votre
max-height
sur vos éléments de texte et utilisez une unité relative à la police telle querem
ouem
. De cette façon, vous pouvez définir une hauteur maximale plus grande que votre conteneur, tout en évitant un délai ou un "popping" lorsque le menu se ferme:HTML
CSS
Voir un exemple ici: http://codepen.io/mindfullsilence/pen/DtzjE
la source
Après que la réponse acceptée de Guillermo a été écrite, la spécification de transition CSS du 2012-04-03 a changé le comportement de la transition de visibilité et maintenant il est possible de résoudre ce problème de manière plus courte , sans utiliser de transition-delay:
Le temps d'exécution spécifié pour les deux transitions doit généralement être identique (bien qu'un temps légèrement plus long pour la visibilité ne soit pas un problème).
Pour une version en cours d'exécution, consultez mon article de blog Visibilité sur la transition CSS .
A écrit le titre de la question "Transitions sur l'écran: propriété" et en réponse aux commentaires de Rui Marques et josh à la réponse acceptée:
Cette solution fonctionne dans les cas où elle n'est pas pertinente si la propriété d'affichage ou de visibilité est utilisée (comme c'était probablement le cas dans cette question).
Il ne supprimera pas complètement l'élément comme
display:none
, le rendra simplement invisible, mais il restera toujours dans le flux de documents et influencera la position des éléments suivants.Les transitions qui suppriment complètement l'élément similaire à
display:none
peuvent être effectuées en utilisant la hauteur (comme indiqué par d'autres réponses et commentaires), la hauteur max ou la marge haut / bas, mais aussi voir Comment puis-je faire la transition hauteur: 0; à hauteur: auto; en utilisant CSS? et mon article de blog Solutions de contournement pour les transitions CSS sur les propriétés d'affichage et de hauteur .En réponse au commentaire de GeorgeMillo: Les deux propriétés et les deux transitions sont nécessaires: La propriété d'opacité est utilisée pour créer une animation de fondu d'entrée et de sortie et la propriété de visibilité pour éviter que l'élément ne réagisse toujours aux événements de la souris. Des transitions sont nécessaires sur l'opacité de l'effet visuel et sur la visibilité pour retarder le masquage jusqu'à la fin du fondu.
la source
J'ai finalement trouvé une solution pour moi, en combinant
opacity
avecposition absolute
(pour ne pas occuper d'espace lorsqu'il est caché).la source
Je soupçonne que n'importe qui commençant des transitions CSS découvre rapidement qu'elles ne fonctionnent pas si vous modifiez la propriété d'affichage (bloc / aucun) en même temps. Une solution de contournement qui n'a pas encore été mentionnée est que vous pouvez continuer à utiliser
display:block/none
pour masquer / afficher l'élément, mais définissez son opacité sur 0 afin que même lorsqu'il l'estdisplay:block
, il soit toujours invisible.Ensuite, pour l'ajouter en fondu, ajoutez une autre classe CSS telle que "on" qui définit l'opacité à 1 et définit la transition pour l'opacité. Comme vous l'avez peut-être imaginé, vous devrez utiliser JavaScript pour ajouter cette classe "on" à l'élément, mais au moins vous utilisez toujours CSS pour la transition réelle.
PS Si vous vous trouvez dans une situation où vous devez faire les deux
display:block
et ajouter la classe "on", en même temps, différez cette dernière en utilisant setTimeout. Sinon, le navigateur ne voit que les deux choses en même temps et désactive la transition.la source
display:none
.C'est aussi simple que ce qui suit :)
Faites-le disparaître, puis faites-le
height 0;
. Assurez-vous également d'utiliser avant pour qu'il reste dans l'état final.la source
Cette solution a une excellente compatibilité, et je ne l'ai pas encore vue:
Explication : il utilise l'
visibility: hidden
astuce (qui est compatible avec «afficher et animer» en une seule étape), mais il utilise la combinaisonposition: absolute; z-index: -1; pointer-events: none;
pour s'assurer que le conteneur caché ne prend pas de place et ne répond pas aux interactions des utilisateurs .la source
position
alambic fera trembler l'élément, non?position: absolute
signifie que l'élément ne prend pas de place, comme décrit dans l'explication. Quand il passe àposition: static
et apparaît, il prendra de l'espace comme un élément normal, ce qui est le point de cette question. Je vous suggère de l'essayer!Vous pouvez faire en sorte que cela fonctionne de la manière naturelle que vous attendiez - en utilisant l'affichage - mais vous devez limiter le navigateur pour le faire fonctionner, en utilisant Javascript ou comme d'autres ont suggéré une astuce sophistiquée avec une balise à l'intérieur d'une autre. Je ne me soucie pas de la balise interne car elle complique davantage le CSS et les dimensions, alors voici la solution Javascript:
https://jsfiddle.net/b9chris/hweyecu4/17/
Commençant par une boîte comme:
Une boîte cachée.
Nous allons utiliser une astuce trouvée dans un Q / A connexe, en vérifiant offsetHeight pour étrangler le navigateur instantanément:
https://stackoverflow.com/a/16575811/176877
Tout d'abord, une bibliothèque formalisant l'astuce ci-dessus:
Ensuite, nous allons l'utiliser pour révéler une boîte et l'ajouter en fondu:
Cela fait fondre la boîte dans et hors. Ainsi,
.noTrnsn()
se éteint transitions, puis on enlève lahidden
classe, qui fait oscillerdisplay
denone
sa valeur par défaut,block
. Nous avons ensuite défini l'opacité sur 0 pour nous préparer à un fondu. Maintenant que nous avons réglé la scène, nous réactivons les transitions, avec.resumeTrnsn()
. Et enfin, lancez la transition en définissant l'opacité sur 1.Sans la bibliothèque, le changement à afficher et le changement à l'opacité nous auraient donné des résultats indésirables. Si nous supprimions simplement les appels de bibliothèque, nous n'obtiendrions aucune transition.
Notez que ce qui précède ne redéfinit pas l'affichage à la fin de l'animation de fondu. Nous pouvons devenir plus fantaisistes cependant. Faisons-le avec un fondu qui augmente à partir de 0.
Fantaisie!
https://jsfiddle.net/b9chris/hweyecu4/22/
Nous passons maintenant à la fois à la hauteur et à l'opacité. Notez que nous ne sommes pas réglage en hauteur, ce qui signifie qu'il est la valeur par défaut,
auto
. Conventionnellement, cela ne peut pas être effectué - le passage de l'auto à une valeur de pixel (comme 0) ne vous procurera aucune transition. Nous allons contourner cela avec la bibliothèque et une autre méthode de bibliothèque:Il s'agit d'une méthode pratique qui nous permet de participer à la file d'attente fx / animation existante de jQuery, sans nécessiter le cadre d'animation qui est désormais exclu dans jQuery 3.x. Je ne vais pas expliquer comment fonctionne jQuery, mais il suffit de dire, la
.queue()
et la.stop()
plomberie que jQuery fournit de l' aide nous empêchons nos animations de marcher sur l'autre.Animons l'effet de glissement vers le bas.
Ce code commence par vérifier
#box
et s'il est actuellement caché, par vérifier sa classe. Mais il accomplit davantage en utilisant l'wait()
appel de bibliothèque, en ajoutant lahidden
classe à la fin de l'animation de glissement / fondu, que vous vous attendriez à trouver si elle est en fait cachée - quelque chose que l'exemple plus simple ci-dessus ne pourrait pas faire. Cela se produit également pour permettre d'afficher / masquer l'élément encore et encore, ce qui était un bogue dans l'exemple précédent, car la classe cachée n'a jamais été restaurée.Vous pouvez également voir les changements de CSS et de classe appelés
.noTrnsn()
pour définir généralement le décor des animations, y compris prendre des mesures, comme mesurer la hauteur finale#box
sans le montrer à l'utilisateur, avant d'appeler.resumeTrnsn()
, et l'animer à partir de cet ensemble complet étape vers ses valeurs CSS d'objectif.Ancienne réponse
https://jsfiddle.net/b9chris/hweyecu4/1/
Vous pouvez le faire passer en un clic avec:
Le CSS est ce que vous devinez:
La clé réduit la propriété d'affichage. En supprimant la classe cachée, puis en attendant 50 ms, puis en démarrant la transition via la classe ajoutée, nous la faisons apparaître puis nous nous développons comme nous le voulions, au lieu de simplement la faire apparaître sur l'écran sans aucune animation. La même chose se produit dans l'autre sens, sauf que nous attendons que l'animation soit terminée avant d'appliquer caché.
Remarque: j'abuse
.animate(maxWidth)
ici pour éviter lessetTimeout
conditions de course.setTimeout
est rapide pour introduire des bogues cachés lorsque vous ou quelqu'un d'autre récupérez du code sans le savoir..animate()
peut facilement être tué avec.stop()
. Je l'utilise simplement pour mettre un retard de 50 ms ou 2000 ms sur la file d'attente fx standard où il est facile de trouver / résoudre par d'autres codeurs en s'appuyant sur cela.la source
J'ai eu un problème similaire auquel je n'ai pas trouvé de réponse. Plus tard, quelques recherches sur Google m'ont conduit ici. Considérant que je n'ai pas trouvé la réponse simple que j'espérais, je suis tombé sur une solution à la fois élégante et efficace.
Il s'avère que la
visibility
propriété CSS a une valeurcollapse
qui est généralement utilisée pour les éléments de table. Cependant, s'il est utilisé sur d'autres éléments, il les rend effectivement masqués , à peu près commedisplay: hidden
mais avec la possibilité supplémentaire que l'élément ne prenne pas de place et vous pouvez toujours animer l'élément en question.Voici un exemple simple de cela en action.
la source
La solution universelle la plus simple au problème est: n'hésitez pas à spécifier
display:none
dans votre CSS, mais vous devrez le changer enblock
(ou quoi que ce soit d'autre) en utilisant JavaScript, puis vous devrez également ajouter une classe à votre élément en question qui en fait fait la transition avec setTimeout () . C'est tout.C'est à dire:
Cela a été testé dans les derniers navigateurs sains. Évidemment, cela ne devrait pas fonctionner dans Internet Explorer 9 ou une version antérieure.
la source
Je pense que SalmanPK a la réponse la plus proche. Il fait fondre un élément vers l'intérieur ou l'extérieur, avec les animations CSS suivantes. Cependant, la propriété d'affichage ne s'anime pas en douceur, seulement l'opacité.
Si vous souhaitez animer l'élément en passant d'un bloc d'affichage à aucun affichage, je ne vois pas que c'est actuellement possible uniquement avec CSS. Vous devez obtenir la hauteur et utiliser une animation CSS pour diminuer la hauteur. Cela est possible avec CSS comme indiqué dans l'exemple ci-dessous, mais il serait difficile de connaître les valeurs de hauteur exactes dont vous avez besoin pour animer un élément.
Exemple jsFiddle
CSS
Javascript
la source
Vous pouvez le faire avec des événements de transition, vous créez donc deux classes CSS pour la transition, l'une contenant l'animation, l'autre affichant l'état aucun. Et vous les changez une fois l'animation terminée? Dans mon cas, je peux afficher à nouveau les divs si j'appuie sur un bouton et supprimer les deux classes.
Essayez l'extrait ci-dessous ...
la source
Si vous utilisez jQuery pour définir vos classes, cela fonctionnera à 100%:
Bien sûr, vous pouvez simplement utiliser jQuery
.fadeIn()
et les.fadeOut()
fonctions, mais l'avantage de définir des classes à la place est au cas où vous voudriez passer à une valeur d'affichage autre queblock
(comme c'est le cas par défaut avec.fadeIn()
et.fadeOut()
).Ici, je passe à l'affichage
flex
avec un bel effet de fondu.la source
Au lieu de l'utiliser,
display
vous pouvez stocker l'élément «hors écran» jusqu'à ce que vous en ayez besoin, puis définir sa position à l'endroit où vous le souhaitez et le transformer en même temps. Cela soulève cependant une foule d'autres problèmes de conception, de sorte que votre kilométrage peut varier.Vous ne voudriez probablement pas utiliser de
display
toute façon, car vous voudriez que le contenu soit accessible aux lecteurs d'écran, qui essaient pour la plupart de respecter les règles de visibilité - c'est-à-dire, s'il ne devrait pas être visible à l'œil, il n'apparaîtra pas comme contenu à l'agent.la source
Vous pouvez simplement utiliser la visibilité CSS : caché / visible au lieu de l' affichage : aucun / bloc
la source
J'ai commencé un projet squelette open source appelé Toggle Display Animate .
Cet assistant squelette vous permettra d'imiter facilement jQuery show / hide, mais avec des animations de transition CSS 3 in / out.
Il utilise des bascules de classe afin que vous puissiez utiliser toutes les méthodes CSS que vous souhaitez sur les éléments en plus de l'affichage: aucun | bloc | table | en ligne, etc. ainsi que d'autres utilisations alternatives qui peuvent être envisagées.
Son objectif principal de conception est de basculer les états des éléments, et il prend en charge un état de retour où le masquage de l'objet vous permet d'exécuter votre image clé en sens inverse ou de jouer une animation alternative pour masquer l'élément.
La plupart du balisage pour le concept sur lequel je travaille est CSS, et il y a très peu de JavaScript réellement utilisé.
Il y a une démo ici: http://marcnewton.co.uk/projects/toggle-display-animate/
la source