我目前正在嘗試在Angular.js中做CSS3動畫。
動畫之前,我嘗試使用Javascript設置初始CSS屬性。
那麼,有沒有辦法使用Javascript初始化動畫,然後使用CSS3繼續動畫?如何使用Javascript初始化Angularjs css3動畫
我的情況:
當用戶點擊div時,會出現一個對話框。 對話框應該從原始div(相同大小,相同位置)開始,然後增大到更大。
我能夠從預定位置和大小動畫對話框:
CSS:
.dialog {
position: absolute;
z-index: 10;
width:600px;
height:400px;
margin-left: -300px;
left:50%;
margin-top: 50px;
}
.dialogHolder.ng-enter .dialog {
transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 1s;
width:0;
height:0;
margin-left: 0px;
}
.dialogHolder.ng-enter-active .dialog {
width:600px;
height:400px;
margin-left: -300px;
}
我想動畫開始在點擊div的大小對話框。 到目前爲止我的代碼(不工作還)是這樣的:
HTML:
<div ng-repeat="course in data.courses" ng-click="showDialog($event)">
{{ course.cursus }}
</div>
<!-- Placeholder for blokDialogs -->
<div class="dialogHolder" ng-include="dialogTemplate.url">
DIALOG WILL BE LOADED HERE
</div>
的Javascript:
app.controller('blockController', function($scope) {
$scope.showDialog = function(evt) {
// get position and size of the course block
$scope.dialogTemplate.clientRect = evt.target.getBoundingClientRect();
// load the html to show the dialog
$scope.dialogTemplate.url = 'partials/blokDialog.html';
// SHOULD I DO SOMETHING HERE?
};
});
// OR SHOULD I DO SOMETHING LIKE THIS?
app.animation('.dialogHolder', function(){
return {
// SOMEHOW SET THE WIDTH, HEIGHT, TOP, LEFT OF .dialog
};
});
我寧願做沒有jQuery保持頁面權重低。
問候, 亨德里克·揚
或者,如果你想用動畫的DIV NG-包括您可以使用相同的邏輯(但只有進入和離開的動畫) – NicolasMoise
謝謝尼古拉斯。這就是我現在使用的。我的問題是我想要初始狀態取決於事件。所以每次動畫開始時,ng-enter和ng-leave中的CSS都是不同的。也許我在解釋我的意圖時應該更清楚些.. –