首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用ng-show和ng-animate实现上下滑动效果

使用ng-show和ng-animate实现上下滑动效果
EN

Stack Overflow用户
提问于 2013-05-22 02:46:09
回答 8查看 167K关注 0票数 74

我正在尝试使用ng-animate来获得类似于JQuery的slideUp()slideDown()的行为。只是我更喜欢用ng-show

我在这里查看ng-animate教程- http://www.yearofmoo.com/2013/04/animation-in-angularjs.html

并且我可以在所提供的示例中重现淡入/淡出效果。

如何更改css以获得向上/向下滑动行为?另外,如果可能的话,css最好不要知道以像素为单位的组件高度。这样我就可以对不同的元素重用css。

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2013-11-02 05:51:57

我已经写了一个Angular指令,它在没有jQuery的情况下执行slideToggle()

https://github.com/EricWVGG/AngularSlideables

票数 87
EN

Stack Overflow用户

发布于 2013-06-03 20:41:17

这实际上很容易做到。您所要做的就是更改css。

下面是一个非常简单的淡入淡出动画:http://jsfiddle.net/elthrasher/sNpjH/

为了让它成为一个滑动动画,我首先必须把我的元素放在一个盒子里(那就是幻灯片容器),然后我添加了另一个元素来替换即将离开的那个元素,只是因为我认为它看起来会很漂亮。去掉它,这个例子仍然有效。

我将动画css从“淡入淡出”改为“滑动”,但请注意,这些是我给它起的名字。我本可以写幻灯片动画css,命名为“fade”,或者其他任何东西。

重要的部分是css中的内容。这是最初的“淡入淡出”css:

代码语言:javascript
复制
.fade-hide, .fade-show {
    -webkit-transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 0.5s;
    -moz-transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 0.5s;
    -o-transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 0.5s;
    transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 0.5s;
}
.fade-hide {
    opacity:1;
}
.fade-hide.fade-hide-active {
    opacity:0;
}
.fade-show {
    opacity:0;
}
.fade-show.fade-show-active {
    opacity:1;
}

此代码将元素的不透明度从0(完全透明)更改为1(完全不透明),然后再更改回来。解决方案是保持不透明度不变,改为更改顶部(如果您想从左向右移动,则更改为左)。

代码语言:javascript
复制
.slide-hide, .slide-show {
    -webkit-transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 1.5s;
    -moz-transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 1.5s;
    -o-transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 1.5s;
    transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 1.5s;
}
.slide-hide {
    position: relative;
    top: 0;
}
.slide-hide.slide-hide-active {
    position: absolute;
    top: -100px;
}
.slide-show {
    position: absolute;
    top: 100px;
}
.slide-show.slide-show-active {
    position: relative;
    top: 0px;
}

我还将从相对定位更改为绝对定位,这样一次只有一个元素占用容器中的空间。

这是最终的产品:http://jsfiddle.net/elthrasher/Uz2Dk/。希望这能有所帮助!

票数 40
EN

Stack Overflow用户

发布于 2013-12-22 01:14:06

Angular 1.2+ (本文发布时为1.2.6版)的更新:

代码语言:javascript
复制
.stuff-to-show {
  position: relative;
  height: 100px;
  -webkit-transition: top linear 1.5s;
  transition: top linear 1.5s;
  top: 0;
}
.stuff-to-show.ng-hide {
  top: -100px;
}
.stuff-to-show.ng-hide-add,
.stuff-to-show.ng-hide-remove {
  display: block!important;
}

(plunker)

票数 17
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16677304

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档