Quelque chose comme Bootstrap pliable angulaire
Je suis en train de construire une petite app et je suis en utilisant AngularJS. À l'intérieur de l'application, j'ai besoin d'un élément pliable et en utilisant Twitter Bootstrap serait aussi facile que de l'ajout de la bibliothèque de tags sur mon élément cible et le déclencheur.
Mais je vais essayer de ne pas charger d'autres bibliothèques externes comme bootstrap ou n'importe quel autre, donc j'essayais d'atteindre le même comportement Angulaire :
$scope.collapse = function(target) {
var that = angular.element(document).find(target),
transitioned = {
'WebkitTransition' : 'webkitTransitionEnd',
'MozTransition' : 'transitionend',
'OTransition' : 'oTransitionEnd otransitionend',
'msTransition' : 'MSTransitionEnd',
'transition' : 'transitionend'
},
_transitioned = transitioned[ Modernizr.prefixed('transition') ],
height = that.outerHeight(true);
if (angular.element(that).hasClass("in")) {
that.height(0);
} else {
that.height(height);
};
that.on(_transitioned, function() {
that.toggleClass("in");
});
};
Comme vous pouvez le voir je suis en train de faire la transition de la hauteur ( comme l'élément a une transition de la hauteur ) et à la fin, il suffit d'ajouter la classe in
. Mais qui ne fonctionne pas très bien, parce que si je suis à l'écoute sur la transition de la fin il va déclencher sur la toute fin de transition à l'intérieur de cet élément.
J'aurais besoin d'un peu d'aide avec cela, comment puis-je réécrire le bootstrap pliable juste angulaire ? Je n'ai pas besoin que les événements de bootstrap a comme sur shown
, hidden
ou show
, hide
, j'ai juste besoin de déclencher un simple effondrement de l'élément de transition et de garder mes éléments de la hauteur dynamique ( je ne veux pas de hauteur fixe, sinon, je voudrais juste utiliser les CSS pour atteindre l'effondrement ). J'ai juste besoin d'être mis en évidence dans le bon sens 🙂
Vous devez vous connecter pour publier un commentaire.
Semble que vous voulez juste s'effondrer quelque chose avec des transitions CSS3?
Bien, vous pouvez le faire, mais le contrôleur est le mauvais endroit pour faire ça. Vous devriez le faire avec les directives ou coutumier de la directive. Heureusement, vous pouvez le faire avec l'angle de native des directives telles que la ng-classe.
HTML:
Et, plus important encore, votre CSS:
Et voici une plunker de travail.
Important de noter, CSS3 transitions ne fonctionnera pas dans tous les navigateurs. En particulier dans IE. En fin de compte, je pense que tu ferais sans doute mieux d'utiliser un plugin que quelqu'un d'autre est déjà fait, et puis de l'accroître dans une coutume directive qui ont regardé une valeur booléenne.
J'espère que ça aide.
MODIFIER
height: auto
ne fonctionne pas avec les Transitions CSS (au moins à compter du moment de ce post). Donc, c'est pourquoi vous allez vraiment vous voulez utiliser un autre plugin, plutôt que de réinventer la roue. Même si c'est juste de JQuery animate() de la méthode. Le pseudo-code pour rouler vos propres directive serait quelque chose comme ceci: (en supposant que vous êtes à l'aide de JQuery)et puis vous auriez l'utiliser comme:
Encore une fois, le ci-dessus est pseudo-code, je n'ai aucune idée si ça fonctionne ou pas, c'est juste pour vous donner une idée à suivre si vous vraiment souhaitez annuler votre propre.
collapsable.showMe { height: 100px; }
, la hauteur doit êtreauto
afin que je puisse avoir mon contenu de la hauteur dynamique, parce que plusieurs éléments pourraient être ajoutés par la suite ...auto
ne fonctionne pas avec les transitions CSS dans n'importe quel navigateur que je connais.in
classe, qui aheight : auto
. Juste que l'aide à la transition de fin ne fonctionne pas. Ni l'obtention de la hauteur de l'élément de travail, depuis la classecollapse
du jeu à0px
. C'est pourquoi je pose la question ici si il y a un moyen de le faire sans les événements qui bootstrap a et ont seulement l'effondrement.Si je comprends bien les questions, ma solution est d'utiliser angulaire $animateCss. Ici il y a de la doc et des exemples https://docs.angularjs.org/api/ngAnimate/service/$animateCss
Avec $animateCss service, vous pouvez créer votre propre animation à l'aide de ngAnimate. Ceci est un exemple de l'angle de module. La démo est dans le lien ci-dessous
https://plnkr.co/edit/DjU1A2vmiBB1dYXjkiN1
Roland, jetez un oeil à Bootstrap Projet angulaires-ui.