Sto costruendo una piccola app e sto usando AngularJS. All'interno dell'app ho bisogno di un elemento pieghevole e usare Twitter Bootstrap sarebbe facile come aggiungere la libreria e alcuni tag sul mio elemento di destinazione e il trigger.Qualcosa come Bootstrap pieghevole con angolare
Ma sto cercando di non caricare altre librerie esterne come bootstrap o di qualsiasi altro, così mi è stato cercando di raggiungere lo stesso comportamento con angolare:
$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");
});
};
Come si può vedere che sto cercando di transizione l'altezza (dato che l'elemento ha una transizione sull'altezza) e alla fine basta aggiungere la classe in
. Ma non sta funzionando molto bene, perché se sto ascoltando la transizione, si innescherà su qualsiasi estremità di transizione all'interno di quell'elemento.
Avrei bisogno di aiuto con questo, come posso riscrivere il bootstrap comprimibile solo con angolare? Non ho bisogno degli eventi che ha il bootstrap su shown
, hidden
o show
, hide
, ho solo bisogno di innescare un semplice collasso dell'elemento con transizione e mantenere i miei elementi di altezza dinamica (non voglio un'altezza fissa, altrimenti Vorrei solo usare i CSS per ottenere il collasso). Devo solo essere individuato nella giusta direzione :)
Come ho detto nella mia descrizione, 'collapsable.showMe {height: 100px; } ', l'altezza dovrebbe essere' auto', quindi posso avere il mio altezza del contenuto dinamico, perché più elementi possono essere aggiunti afterwords ... – Roland
Ecco perché vorrete usare il plugin di qualcun altro. Quello che devi fare è controllare l'altezza del tuo contenuto interno con javascript, e quindi impostare quella altezza con CSS al volo. 'auto' non funziona con le transizioni CSS in qualsiasi browser che conosco. –
Non era quello che ho appena detto nella descrizione? Che avere altezza automatica non funzionerebbe in questo caso quando voglio le transizioni css. Ecco perché stavo cercando di impostare prima l'altezza e poi aggiungere la classe 'in' che ha' height: auto'. Solo che l'utilizzo della transizione non funzionerà. Né ottenere l'altezza dell'elemento funzionerà dal momento che la classe 'collapse' imposta su' 0px'. Ecco perché sto chiedendo qui se c'è un modo per farlo senza gli eventi che ha il bootstrap e hanno solo il collasso. – Roland