【问题标题】:Carousel height 100%, carousel-caption align middle and image indicators轮播高度 100%,轮播标题对齐中间和图像指示器
【发布时间】:2019-06-12 13:47:01
【问题描述】:

问题

  1. 如何为轮播设置 100 % 的屏幕高度?
  2. 如何使轮播标题垂直居中?
  3. 我怎样才能把 carousel-caption 和 carousel-indicators(图片)处于同一级别?

你能解决这个问题吗,我试着解决了,但是解决不了。

下面是我试过的代码:

html,
body{
  height: 100%;
}

.carousel-caption{
  top: 60%;
  transform: translateY(-50%);
}

.carousel-indicators li{
  height: 72px !important;
  border-radius: 0px !important;
  width: 192px !important;
  background: url(http://ebitfactory.se/wp-content/uploads/2016/11/photo-1465056836041-7f43ac27dcb5-1920x720.jpeg) !important;
}

.carousel-indicators li:hover{
  transform: scale(1.02);
}
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.2.1/css/bootstrap.min.css">

<main role="main">
  <div id="myCarousel" class="carousel slide" data-ride="carousel">
    <ol class="carousel-indicators">
      <li data-target="#myCarousel" data-slide-to="0" class="active"><img data-slide-to="0" data-target="#myCarousel" src="http://ebitfactory.se/wp-content/uploads/2016/11/photo-1465056836041-7f43ac27dcb5-1920x720.jpeg" alt="" width="192" height="72"></li>
      <li data-target="#myCarousel" data-slide-to="1"></li>
      <li data-target="#myCarousel" data-slide-to="2"></li>
    </ol>
    <div class="carousel-inner h-100">
      <div class="carousel-item active">
        <img src="https://i.imgur.com/wnZPRGU.jpg" alt="" width="100%">
        <div class="container align-middle">
          <div class="carousel-caption text-left">
            <h1>Example headline.</h1>
            <p>Cras justo odio, dapibus ac facilisis in, egestas eget quam. Donec id elit non mi porta gravida at eget metus. Nullam id dolor id nibh ultricies vehicula ut id elit.</p>
            <p><a class="btn btn-lg btn-primary" href="#" role="button">Sign up today</a></p>
          </div>
        </div>
      </div>
      <div class="carousel-item">
        <img src="https://i.imgur.com/wnZPRGU.jpg" alt="" width="100%">
        <div class="container">
          <div class="carousel-caption">
            <h1>Another example headline.</h1>
            <p>Cras justo odio, dapibus ac facilisis in, egestas eget quam. Donec id elit non mi porta gravida at eget metus. Nullam id dolor id nibh ultricies vehicula ut id elit.</p>
            <p><a class="btn btn-lg btn-primary" href="#" role="button">Learn more</a></p>
          </div>
        </div>
      </div>
      <div class="carousel-item">
        <img src="https://i.imgur.com/wnZPRGU.jpg" alt="" width="100%">
        <div class="container">
          <div class="carousel-caption text-right">
            <h1>One more for good measure.</h1>
            <p>Cras justo odio, dapibus ac facilisis in, egestas eget quam. Donec id elit non mi porta gravida at eget metus. Nullam id dolor id nibh ultricies vehicula ut id elit.</p>
            <p><a class="btn btn-lg btn-primary" href="#" role="button">Browse gallery</a></p>
          </div>
        </div>
      </div>
    </div>
  </div>
</main>

<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.6/umd/popper.min.js"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.2.1/js/bootstrap.min.js"></script>

提前致谢!

【问题讨论】:

  • 这是用于演示目的还是在信息亭模式下显示某些内容?这个问题的原因是,在普通网页中,出于可访问性原因,我强烈建议为轮播(和其他动画)添加暂停和/或隐藏按钮。移动内容对于某些类型的用户来说太分散注意力了。
  • 是的,我想在索引上显示新闻
  • 100% height 是什么意思,我认为你需要全屏全高?
  • 第三点想说什么?
  • 是的,全屏,实际上显示 100% 的图像,如果图像高度为 5000px,html 显示 5000px,可能会删除 'carousel-item img' 并给 carousel-item 一个背景图像和高度 100 % 和宽度 100%?

标签: html css bootstrap-4 carousel


【解决方案1】:

为了获得响应式全屏轮播,将您的内嵌图像转换为背景图像是一个很好的主意。下面我使用了一个脚本,它在页面加载时“自动”执行此操作。

看看我通过使用 Bootstrap 4 类和一些自定义 CSS 得到了什么:

$('#demo').find('.carousel-item').each(function() {
  var imgContainer = $(this),
    bkImg = imgContainer.find('img').attr('src');
  imgContainer.css("background-image", 'url("' + bkImg + '")');
});
.carousel-item {
  height: 100vh;
  width: 100%;
  background-repeat: no-repeat;
  background-position: center center;
  background-size: cover;
  padding: 0 15%;
}

.carousel-item.active,
.carousel-item-left,
.carousel-item-right {
  display: flex !important;
  justify-content: center;
  align-items: center;
}

.carousel-item img {
  display: none;
}

.carousel-item h1 {
  color: #fff;
  font-size: 36px;
  padding: 0 10%;
}

.carousel-item p {
  color: #fff;
  margin: 10px 0;
}

.carousel-indicators {
  margin: 0 !important;
  bottom: 7vh !important;
}

.carousel-indicators li {
  height: 20px !important;
  width: 100px !important;
  border-radius: 0px !important;
  opacity: .8 !important;
  background: url("https://picsum.photos/100/40/?gravity=west") center center no-repeat !important;
}

@media screen and (min-width: 992px) {
  .carousel-indicators {
    bottom: auto !important;
    top: 67vh !important;
  }
}
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.2.1/css/bootstrap.min.css">

<div id="demo" class="carousel slide" data-ride="carousel" data-inerval=4000>

  <!-- Indicators -->
  <ul class="carousel-indicators">
    <li data-target="#demo" data-slide-to="0" class="active"></li>
    <li data-target="#demo" data-slide-to="1"></li>
    <li data-target="#demo" data-slide-to="2"></li>
  </ul>

  <!-- The slideshow -->
  <div class="carousel-inner">
    <div class="carousel-item active">
      <div class="slide-content mx-auto">
        <img src="https://i.imgur.com/wnZPRGU.jpg" alt="">
        <h1 class="display-1 text-center">Lorem ipsum dolor sit amet adipisicing</h1>
        <p class="text-center">Cras justo odio, dapibus ac facilisis in, egestas eget quam. Donec id elit non mi porta gravida at eget metus. Nullam id dolor id nibh ultricies vehicula ut id.</p>
        <div class="text-center">
          <a class="btn btn-md btn-primary" href="#" role="button">Browse gallery</a>
        </div>
      </div>
    </div>
    <div class="carousel-item">
      <div class="slide-content mx-auto">
        <img src="https://i.imgur.com/wnZPRGU.jpg" alt="">
        <h1 class="display-1 text-center">Lorem ipsum dolor sit amet adipisicing</h1>
        <p class="text-center">Cras justo odio, dapibus ac facilisis in, egestas eget quam. Donec id elit non mi porta gravida at eget metus.</p>
        <div class="text-center">
          <a class="btn btn-md btn-primary" href="#" role="button">Browse gallery</a>
        </div>
      </div>
    </div>
    <div class="carousel-item">
      <div class="slide-content mx-auto">
        <img src="https://i.imgur.com/wnZPRGU.jpg" alt="">
        <h1 class="display-1 text-center">Lorem ipsum dolor sit amet adipisicing</h1>
        <p class="text-center">Cras justo odio, dapibus ac facilisis in, egestas eget quam. Donec id elit non mi porta gravida at eget metus. Nullam id dolor id nibh ultricies vehicula ut id elit.</p>
        <div class="text-center">
          <a class="btn btn-md btn-primary" href="#" role="button">Browse gallery</a>
        </div>
      </div>
    </div>
  </div>

  <!-- Left and right controls -->
  <a class="carousel-control-prev" href="#demo" data-slide="prev">
    <span class="carousel-control-prev-icon"></span>
  </a>
  <a class="carousel-control-next" href="#demo" data-slide="next">
    <span class="carousel-control-next-icon"></span>
  </a>
</div>


<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.6/umd/popper.min.js"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.2.1/js/bootstrap.min.js"></script>

您可以编写更多 CSS,包括 媒体查询,以在所有或大多数设备上获得适合您的结果。

【讨论】:

    【解决方案2】:

    如果希望轮播为全屏height: 100vh,图片为背景,否则会被拉伸,所以:

    .carousel-item {
        height: 100vh;
        background-image: url(https://i.imgur.com/wnZPRGU.jpg);
        background-size: cover;
        background-position: center;
        background-repeat: no-repeat;
    }
    

    如果您希望字幕始终位于屏幕中间,请覆盖 css,例如:

    .carousel-caption {
        top: 0;
        bottom: 0;
        left: 0;
        right: 0;
        margin: auto;
        display: flex;
        flex-direction: column;
        align-items: center;
        justify-content: center;
        max-width: 80%;
    }
    

    【讨论】:

      【解决方案3】:

      Boostrap 轮播不是解决此问题的最佳选择。 使用“猫头鹰旋转木马”。对于问题 2 和 3,请前往css 了解有关“职位”的更多信息。

      更多信息Question 1

      更多关于Question 2 and 3的信息

      【讨论】:

      • 为什么比 bootstrap 好?
      • 因为它是仅用于轮播项目的库,所以 bootsrap carousel 仅用于 bootsrap 库的附加组件
      • 我想做以下事情:imgur.com/a/u8nZsAH,红色是轮播项目,绿色轮播指示器和黄色轮播标题
      猜你喜欢
      • 2016-03-03
      • 2016-05-15
      • 2012-12-27
      • 1970-01-01
      • 2014-10-12
      • 1970-01-01
      • 2014-03-25
      • 1970-01-01
      • 2023-03-05
      相关资源
      最近更新 更多