【发布时间】:2016-01-31 12:09:12
【问题描述】:
我是 Angular 的新手,我正在努力解决这个问题,尽管我现在被困在基于内容的轮播中的动画内容上。我自己构建了这个轮播,但我事先没有考虑过“幻灯片”之间的褪色内容会如何影响它。
目前我的轮播的结构是:
<article class="container-fluid carousel-container" ng-controller="carouselController">
<div class="container">
<div class="prev-container">
<button class="prev" ng-click="prevSlide()"><span>‹</span></button>
</div>
<div class="slide">
<div class="slide-left">
<h1 class="slide-inner" ng-cloak>{{panels[slide].title}}</h1>
<p class="slide-inner" ng-cloak>{{panels[slide].body}}</p>
</div>
</div>
<div class="next-container">
<button class="next" ng-click="nextSlide()"><span>›</span></button>
</div>
</div>
</article>
我只是更改单个“幻灯片”的内容,而不是实际的幻灯片。稍后我将在slide-right 容器中添加图像。
此功能位于carouselController:
app.controller('carouselController', function($scope){
$scope.slide = 0;
$scope.prevSlide = function(){
if ($scope.slide <= 0) {
$scope.slide = ($scope.panels.length - 1);
} else {
$scope.slide--;
};
};
$scope.nextSlide = function(){
if ($scope.slide >= $scope.panels.length - 1) {
$scope.slide = 0;
} else {
$scope.slide++;
};
};
$scope.panels = [
{
id: 1,
title: "1 - Lorem ipsum",
body: "1 - Lorem ipsum dolor sit amet, consectetur adipisicing elit. Voluptatibus, dolores voluptas quod fuga id nihil in! Dolore accusantium perferendis deleniti voluptate, libero quis at molestias."
},
{
id: 2,
title: "2 - Lorem ipsum",
body: "2 - Lorem ipsum dolor sit amet, consectetur adipisicing elit. Voluptatibus, dolores voluptas quod fuga id nihil in! Dolore accusantium perferendis deleniti voluptate, libero quis at molestias."
},
{
id: 3,
title: "3 - Lorem ipsum",
body: "3 - Lorem ipsum dolor sit amet, consectetur adipisicing elit. Voluptatibus, dolores voluptas quod fuga id nihil in! Dolore accusantium perferendis deleniti voluptate, libero quis at molestias."
}
];
});
这里的基本思想是从panels 数组中填充内容,单击下一个按钮或上一个按钮将分别增加或减少数组索引。然后填充slide-left div 中的标题和正文内容。我遇到的问题是当使用下一个或上一个按钮时,我想淡出那里的内容,并淡入新内容。我尝试了addClass 和removeClass 以及许多其他方法,但都没有结果。最大的障碍是我实际上并没有更改幻灯片而只是更改内容,因为大多数资源和教程都认为我隐藏了一张幻灯片,并显示了下一张。我期待您的建议并感谢您的帮助,并随时批评我现有的代码。
【问题讨论】:
-
考虑使用 ng-repeat 渲染所有幻灯片的面板,使用 ng-show 显示活动幻灯片。那么你的动画应该是可能的。
-
@ShaunScovil 这种方式不可能吗?我考虑过这一点,但更愿意解决问题而不是解决问题。
-
我不会称其为解决方法。问题是,您是否期望某种交叉淡入淡出的动画,或者您只是想将幻灯片移出,然后更改其内容并将其移回?
-
这个幻灯片示例可能会比我更好地回答您的问题:docs.angularjs.org/api/ngAnimate#javascript-based-animations
-
我只想淡出内容并淡入新内容。理想情况下,我将能够做任何 css3 动画、过渡等。我看着
ng-animate但问题是它取决于我所看到的临时类,并且由于这没有使用ng-repeat它没有临时类,有没有办法创建它们以及围绕它的行为?
标签: angularjs