【发布时间】:2016-06-09 18:23:51
【问题描述】:
我正在尝试用animate.css 为Bootstrap Carousel 制作动画
我finished with caption animation 一切正常,但是如何为item 设置动画
HTML:
<div class="item zoomInLeft animated">
<img data-src="/images/1.jpg" alt="...">
<div class="carousel-caption">
<h1 data-animation="bounceInDown" data-delay="400">Lorem Ipsum</h1>
<h3 data-animation="bounceInDown" data-delay="600">Lorem Ipsum</h3>
</div>
</div>
如果有人需要,我的字幕代码(JS)
function carousel_init(c){
var self = this;
self.carouselAnimations = function (elems) {
elems.each(function (index) {
var el = $(this);
var animEnd = 'webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend';
var animation = el.data('animation')+' animated';
var delay = el.data('delay');
el.attr('style', '-webkit-animation-delay:'+delay+'ms; -moz-animation-delay:'+delay+'ms; -o-animation-delay:'+delay+'ms; animation-delay:'+delay+'ms')
.promise().done(function(){
el.addClass(animation).one(animEnd, function () {
el.removeClass(animation);
});
});
});
}
var carousel = $(c);
var firstElems = carousel.find('.item:first').find('[data-animation]');
carousel.carousel({
interval: 4000,
pause:false,
wrap:true
});
self.carouselAnimations(carousel, firstElems);
carousel.on('slide.bs.carousel', function (e) {
var elems = $(e.relatedTarget).find('[data-animation]');
self.carouselAnimations(elems);
});
}
所以我将使用data-animation(加上数据延迟)遍历active.item 中的所有元素并为它们设置动画。
- 引导轮播的
animate an Item也可以吗?
如果我只是添加类 zoomOutLeft animated 工作,但在此之前我需要添加 zoomInLeft animated(例如)
提前谢谢你
更新问题: @makshh 建议
.home-carousel .carousel-inner > .item {
-webkit-transition: 0.6s ease-in-out left;
transition: 0.6s ease-in-out left;
}
@media all and (transform-3d), (-webkit-transform-3d) {
.home-carousel .carousel-inner > .item {
-webkit-transition: -webkit-transform 0.6s ease-in-out;
transition: transform 0.6s ease-in-out;
}
}
@media all and (transform-3d), (-webkit-transform-3d) {
.home-carousel .carousel-inner> .item.next,
.home-carousel .carousel-inner> .item.active.right {
-webkit-transform: translate3d(100%, 0, 0) scale(0.5) rotate(8deg);
transform: translate3d(100%, 0, 0) scale(0.5) rotate(8deg);
}
.home-carousel .carousel-inner> .item.prev,
.home-carousel .carousel-inner> .item.active.left {
-webkit-transform: translate3d(-100%, 0, 0) scale(0.5) rotate(-8deg);
transform: translate3d(-100%, 0, 0) scale(0.5) rotate(-8deg);
}
.home-carousel .carousel-inner> .item.next.left,
.home-carousel .carousel-inner> .item.prev.right,
.home-carousel .carousel-inner> .item.active {
-webkit-transform: translate3d(0, 0, 0) scale(1) rotate(0);
transform: translate3d(0, 0, 0) scale(1) rotate(0);
}
}
有效,但仅在 Chrome 中可以跨浏览器工作,因为我知道 transform3d 甚至在 IE10+ 中也有效
更新:删除 @media all and (transform-3d), (-webkit-transform-3d) 使其在 IE10+(FF、Opera)中工作
但问题仍然存在,我们能否整合 animate.css + bootstrap carousel。
【问题讨论】:
-
你需要什么确切的动画?
-
@makshh animate.css 上的任何内容
-
也许这会对你有所帮助,我使用的是变换而不是动画codepen.io/makshh/pen/KzPOWb 你可以调整缩放、旋转、倾斜等。
-
@makshh 仅适用于 Chrome
-
我的转换解决方案?
标签: jquery css twitter-bootstrap animation animate.css