javascript - 如何在 AngularJS 应用程序中淡入/淡出文本?

标签 javascript angularjs

我有一个 AngularJS 网络应用程序,它在屏幕上闪烁 3 个单词,每个单词在屏幕上显示 5 秒:HelloWorldGoodbye

这是我的 Controller :

self.currentIndex = 0;
self.myTexts = ['Hello', 'World', 'Goodbye'];
self.currentText = self.myTexts[self.currentIndex];

var currentInterval = $interval(function() {
  self.currentText = self.myTexts[++self.currentIndex % self.myTexts.length];
}, 5000);

// Clear the interval to prevent memory leaks
$scope.$on('destroy', function() {
    $interval.cancel(currentInterval);
    currentInterval = undefined;
});

这是 Angular 模板:

<div ng-controller="MyCtrl as myCtrl">
  {{myCtrl.currentText}}
</div>

它有效。

但现在我希望文本在五秒的第一秒淡入,而在五秒的最后一秒淡出。实现这一目标的最佳方法是什么?

最佳答案

  1. 你可以做 fadeIn/fadeOut使用 jQuery。您将需要访问元素,因此在链接函数中执行此操作会更简单,您可以在其中访问元素和 $scope 的指令。因为这些事件将在 Angular 的摘要循环之外开始和结束,所以您需要运行 $scope.$apply 来更改文本。

  2. 您可以更改您可以在 Controller 中管理的不透明度。 Example

  3. 您可以创建两个 CSS animations一种用于淡入,一种用于淡出,然后执行以下步骤:

    1. 容器最初是隐藏的
    2. 选择下一个文本
    3. 应用淡入 CSS 动画
    4. 使用 $timeout 等待相同(或更长)的时间
    5. 应用淡出 CSS 动画
    6. 使用 $timeout 等待相同(或更长)的时间
    7. 从第 2 步开始重复

最后一个解决方案的问题是动画和文本更改由两个不同的计时器处理,一个由 Angular 的 $timeout(文本更改)处理,另一个由浏览器的渲染器(CSS 动画)处理。

关于javascript - 如何在 AngularJS 应用程序中淡入/淡出文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40578670/

相关文章:

javascript - 在 MVC 参数中编码特殊字符 < 和 >

java - Json节点获取asLocalDate

javascript - AngularJS:$http.get方法下载pdf文件

javascript - angular.js 和 d3.js - 几何示例

javascript - 浏览器缓存和图像优化

javascript - 图像无法正确调整到 div 的高度

javascript - 从文件中获取 JSON 数据

javascript - 如果结果是 Angularjs 1.5 中的填充数组,则重复 $http.get 请求

angularjs - 类型错误 : Cannot read property '0' of undefined -- ng-Sortable ( AngularJs )

javascript - 如何在 Javascript 中使用正则表达式获取匹配和未命中的数组?