gpt4 book ai didi

javascript - 选项卡上的 Angularjs 动画 1.4.7

转载 作者:太空宇宙 更新时间:2023-11-04 11:18:08 25 4
gpt4 key购买 nike

我目前在为一组选项卡设置动画时遇到问题。我创建了一个反射(reflect)我的代码的 Plunker,它也有同样的问题。似乎选项卡内容之外的所有内容都可以很好地进行动画处理,但是当您按下每个选项卡时,动画不起作用。每个选项卡的内容应该淡入。任何正确方向的点都会有所帮助。这是 Plunker:http://plnkr.co/edit/ZjrG8uHS4sHq3pxgGVLu?p=preview

应用程序.js

var app = angular.module('plunker', ['ngAnimate']);

app.controller('MainCtrl', function($scope) {
$scope.name = 'World';
})
.directive('tab', function () {
return {
restrict: 'E',
transclude: true,
template: '<div role="tabpanel" ng-show="active" ng-transclude class="smooth_transition"></div>',
require: '^tabset',
scope: {
heading: '@'
},
link: function (scope, elem, attr, tabsetCtrl) {
scope.active = false;
tabsetCtrl.addTab(scope)
}
}
})
.directive('tabset', function () {
return {
restrict: 'E',
transclude: true,
scope: {},
templateUrl: 'tabset.html',
bindToController: true,
controllerAs: 'tabset',
controller: [ function () {
var self = this;
self.tabs = [];
self.addTab = function addTab(tab) {
self.tabs.push(tab);

if (self.tabs.length === 1) {
tab.active = true;
}
};
self.select = function (selectedTab) {
angular.forEach(self.tabs, function (tab) {
if (tab.active && tab !== selectedTab) {
tab.active = false;
}
});
selectedTab.active = true;
};
}]
};

});

样式.css

.nav-tabs{
}

.tab-body{
background: #acacac;
}
.nav-tabs .active{
background:#494949;
}
.nav-tabs>li {
background: #acacac;
}

.smooth_transition.ng-enter{
transition:1s linear all;
-webkit-transition : 1s linear all;
opacity:0;
}

.smooth_transition.ng-enter.ng-enter-active {
opacity:1;
}
.smooth_transistion.ng-leave {
opacity:1;
}
.smooth_transistion.ng-leave.ng-leave-active {
opacity:1;
}

tabset.html

<div role="tabpanel" class="smooth_transition">
<ul class="nav nav-tabs" role="tablist" class="smooth_transition">
<li role="presentation"
ng-repeat="tab in tabset.tabs" class="smooth_transition">
<a href=""
role="tab"
ng-click="tabset.select(tab)">{{tab.heading}}</a>
</li>
</ul>
<ng-transclude>
</ng-transclude>
</div>

最佳答案

您正在使用 ng-enter 和 ng-leave 而不是,就像下面的复选框示例一样,您应该使用 ng-hide。当您更改选项卡时,选项卡正文显示或隐藏,这里有一个 plunkr:http://plnkr.co/edit/A2bAxWZYlinu27j5jo0J?p=preview

代码只是将 css 更改为:

.smooth_transition.ng-hide{
opacity:0;
}

.smooth_transition.ng-hide-add, .smooth_transition.ng-hide-remove {
transition: all linear 0.5s;
position: absolute;
}

使用 position:absolute 可以阻止两个选项卡的内容在过渡期间相互堆叠,我认为这就是您想要的。为了保持流畅,您需要在过渡期间保持标签主体宽度不变,但这应该可以解决您的主要问题。

关于javascript - 选项卡上的 Angularjs 动画 1.4.7,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33022270/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com