Bootstrap Carousel - 如何在幻灯片之间缓慢淡入淡出 [英] Bootstrap Carousel - how to fade between slides slowly

查看:58
本文介绍了Bootstrap Carousel - 如何在幻灯片之间缓慢淡入淡出的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用的是最新的 Bootstrap Carousel,需要在幻灯片之间缓慢淡入淡出(大约 5 秒).我看过很多例子,并试图实现这个 一个.问题是幻灯片之间的淡入淡出太快(不到一秒).我如何将其更改为更长的淡入淡出?

这是我的代码:

<!-- 结束幻灯片 1 --><!-- 幻灯片 2 --><div class="item item-2 slide-image"><img class="img-responsive bg-item parallax" data-speed="1" data-width="1980" data-height="1485" src="~/images/slideshow/bottle2.jpg" alt=幻灯片 2 背景"><div class="carousel-caption"><h1 class="title">或者瓶子!</h1>

<!-- 结束幻灯片 2 -->

这是CSS:

.carousel-inner >.物品 {不透明度:0;顶部:0;左:0;宽度:100%;显示:块;位置:绝对;z-索引:0;-webkit-transition:不透明度 5s 缓解;-o-transition:不透明度 5s 缓和;过渡:不透明度 5s 缓和;-webkit-transform: translate3d(0, 0, 0) !important;变换:translate3d(0, 0, 0) !important;}.carousel-inner >.item:first-of-type {位置:相对;}.carousel-inner >.积极的 {不透明度:1;z-索引:3;}.carousel-inner >.next.left,.carousel-inner >.prev.right {-webkit-transition:不透明度 0.6s 缓入缓出;-o-transition:不透明度 0.6s 缓入缓出;过渡:不透明度 0.6 秒缓入缓出;不透明度:1;左:0;z-索引:2;}.carousel-inner >.active.left,.carousel-inner >.active.right {z-索引:1;}.carousel-control {z-索引:4;}

解决方案

解决方案非常重要,正如我已故的伟大的计算机科学教授曾经说过的那样.Slick Carousel(Bootstrap Carousel 的衍生物)使用 class="sld-transition-2" (三个可用类之一)在 body 标签上设置轮播的过渡.这与我试图设置的淡入淡出过渡相冲突.所以它被删除了.

CSS3 解决方案提供了此处来自此 Stackoverflow 答案 @transportedman 是关键.我根据我们的要求对其进行了一些修改,并将其放置在要为站点加载的最后一个 CSS 文件中(以覆盖它之前的所有内容):

/*灵感来自 http://codepen.io/Rowno/pen/Afykbhttps://stackoverflow.com/questions/26770055/bootstrap-carousel-fade-no-longer-working-with-maxcdn-3-3-bootstrap-min-css*/.carousel-fade .carousel-inner .item {不透明度:0;过渡属性:不透明度;过渡持续时间:4s;转换时序函数:线性;}.carousel-fade .carousel-inner .active {不透明度:1;}.carousel-fade .carousel-inner .active.left,.carousel-fade .carousel-inner .active.right {左:0;不透明度:0;z-索引:1;}.carousel-fade .carousel-inner .next.left,.carousel-fade .carousel-inner .prev.right {不透明度:1;}.carousel-fade .carousel-control {z-索引:2;}/*3.3 中的新功能:添加了转换以提高现代浏览器中的轮播性能."现在覆盖现代浏览器的 3.3 新样式 &应用不透明度*/@media all 和 (transform-3d), (-webkit-transform-3d) {.carousel-fade .carousel-inner >.item.next,.carousel-fade .carousel-inner >.item.active.right {不透明度:0;-webkit-transform: translate3d(0, 0, 0);变换:translate3d(0, 0, 0);}.carousel-fade .carousel-inner >.item.prev,.carousel-fade .carousel-inner >.item.active.left {不透明度:0;-webkit-transform: translate3d(0, 0, 0);变换:translate3d(0, 0, 0);}.carousel-fade .carousel-inner >.item.next.left,.carousel-fade .carousel-inner >.item.prev.right,.carousel-fade .carousel-inner >.item.active {不透明度:1;-webkit-transform: translate3d(0, 0, 0);变换:translate3d(0, 0, 0);}}

最后但并非最不重要的是,修改轮播 DIV 标签以具有 data-interval 属性,该属性大于上述 CSS3 中设置的 transition-duration:

希望这能帮助遇到类似问题的其他人.

I'm using the latest Bootstrap Carousel and need to fade slowly (about 5s) between slides. I've looked at a number of examples, and have tried to implement this one. The problem is that the fade between slides is too quick (less than a second). How do I change that to a longer fade?

