【问题标题】:UI Bootstrap Fade Carousel flashes whiteUI Bootstrap Fade Carousel 闪烁白色
【发布时间】:2015-04-07 16:41:59
【问题描述】:

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

http://development.artlyticalmedia.com/portfolio

我正在使用 UI Bootstrap,因为它使 Bootstrap 与 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>

请注意,&lt;carousel&gt; 元素不在标准 Bootstrap 轮播中;我相信它是&lt;div class="carousel"&gt;。我的 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'
    }];
  });

【问题讨论】:

  • 刚刚在我的开发版本的答案中添加了代码,它不起作用(你可以看一下,它仍然闪烁白色)。我已经在 StackOverflow 上尝试了大部分(如果不是全部)解决方案,这就是我发布新问题的原因。

标签: javascript css angularjs twitter-bootstrap


【解决方案1】:

在遇到这个问题几个小时后,我终于发现 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);
    }
}

【讨论】:

  • 感谢@Sprazer 的回答,但它还没有为我工作。你是如何实施的?您是否将它与上面的代码一起使用?您是混合代码还是先有一个代码?在后者中,哪个先出现?
  • 只需将此代码复制并粘贴到 CSS 文件的底部即可。还要确保在引导后包含自己的 css。
  • 这对我有用!请记住,上面的解决方案是 SASS,而不是纯 CSS。要作为纯 CSS 使用,请通过 SassMeister.com 等在线处理器运行它
【解决方案2】:

扩展 Sprazer 所写的内容,这里有一个 mixin 版本,您可以使用并将其添加到 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;
  }



}

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-09-03
    • 1970-01-01
    • 2012-06-18
    • 2015-07-17
    • 2014-08-24
    • 1970-01-01
    • 1970-01-01
    • 2020-11-22
    相关资源
    最近更新 更多