Montrer/cacher les lignes de la table de transitions css3
Sur une partie de ma page, je suis à l'aide de transitions css3 pour afficher/masquer des divs avec un joli effet de glissement
.service_status {
max-height: 0;
-webkit-transition: max-height 1s ease-in-out;
-moz-transition: max-height 1s ease-in-out;
-ms-transition: max-height 1s ease-in-out;
-o-transition: max-height 1s ease-in-out;
transition: max-height 1s ease-in-out;
}
.service_status.open {
max-height: 500px;
-webkit-transition: max-height 1s ease-in-out;
-moz-transition: max-height 1s ease-in-out;
-ms-transition: max-height 1s ease-in-out;
-o-transition: max-height 1s ease-in-out;
transition: max-height 1s ease-in-out;
}
Je voudrais utiliser la même technique sur certaines lignes de la table mais max de hauteur et la hauteur ne sont pas en avoir aucun effet (en raison de la CSS spécifications pour les tables, je suppose). Est il possible que je peux afficher/masquer les lignes de la table avec une animation à l'aide seulement de transitions CSS3 et pas de js?
- Sans javascript ou jquery?
- yep, la raison étant que nous sommes en utilisant les media queries pour cahnge la mise en page (et donc les dimensions de l'être animé) siginficantly entre les différents dispositifs et serait agréable de garder le tout dans la feuille de style, plutôt que d'avoir à le faire certains js également être subordonnée à la taille de l'écran
- Mais si vous avez une concis jQuery approche s'il vous plaît partager ce que je pourrais l'avoir pour la fin de descendre cette route
Vous devez vous connecter pour publier un commentaire.
Mise à jour:
En fait ma réponse précédente N'RÉPONDRE à la question! Mais pas tout à fait explicitement. C'est comme: "Hé, l'idée est là, il suffit d'appliquer où vous le souhaitez". Je pensais que l'essence de la solution était évidente, et n'importe qui serait en mesure de l'utiliser... Mais de toute façon, je vais exposer l'idée, dans le plus clairement que je le peux, et sera également appliquer la solution à une table simple (depuis l'OP n'a pas montré toute la structure).
Solution:
Version Courte:
L'aide d'une Div wrapper le contenu dans la cellule, nous sommes en mesure d'utiliser max-hauteur de la propriété, et aussi le max-hauteur de la transition. Avec une mesure de transition de la courbe, on peut "masquer" le retard de l'aide d'un haut max-hauteur.
Démo ici: http://jsfiddle.net/1rnc9bbm/4/
Version Longue:
Tout le problème est que d'une table-cell, la hauteur est le minimum pour s'adapter à son contenu, et de la table-row, la hauteur est la hauteur minimale requise pour toutes les cellules (et donc la hauteur de la table-row est la hauteur minimale requise par son plus haut de la cellule).
De W3 (Sur Table-Les Cellules De La Hauteur):
De W3 (Sur Table-Rowss Hauteur):
Dans ces circonstances, notre seul choix est de restreindre la hauteur indirectement à l'aide d'intérieur de balisage, normalement un élément div. Parce qu'un élément Div respecter un max de hauteur, il va s'étirer notre contenu et notre table-cell devra également respecter la "div" max-height", parce que c'est toute la hauteur dont il a besoin.
Le problème avec max-hauteur de la transition n'est qu'un retard, causé par la manière dont la transition est calculée. Dans une table, habituellement vous permet d'afficher un contenu dynamique est dynamique et imprévisible de la longueur (ce qui devient de table-hauteur de la cellule), de sorte que Nous ne savons pas précis max-hauteur de notre table devront correspondre exactement au contenu élargi. Ainsi, Nous avons besoin d'augmenter max-hauteur, qui sera plus que le nécessaire par certaines cellules. Quand il arrive, notre transition est mal calculé (basé sur le max-height et pas de hauteur totale, qui sera montré et d'animation), et de l'animation devient bizarre et imprécis. Pour montrer une belle et bonne transition pour l'utilisateur, j'ai trouvé une excellente solution en utilisant une mesure de transition de la courbe. Plus de détails à propos de ce problème et sa solution sont à la fin de cette réponse.
Bien, nous avons notre "max-height respectueux de l'élément", une transition en douceur pour notre max-hauteur de l'animation, et notre table... il est Maintenant temps pour tout mettre en place:
Html:
Css:
Simple démo ici (le code affiché ci-dessus): http://jsfiddle.net/1rnc9bbm/3/ , et une plus complète (et commune) de la table de démo ici: http://jsfiddle.net/1rnc9bbm/4/
Je ne pense pas que les downvotes étaient justes, mais je suis d'accord que cette version est beaucoup plus complet, et n'a de réponse dans un explicitement façon, l'OP de la question. Si vous avez des questions ou des points que souhaitez-moi de clarifier, vous n'avez pas besoin de downvote (s'il vous plaît), il suffit de demander/commentaire ci-dessus. Je serai très heureux de vous aider si je le peux.
Obs: OP n'a pas fourni un Html, ni de détails sur la table, Il veut développer, de sorte que toute ma solution est basée dans le généralement l'utilisation de la table.
Précédente (Original) Réponse:
Je viens de répondre à cette situation exactement dans une autre question. Et dans mon cas précis, j'avais besoin de faire exactement ce que Vous avez dit. J'ai une table, et que vous voulez développer une ligne de la table lorsque l'utilisateur place le pointeur de il.
La même réponse s'applique à votre question:
https://stackoverflow.com/a/27773588/3395460
Lié Réponse (Transitions en Douceur avec le Plus haut maximum-Hauteur de la valeur de besoins par conteneur):
Comme indiqué par @maskacovnik, ça va être un plus complet (et intégral) réponse si il contient également le code de ma première réponse, et aussi le code qui explique une partie de la solution de ma mise à jour de réponse. Le voici:
Espère que j'ai aidé!
Vous ne pouvez pas appliquer la hauteur des transitions à
<td>
ou<tr>
éléments. Toutefois, si vous pouvez l'envelopper le contenu de la<td>
éléments avec un<div>
, vous pouvez appliquer les transitions CSS pour la<div>
éléments.HTML:
CSS:
Line Height
: Ici vous allez.JS:
CSS:
HTML:
Je viens plus de la même chose, ma solution a été d'utiliser des div dans la cellule, mais pour animer, j'ai utilisé intérieur de la div et de la marge-bas au lieu de max-hauteur. Ciselée serait:
html:
css:
Je l'ai testé dans FF seulement.
J'ai trouvé une façon de cacher une ligne de la table avec les css qui fonctionne pour le texte brut, sans ajout de ces méchants div à l'. Ce n'est pas le "ne tous les, des corrections de toutes les" solution, mais vous pourriez vouloir donner un essai si vous êtes seulement à faire avec du texte dans vos tables.
(Il peut fonctionner pour d'autres contenus trop, mais je ne l'ai pas testée)
JS:
CSS:
HTML:
Quelque chose comme ceci est le minimum dont vous avez besoin.
Version de travail: http://jsfiddle.net/GCJrd/
tête
corps