代码之家  ›  专栏  ›  技术社区  ›  Razvan Zamfir

Bootstrap 4全屏旋转木马错误:标题会延迟居中

  •  0
  • Razvan Zamfir  · 技术社区  · 7 年前

    我在做一个全屏引导4旋转木马。幻灯片不包含图像,但是 视频和标题

    结果很好,但它确实有个虫子:因为 除活动幻灯片外的所有幻灯片 display: none (引导4 违约 如下图所示,幻灯片内的字幕居中被延迟。

    html,body {
      padding: 0;
      margin: 0;
      height: 100%;
    }
    .page-wrapper {
      min-height: 100%;
    }
    #full_slider .carousel-item {
      height: 100vh;
      justify-content: center;
      align-items: center;
    }
    #full_slider .carousel-item.active {
      display: flex;
      position: relative;
    }
    #full_slider video {
      position: absolute;
      left: 0;
      top: 0;
      width: 100vw;
      height: auto;
      z-index: -1;
    }
    #full_slider .video-caption {
      max-width: 585px;
      color: #fff;
    }
    #full_slider h3 {
      font-weight: 900;
      font-size: 96px;
      text-shadow: 2px 1px 1px rgba(0, 0, 0 , 0.6)
    }
    #full_slider .allcases a {
      color: #fff;
      margin-top: auto;
    }
    <link href="https://maxcdn.bootstrapcdn.com/bootstrap/4.1.0/css/bootstrap.min.css" rel="stylesheet"/>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.1.0/js/bootstrap.min.js"></script>
    <div class="page-wrapper">
      <div id="full_slider" class="carousel slide" data-ride="carousel" data-interval="false">
        <div class="carousel-inner" role="listbox">
          <div class="carousel-item active">
            <video src="https://code-love.tk/video/koffee.mp4" autoplay loop muted></video>
            <div class="video-caption">
              <h3 class="capt text-boldest">All about us</h3>
              <p class="allcases">
                <a class="inherit" href="#"><a class="inherit" href="#">See more</a></a>
              </p>
            </div>
          </div>
          <div class="carousel-item">
            <video src="https://code-love.tk/video/flamenco.mp4" autoplay loop muted></video>
            <div class="video-caption">
              <h3 class="capt text-boldest">Lorem ipsum dolor</h3>
              <p class="allcases">
                <a class="inherit" href="#">See more</a>
              </p>
            </div>
          </div>
          <div class="carousel-item">
            <video src="https://code-love.tk/video/wittgenstein.mp4" autoplay loop muted></video>
            <div class="video-caption">
              <h3 class="capt text-boldest">Wittgenstein's philosophy</h3>
              <p class="allcases">
                <a class="inherit" href="#">See more</a>
              </p>
            </div>
          </div>
        </div>
        <a class="carousel-control-prev" href="#full_slider" data-slide="prev">
        <span class="carousel-control-prev-icon"></span>
      </a>
        <a class="carousel-control-next" href="#full_slider" data-slide="next">
        <span class="carousel-control-next-icon"></span>
      </a>
      </div>
    </div>

    我不能仅仅将转盘项目的显示设置为块,因为那样会破坏滑块。

    我该怎么做呢?

    1 回复  |  直到 7 年前
        1
  •  1
  •   Lukas Bach    7 年前

    尝试添加css规则:

    .carousel-item.active, .carousel-item-left, .carousel-item-right {
      display: flex !important;
    }
    

    问题似乎是因为在动画制作过程中, display: flex 未在旋转木马项目容器上设置,但这是正确对齐子项所必需的。

    工作段:

    html,body {
      padding: 0;
      margin: 0;
      height: 100%;
    }
    .page-wrapper {
      min-height: 100%;
    }
    #full_slider .carousel-item {
      height: 100vh;
      justify-content: center;
      align-items: center;
    }
    #full_slider .carousel-item.active {
      display: flex;
      position: relative;
    }
    #full_slider video {
      position: absolute;
      left: 0;
      top: 0;
      width: 100vw;
      height: auto;
      z-index: -1;
    }
    #full_slider .video-caption {
      max-width: 585px;
      color: #fff;
    }
    #full_slider h3 {
      font-weight: 900;
      font-size: 96px;
      text-shadow: 2px 1px 1px rgba(0, 0, 0 , 0.6)
    }
    #full_slider .allcases a {
      color: #fff;
      margin-top: auto;
    }
    
    
    .carousel-item.active, .carousel-item-left, .carousel-item-right {
      display: flex !important;
    }
    <link href="https://maxcdn.bootstrapcdn.com/bootstrap/4.1.0/css/bootstrap.min.css" rel="stylesheet"/>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.1.0/js/bootstrap.min.js"></script>
    <div class="page-wrapper">
      <div id="full_slider" class="carousel slide" data-ride="carousel" data-interval="false">
        <div class="carousel-inner" role="listbox">
          <div class="carousel-item active">
            <video src="https://code-love.tk/video/koffee.mp4" autoplay loop muted></video>
            <div class="video-caption">
              <h3 class="capt text-boldest">All about us</h3>
              <p class="allcases">
                <a class="inherit" href="#"><a class="inherit" href="#">See more</a></a>
              </p>
            </div>
          </div>
          <div class="carousel-item">
            <video src="https://code-love.tk/video/flamenco.mp4" autoplay loop muted></video>
            <div class="video-caption">
              <h3 class="capt text-boldest">Lorem ipsum dolor</h3>
              <p class="allcases">
                <a class="inherit" href="#">See more</a>
              </p>
            </div>
          </div>
          <div class="carousel-item">
            <video src="https://code-love.tk/video/wittgenstein.mp4" autoplay loop muted></video>
            <div class="video-caption">
              <h3 class="capt text-boldest">Wittgenstein's philosophy</h3>
              <p class="allcases">
                <a class="inherit" href="#">See more</a>
              </p>
            </div>
          </div>
        </div>
        <a class="carousel-control-prev" href="#full_slider" data-slide="prev">
        <span class="carousel-control-prev-icon"></span>
      </a>
        <a class="carousel-control-next" href="#full_slider" data-slide="next">
        <span class="carousel-control-next-icon"></span>
      </a>
      </div>
    </div>