私は小さなアプリケーションを構築しています。私はAngularJSを使用しています。アプリ内で折りたたみ可能な要素が必要で、Twitter Bootstrapを使用することは、ライブラリとタグをターゲット要素とトリガに追加するのと同じくらい簡単です。ブートストラップのようなものが折りたたまれて角度がついています
しかし、私は、ブートストラップまたはその他のような他の外部ライブラリをロードしないようにしようとしているので、私は角度と同じ動作を達成しようとしていた:あなたは私が移行しようとしている見ることができるように
$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");
});
};
を高さ(要素が高さに遷移を持つため)、最後にクラスin
を追加します。しかし、それは非常にうまくいっていません。なぜなら、私がトランジションエンドで聞いていると、そのエレメント内のトランジションエンドでトリガーされるからです。
私はこれについていくつかの助けを必要としますが、どのように角度だけでブートストラップ折りたたみを書き直すことができますか?私はブートストラップのようなイベントは必要ありませんshown
、hidden
またはshow
、hide
、私はちょうどトランジションの要素の単純な崩壊をトリガし、私の要素の高さを動的に維持する必要があります(私は、私はちょうど崩壊を達成するためにCSSを使用するだろう)。私はちょうど正しい方向に正確に指摘する必要があります:)
下記のリンクであります}}、高さは 'auto'なので、内容の高さを動的にすることができます。なぜなら、後に要素が追加される可能性があるからです。 – Roland
だからこそ他人のプラグインを使いたいのです。あなたがする必要があることは、javascriptを使って内部コンテンツの高さを確認し、その高さをCSSで設定することです。私が知っているどのブラウザでも、 'auto'はCSSトランジションでは動作しません。 –
私はその説明で今述べたことはありませんでしたか?この場合、CSSの遷移が必要なときに自動高さを持つことはできません。ですから、まず高さを設定し、 'height:auto'を持つ' in'クラスを追加しようとしていたのです。ちょうどそれが過渡期に使用することはできません。クラスの 'collapse'が' 0px'に設定されているので、要素の高さを取得することもできません。だから、ブートストラップが持っている出来事がなくてもそれをやる方法があるのか、崩壊しかないのか、私はここで尋ねているのです。 – Roland