【问题标题】:How to change Bootstrap's carousel transition from slide to fade如何更改 Bootstrap 的轮播从幻灯片到淡出的过渡
【发布时间】:2025-12-22 23:10:12
【问题描述】:

我在更改 AngularUi click here carousel 过渡的过渡时遇到了一个小问题滑动过渡的 CSS

`carousel-inner > .item {
        display: none;
        position: relative;
        -webkit-transition: 0.6s ease-in-out left;
        -moz-transition: 0.6s ease-in-out left;
        -o-transition: 0.6s ease-in-out left;
        transition: 0.6s ease-in-out left;`
}

我试图通过将 css 动画更改为以下内容来稍微操纵 css 动画以实现淡入

 @-webkit-keyframes carousel-inner {
    0%{
        opacity: 0;
    }

    100%{
        opacity: 1;
    }
}

@keyframes carousel-inner{
     0%{
        opacity: 0;
    }

    100%{
        opacity: 1;
    }
}


.carousel-inner > .item {
    display: none;
    position: relative;
     -webkit-transition: opacity 0.4s ease-in-out;
    -moz-transition: opacity 0.4s ease-in-out;
    -o-transition: opacity 2s ease-in-out;
    transition: opacity 0.4s ease-in-out;
}

但是它也没有按照我想要的方式工作。有没有人遇到过这个问题?或者有没有人可以解决这个问题?

【问题讨论】:

  • 除了淡入或淡出过渡之外,您是否希望保持从左到右或从右到左的滑动?
  • @LloydBanks 试图从左到右滑动并使用淡入淡出过渡

标签: javascript jquery css twitter-bootstrap angular-ui-bootstrap


【解决方案1】:

我遇到了同样的问题,终于让它工作了。 来自 angular-ui 的轮播等待过渡事件结束(它使用解析承诺的过渡模块),然后将活动类应用于下一张幻灯片。

在播放过渡时,“活动”和“下一张”幻灯片都有“下一张”类。因此,您需要确保在应用 'left' 类时过渡已经开始,否则模块不知道过渡已结束以继续下一张幻灯片。

这是将轮播从滑动变为淡出的 css。我在轮播外部 div 中添加了一个额外的类 fading

.carousel.fading .carousel-inner > .item {
  /* Override the properties for the default sliding carousel */
  display: block;
  position: absolute;
  left: 0 !important;

  /* Hide slides by default */
  opacity: 0;

  /* Set transition to opactity */
  -moz-transition: .6s ease-in-out opacity;
  -webkit-transition: .6s ease-in-out opacity;
  -o-transition: .6s ease-in-out opacity;
  transition: .6s ease-in-out opacity;
}

/* Active slides are visible on transition end */
.carousel.fading .carousel-inner > .active,
/* Next slide is visible during transition */
.carousel.fading .carousel-inner > .next.left {
    opacity: 1;
}
.carousel.fading .carousel-inner > .next,
.carousel.fading .carousel-inner > .active.left {
    opacity: 0;
}

这是我正在使用的 SCSS 代码:

.carousel.fading {
  .carousel-inner {
    height: 360px;
    .item {
      display: block;
      position: absolute;
      left: 0 !important;
      opacity: 0;
      @include transition(.6s ease-in-out opacity);
      &.active, &.next.left {
        opacity: 1;
      }
      &.next, &.active.left {
        opacity: 0;
      }
    }
  }
}

我还必须将 carousel-inner div 的高度设置为图像的高度,因为幻灯片现在是绝对定位的。

【讨论】:

【解决方案2】:

2018 年更新

Bootstrap 4.1 将包含carousel-fade 转换,此处解释: Bootstrap 4.0.0 Carousel fade transition

引导程序 3

我发现不透明度更适合淡化效果..

.carousel .item {
  opacity: 0;
  -webkit-transition-property: opacity;
  -moz-transition-property: opacity;
  -o-transition-property: opacity;
  transition-property: opacity;
}

演示:http://bootply.com/91957

【讨论】:

  • 在我的第一次尝试中,我使用了您在上面突出显示的属性,这可以在我的 plunker 示例中看到,但是它似乎不适用于这个 angularUI 轮播,我不是 100% 为什么?