- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在努力解决一个问题:我有一个包含 x 数量项目的菜单。
在这个例子中,我有三个项目。
每个项目都有一个内容部分,因此通过单击菜单项,内容应该滑入。
到目前为止,我所取得的成就是,当您从“项目 1”开始并更改为“项目 2”时,将执行动画(从右向左滑动,就像幻灯片一样)
但我也想要相反的效果,所以当从“项目 2”到“项目 1”时,它会从右向左滑动。
我只是无法弄清楚如何以两种方式做到这一点。
所以我要求的是某种带有 ngAnimate 的轮播,所以我不必为这些动画恢复到 jQuery。我想在使用 AngularJS 时从我的项目中删除 jQuery。
console.clear();
var _app = angular.module("animate", ['ngAnimate']);
_app.directive("animate", [function() {
return {
scope: {},
template: '<div class="header">' +
' <ul>' +
' <li data-ng-repeat="item in items" data-ng-click="move($index)">' +
' <div>{{item}}</div>' +
' </li>' +
' </ul>' +
'</div>' +
'<div class="wrapper" style="position: relative; margin-top: 20px;">' +
' <div data-ng-if="index == 0" class="slide slide-left">Content 1</div>' +
' <div data-ng-if="index == 1" class="slide slide-left">Content 2</div>' +
' <div data-ng-if="index == 2" class="slide slide-left">Content 3</div>' +
'</div>',
link: function(scope, elem, attr) {
scope.items = ["Item 1", "Item 2", "Item 3"]
scope.index = 0;
scope.move = function(index) {
scope.index = index;
}
}
}
}]);
body {
font-family: Arial, Sans-Serif;
}
.header {
width: 100%;
height: 50px;
background-color: lightblue;
position: relative;
}
.header ul {
padding: 0;
height: inherit;
}
.header ul li {
display: inline;
width: 33%;
height: inherit;
}
.header ul li div {
float: left;
width: 33%;
text-align: center;
height: inherit;
border: 1px solid black;
}
.slide {
-webkit-transition: all cubic-bezier(0.250, 0.460, 0.450, 0.940) 2s;
-moz-transition: all cubic-bezier(0.250, 0.460, 0.450, 0.940) 2s;
-o-transition: all cubic-bezier(0.250, 0.460, 0.450, 0.940) 2s;
transition: all cubic-bezier(0.250, 0.460, 0.450, 0.940) 2s;
position: absolute;
}
.slide-left.ng-enter {
left: 100%;
}
.slide-left.ng-enter.ng-enter-active {
left: 0;
}
.slide-left.ng-leave {
left: 0;
}
.slide-left.ng-leave.ng-leave-active {
left: -100%;
}
.slide-right.ng-enter {
left: -100%;
}
.slide-right.ng-enter.ng-enter-active {
left: 0
}
.slide-right.ng-leave {
left: 0;
}
.slide-right.ng-leave.ng-leave-active {
left: 100%;
}
<script src="http://cdnjs.cloudflare.com/ajax/libs/angular.js/1.4.8/angular.js"></script>
<script src="https://code.angularjs.org/1.4.8/angular-animate.js"></script>
<div ng-app="animate">
<animate></animate>
</div>
最佳答案
为了有轮播效果,你需要根据你要过渡到的索引来切换幻灯片类,所以你使用ngClass
并从 slide-left
更改类(class)至slide-right
当移动到较低的索引时,反之亦然。
然而,对于消失的元素 ngIf
在类更新之前隐藏元素,因此您需要延迟转换以确保 ngClass
首先执行。一种方法是使用 $timeout
函数,需要将其注入(inject)您的指令中。
您的代码变为:
_app.directive("animate", ['$timeout', function($timeout) {
return {
scope: {},
template: '<div class="header">' +
' <ul>' +
' <li data-ng-repeat="item in items" data-ng-click="move($index)">' +
' <div>{{item}}</div>' +
' </li>' +
' </ul>' +
'</div>' +
'<div class="wrapper" style="position: relative; margin-top: 20px;">' +
' <div data-ng-if="index == 0" class="slide" ng-class="slideClass">Content 1</div>' +
' <div data-ng-if="index == 1" class="slide" ng-class="slideClass">Content 2</div>' +
' <div data-ng-if="index == 2" class="slide" ng-class="slideClass">Content 3</div>' +
'</div>',
link: function(scope, elem, attr) {
scope.items = ["Item 1", "Item 2", "Item 3"]
scope.index = 0;
scope.slideClass = 'slide-left';
scope.move = function(index) {
scope.slideClass = index < scope.index
? scope.slideClass = 'slide-right'
: scope.slideClass = 'slide-left';
$timeout(function() {
scope.index = index;
});
}
}
}
}]);
关于angularjs - ngAnimate - 双向滑动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42542215/
我正在努力解决一个问题:我有一个包含 x 数量项目的菜单。 在这个例子中,我有三个项目。 每个项目都有一个内容部分,因此通过单击菜单项,内容应该滑入。 到目前为止,我所取得的成就是,当您从“项目 1”
我试图让离开动画与速度和 Angular 一起工作,以便当表格行离开时它们会向右移动。 在示例中,我使用离开回调来尝试动画离开 ng-repeat,但回调运行但没有任何反应! angular.modu
我正在使用 ngAnimate 模块,但我所有的 ng-if、ng-show 等都受此影响,我想利用 ngAnimate 来实现一些功能选定的元素。对于性能和元素中的一些错误,显示和隐藏速度非常快。
Error: f.element._data is not a function t@http://localhost:3000/lib/angular-animate/angular-animate
我已经使用 ngAnimate 在 ngView 上的应用程序中设置了动画。每次状态发生变化时,下一个 View 都会从右侧滑入。 我希望能够扭转这一情况,以便在某些情况下, View 从左侧滑入(如
我在使用 ngAnimate 和 ui-view 时遇到错误。加载或点击任何导航菜单; angular-animate.js 生成“对象不是函数”错误。 这里是主要的 javacsript 应用程序:
我的 HTML 看起来像这样; {{msg.loading || 'loading'}} {{msg.loadingPerc}}%
我试图将动画引入我的应用程序,但是当我在应用程序中包含 ngAnimate 依赖项时,它不会加载,也不会在控制台中出现任何错误,这使得调试非常困难。 index.html:
我无法使用简单的 Angular 动画。我做了一个简单的 Plunkr 来展示它:https://plnkr.co/edit/bKZev3i1WhNgKhsWOZIQ HTML
我正在为我的元素制作一个内容 slider ,但我对 AngularJS 的经验很少。我找到了 this plunker这非常适合我的需要。可以看我的直播page here .它是俄语,但我希望这不会
在过去的 10 个小时里,我一直在努力让动画发挥作用,只有在我添加 animate.css 样式表并使用“动画类名”时它们才能发挥作用,但是当我想为进入和离开制作自定义动画时,我做不到无论如何它都能工
我有 ngAnimate 依赖注入(inject)问题。我不知道为什么,但每当我将 ngAnimate 作为依赖项包含在我的 js 代码中时,它就不起作用......这不是剧本... 我有这个 htm
我已经在元素中实现了 ngAnimate 以帮助制作动画,但我在某些元素上遇到了非常奇怪的行为。 为了添加一些背景,我们有一个商店,其中包含类别和类别内的产品。我正在执行 ng-repeat: dat
我尝试使用 angular 和 ngAnimate 来获得幻灯片效果。我可以很好地作为 opacity 的淡入/淡出效果。 .show-animation { -webkit-transition
我想在使用 ng-repeat 重复的自定义指令上使用 ngAnimate。如果我在一个简单的 html 列表项上使用 ng-repeat,动画效果很好。但是,只要用自定义指令元素替换列表项,就不会触
我正在尝试使用 ngAnimate 折叠进/出框。我做了类似的事情并且它有效,但我如何摆脱高度属性?可以使用装箱来扩展(其中的文本),但文本会超出边缘。 .myTest { transition:
我是单元测试以及 ng-animate 模块的新手。我做了一个简单的指令来测试 ng-animate。 .directive('slideShow', function ($animate, $co
我正在尝试使用 ngAnimate 制作一些动画,但我什至无法开始使用它。问题是,当我尝试将 ngAnimate 依赖项添加到应用程序文件时,它会在控制台中向我抛出此错误,并且我的应用程序无法运行。
我在构建 Angular JS 项目时遇到问题。 它说无法实例化模块 ngAnimate,原因是: 我已将所有服务放入 [] 中,但 ngAnimate 无法正常工作。 这是应用程序 无法实例化模块
我已经将脚本链接到我的 html 文件以进行 angularjs、清理和动画处理: 当我将 ngAnimate 作为依赖项添加到我的模块时,就像这样: var nameSpace = angu
我是一名优秀的程序员,十分优秀!