2015-02-07 165 views
3

我正在尝试为使用Bootstrap和AngularJS创建的我的网站创建淡入淡出的过渡轮播。我已经创建了这个效果,但是我仍然在每张幻灯片之间使这个闪光灯变成白色,而不是在之前的图像上淡入淡出。你可以看到在这里的例子,现在(直到问题得到解答或我修复它):UI Bootstrap淡入淡出旋转木马闪烁白色

http://development.artlyticalmedia.com/portfolio

我使用的用户界面引导,因为它使引导发挥好与AngularJS,这已经使得大多数的该解决方案在那里不准确的,因为我的HTML看起来像这样:

<div class="container-fluid text-center" ng-controller="PortfolioCtrl" id="portfolio"> 
    <carousel interval="interval" class="carousel-fade"> 
    <slide ng-repeat="slide in slides" active="slide.active"> 
     <img ng-src="{{slide.image}}" alt="{{slide.alt}}"> 
    </slide> 
    </carousel> 
</div> 

注意,<carousel>元素不存在在一个标准的引导旋转木马;我相信这是一个<div class="carousel">。我SCSS,这应该给正确的效果,看起来是这样的:

.carousel-fade { 
    .carousel-inner { 
    .item { 
     transition-property: opacity; 
     transition-duration: 1s; 
     opacity: 0; 
    } 

    .active { 
     opacity: 1; 
    } 

    .active.left, 
    .active.right { 
     left: 0; 
     opacity: 0; 
     z-index: 1; 
    } 

    .next.left, 
    .prev.right { 
     opacity: 1; 
    } 
    } 

    .carousel-control { 
    z-index: 2; 
    } 
} 

我的JavaScript是非常标准的,只是我禁用$animate,因为这是一个修复我以前来实现。这是反正:

angular.module('comartlyticalmediawwwApp') 
    .controller('PortfolioCtrl', function ($scope, $animate) { 
    $scope.interval = 3000; 

    $animate.enabled(false); 
    $scope.animate = null; 
    $scope.animateGlobal = true; 

    $scope.slides = [ 
    { 
     image: 'images/portfolio/websites/3dsailing-Home.png', 
     alt: 'plan' 
    }, 
    { 
     image: 'images/portfolio/websites/3dsailing-SailCoachPro.png', 
     alt: 'act' 
    }, 
    { 
     image: 'images/portfolio/websites/3dsailing-3D-Printing.png', 
     alt: 'done' 
    }, 
    { 
     image: 'images/portfolio/websites/Glass-Planner-Home.png', 
     alt: 'done' 
    }, 
    { 
     image: 'images/portfolio/websites/Glass-Planner-PlanActDone.png', 
     alt: 'done' 
    }, 
    { 
     image: 'images/portfolio/websites/Glass-Planner-Tutorials.png', 
     alt: 'done' 
    }]; 
    }); 
+0

HTTP ://stackoverflow.com/questions/19231678/how-can-i-change-the-sliding-animation-to-fade-in-out-with-transition-on-bootstr – Schmalzy 2015-02-07 18:07:39

+0

只需在答案中添加代码即可开发版本,它不工作(你可以看看,它仍然闪烁白色)。我已经尝试了大部分(如果不是全部的话)StackOverflow解决方案,这就是为什么我发布了一个新问题。 – ArtlyticalMedia 2015-02-10 15:00:57

回答

8

有这个问题几个小时后,我终于发现transform:translate3d()是我们都有这个问题的原因。

尝试使用此代码:

.carousel-fade { 
    .carousel-inner { 
    .item { 
     opacity: 0; 
     -webkit-transition-property: opacity; 
     transition-property: opacity; 
    } 

    .active { 
     opacity: 1; 
    } 

    .active.left, 
    .active.right { 
     left: 0; 
     opacity: 0; 
     z-index: 1; 
    } 

    .next.left, 
    .prev.right { 
     opacity: 1; 
    } 
    } 

    .carousel-control { 
    z-index: 2; 
    } 
} 

@media all and (transform-3d), (-webkit-transform-3d) { 
    .carousel-inner > .item.next, 
    .carousel-inner > .item.active.right { 
     -webkit-transform: translate3d(0, 0, 0); 
     transform: translate3d(0, 0, 0); 
    } 
    .carousel-inner > .item.prev, 
    .carousel-inner > .item.active.left { 
     -webkit-transform: translate3d(0, 0, 0); 
     transform: translate3d(0, 0, 0); 
    } 
    .carousel-inner > .item.next.left, 
    .carousel-inner > .item.prev.right, 
    .carousel-inner > .item.active { 
     -webkit-transform: translate3d(0, 0, 0); 
     transform: translate3d(0, 0, 0); 
    } 
} 
+1

感谢@sprazer这个答案,但它还没有为我工作。你如何实施它?你使用它与上面的代码?你是混合使用代码还是先混合使用代码?在后者中,哪一个最先? – ArtlyticalMedia 2015-02-11 12:49:45

+0

只需将此代码复制并粘贴到CSS文件的底部即可。还要确保在引导后包含自己的css。 – Sprazer 2015-02-11 13:03:33

+0

这对我有用!请记住,上面的解决方案是SASS,而不是纯CSS。要使用纯CSS,请通过SassMeister.com等在线处理器运行 – lukemcd 2015-12-11 21:24:06

0

扩展在什么Sprazer中写道,这里是您可以使用,并把它添加到您的SCSS片的顶层一个混合版本:

@mixin carousel-fade() { 

.carousel { 

    .carousel-inner { 

    >.item { 
     opacity: 0; 
     -webkit-transition-property: opacity; 
     transition-property: opacity; 

      @media all and (transform-3d), (-webkit-transform-3d) { 

      &.next, 
      &.active.right, 
      &.prev, 
      &.active.left, 
      &.next.left, 
      &.prev.right, 
      &.active { 
       -webkit-transform: translate3d(0, 0, 0); 
       transform: translate3d(0, 0, 0); 
      } 

      } 

    } 

    .active { 
     opacity: 1; 
    } 

    .active.left, 
    .active.right { 
     left: 0; 
     opacity: 0; 
     z-index: 1; 
    } 

    .next.left, 
    .prev.right { 
     opacity: 1; 
    } 
    } 

    .carousel-control { 
    z-index: 2; 
    } 



} 

}