Here's my code:

<div class="carousel slide" id="slideshow-carousel-1" data-ride="carousel">
    <div class="carousel-inner" role="listbox">
        <!-- Slide 1 -->
        <div class="item item-1 slide-image active">
            <img class="img-responsive bg-item parallax" data-speed="1" data-width="1980" data-height="1485" src="~/images/slideshow/bottle1.png" alt="Slide 1 Background">
            <div class="carousel-caption">
                <h1 class="title">Caption 1</h1>
            </div>
        </div>
        <!-- End Slide 1 -->

        <!-- Slide 2 -->
        <div class="item item-2 slide-image">
            <img class="img-responsive bg-item parallax" data-speed="1" data-width="1980" data-height="1485" src="~/images/slideshow/bottle2.jpg" alt="Slide 2 Background">
            <div class="carousel-caption">
                <h1 class="title">Or Bottle!</h1>
            </div>
        </div>
        <!-- End Slide 2 -->
    </div>
</div>

Here's the CSS:

.carousel-inner > .item {
  opacity: 0;
  top: 0;
  left: 0;
  width: 100%;
  display: block;
  position: absolute;
  z-index: 0;
  -webkit-transition: opacity 5s ease;
       -o-transition: opacity 5s ease;
          transition: opacity 5s ease;
  -webkit-transform: translate3d(0, 0, 0) !important;
          transform: translate3d(0, 0, 0) !important;
}
.carousel-inner > .item:first-of-type {
  position: relative;
}
.carousel-inner > .active {
  opacity: 1;
  z-index: 3;
}
.carousel-inner > .next.left,
.carousel-inner > .prev.right {
  -webkit-transition: opacity 0.6s ease-in-out;
       -o-transition: opacity 0.6s ease-in-out;
          transition: opacity 0.6s ease-in-out;
  opacity: 1;
  left: 0;
  z-index: 2;
}
.carousel-inner > .active.left,
.carousel-inner > .active.right {
  z-index: 1;
}
.carousel-control {
  z-index: 4;
}

解决方案

The solution was non-trivial, as my late, great computer science professor used to say. The Slick Carousel (a derivative of the Bootstrap Carousel) uses class="sld-transition-2" (one of three available classes) on the body tag to set the carousel's transition. This was colliding with the fade transition I was trying to set. So it was removed.

The CSS3 solution provided here from this Stackoverflow answer by @transportedman was the clincher. I made some modifications to it for our requirements and placed it in the last CSS file to be loaded for the site (to override everything that came before it):

/*
inspired from http://codepen.io/Rowno/pen/Afykb 
https://stackoverflow.com/questions/26770055/bootstrap-carousel-fade-no-longer-working-with-maxcdn-3-3-bootstrap-min-css
*/
.carousel-fade .carousel-inner .item {
  opacity: 0;
  transition-property: opacity;
  transition-duration: 4s;
  transition-timing-function:linear;
}

.carousel-fade .carousel-inner .active {
  opacity: 1;
}

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

.carousel-fade .carousel-inner .next.left,
.carousel-fade .carousel-inner .prev.right {
  opacity: 1;
}

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

/*
WHAT IS NEW IN 3.3: "Added transforms to improve carousel performance in modern browsers."
now override the 3.3 new styles for modern browsers & apply opacity
*/
@media all and (transform-3d), (-webkit-transform-3d) {
    .carousel-fade .carousel-inner > .item.next,
    .carousel-fade .carousel-inner > .item.active.right {
      opacity: 0;
      -webkit-transform: translate3d(0, 0, 0);
              transform: translate3d(0, 0, 0);
    }
    .carousel-fade .carousel-inner > .item.prev,
    .carousel-fade .carousel-inner > .item.active.left {
      opacity: 0;
      -webkit-transform: translate3d(0, 0, 0);
              transform: translate3d(0, 0, 0);
    }
    .carousel-fade .carousel-inner > .item.next.left,
    .carousel-fade .carousel-inner > .item.prev.right,
    .carousel-fade .carousel-inner > .item.active {
      opacity: 1;
      -webkit-transform: translate3d(0, 0, 0);
              transform: translate3d(0, 0, 0);
    }
}

Last but not least, modified the carousel DIV tag to have the data-interval attribute, which is bigger than the transition-duration set in the above CSS3:

<div class="carousel slide carousel-fade" id="slideshow-carousel-1" data-ride="carousel" data-interval="7000">
.....
</div>

Hope this helps others who run into similar issues.

这篇关于Bootstrap Carousel - 如何在幻灯片之间缓慢淡入淡出的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
前端开发最新文章
热门教程
热门工具
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