css - 如何将带有轮播图像的 bootstrap4 模态调整到页面?

标签 css bootstrap-4 bootstrap-modal bootstrap-carousel

我正在尝试制作适合模态内部屏幕的流畅垂直图像 喜欢

enter image description here

但相反,如果图像高于屏幕尺寸,它会开始从屏幕中弹出并具有滚动功能,而水平图像则一切正常。

我尝试使用 .imageHeight 类。

我已经为图片添加了:

  • 当我添加 max-height: 300px; 时,它压缩了图像,
  • max-height 100% 什么都没做,
  • 添加 image-fluid 类似乎根本不起作用,
  • 试过 object-fit: scale-down;,但它似乎让图片变小了 但仍然不适合屏幕。

我在这里创建了 Codepen:https://codepen.io/anon/pen/mYdyrO

.imageHeight {
  max-height: 100%;
}
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.2.1/css/bootstrap.min.css" integrity="sha384-GJzZqFGwb1QTTN6wy59ffF1BuGJpLSa9DkKMp0DgiMDm4iYMj70gZWKYbI706tWS" crossorigin="anonymous">
<script src="https://code.jquery.com/jquery-3.3.1.min.js" integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.6/umd/popper.min.js" integrity="sha384-wHAiFfRlMFy6i5SRaxvfOCifBUQy1xHdJ/yoi7FRNXMRBu5WHdZYu1hA6ZOblgut" crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.2.1/js/bootstrap.min.js" integrity="sha384-B0UglyR+jN6CkvvICOB2joaf5I4l3gm9GU6Hc1og6Ls7i6U/mkkaduKaBhlAXv9k" crossorigin="anonymous"></script>
<div id="block4">
  <div class="row mt-5">
    <div class="col-sm text-center align-middle">
      <h1>Doors</h1>
    </div>
  </div>
  <div class="row py-2">
    <div class="col-sm text-center align-self-center py-2">
      <a href="#carousel4" data-slide-to="0">
        <img src="https://clayui.com/images/thumbnail_placeholder.gif" class="image-detail" data-toggle="modal" data-target="#lightbox4">
      </a>
    </div>
    <div class="col-sm text-center align-self-center py-2">
      <a href="#carousel4" data-slide-to="1">
        <img src="https://clayui.com/images/thumbnail_placeholder.gif" class="image-detail" data-toggle="modal" data-target="#lightbox4">
      </a>
    </div>
    <div class="col-sm text-center align-self-center py-2">
      <a href="#carousel4" data-slide-to="2">
        <img src="https://clayui.com/images/thumbnail_placeholder.gif" class="image-detail" data-toggle="modal" data-target="#lightbox4">
      </a>
    </div>
    <div class="col-sm text-center align-self-center py-2">
      <a href="#carousel4" data-slide-to="3">
        <img src="https://clayui.com/images/thumbnail_placeholder.gif" class="image-detail" data-toggle="modal" data-target="#lightbox4">
      </a>
    </div>
    <div class="col-sm text-center align-self-center py-2">
      <a href="#carousel4" data-slide-to="4">
        <img src="https://clayui.com/images/thumbnail_placeholder.gif" class="image-detail" data-toggle="modal" data-target="#lightbox4">
      </a>
    </div>
    <div class="col-sm text-center align-self-center py-2">
      <a href="#carousel4" data-slide-to="5">
        <img src="https://clayui.com/images/thumbnail_placeholder.gif" class="image-detail" data-toggle="modal" data-target="#lightbox4">
      </a>
    </div>
  </div>
  <div id="lightbox4" class="modal fade" role="dialog" style="display: none;" aria-hidden="true">
    <div class="modal-dialog modal-xl modalCenter" role="document">
      <!--modal-xl modal-lg-->
      <div class="modal-content">
        <div class="modal-body">
          <div class="carousel slide" data-ride="carousel" id="carousel4" data-interval="false">
            <ol class="carousel-indicators">
              <li data-target="#carousel4" data-slide-to="0" class="pointer car_item"></li>
              <li data-target="#carousel4" data-slide-to="1" class="pointer car_item"></li>
              <li data-target="#carousel4" data-slide-to="2" class="pointer car_item active"></li>
              <li data-target="#carousel4" data-slide-to="3" class="pointer car_item"></li>
              <li data-target="#carousel4" data-slide-to="4" class="pointer car_item"></li>
              <li data-target="#carousel4" data-slide-to="5" class="pointer car_item"></li>
            </ol>
            <div class="carousel-inner">
              <div class="carousel-item">
                <img class="d-block w-100 img-fluid imageHeight" src="https://thebig.co/images/blogs/vertical_panorama02.jpg">
              </div>
              <div class="carousel-item">
                <img class="d-block w-100 img-fluid imageHeight" src="https://media-cdn.tripadvisor.com/media/photo-s/09/f4/fe/38/horizontal.jpg">
              </div>
              <div class="carousel-item active">
                <img class="d-block w-100 img-fluid imageHeight" src="https://media-cdn.tripadvisor.com/media/photo-s/09/f4/fe/38/horizontal.jpg">
              </div>
              <div class="carousel-item">
                <img class="d-block w-100 img-fluid imageHeight" src="https://thebig.co/images/blogs/vertical_panorama02.jpg">
              </div>
              <div class="carousel-item">
                <img class="d-block w-100 img-fluid imageHeight" src="https://thebig.co/images/blogs/vertical_panorama02.jpg">
              </div>
              <div class="carousel-item">
                <img class="d-block w-100 img-fluid imageHeight" src="https://thebig.co/images/blogs/vertical_panorama02.jpg">
              </div>
            </div>
            <a class="carousel-control-prev" href="#carousel4" role="button" data-slide="prev">
              <span class="carousel-control-prev-icon" aria-hidden="true"></span>
            </a>
            <a class="carousel-control-next" href="#carousel4" role="button" data-slide="next">
              <span class="carousel-control-next-icon" aria-hidden="true"></span>
            </a>
          </div>
        </div>
      </div>
    </div>
  </div>

最佳答案

  1. 只需为轮播 slider 和 slider 图像使用 max-height

  2. 使用 object-fit:cover 图像将填充其框的高度和宽度,再次保持其纵横比但经常在此过程中裁剪图像。

可选地,我已经使用了 @media 作为响应,稍后您可以根据您的要求调整 max-height

.imageHeight {
    max-height: 460px;
    object-fit: cover;
    -o-object-fit: cover;
}

.carousel.slide {
    max-height: 460px;
}

@media (max-width:767px) {
    .imageHeight {
        max-height: 260px;
        object-fit: cover;
        -o-object-fit: cover;
    }
    .carousel.slide {
        max-height: 260px;
    }
}
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.2.1/css/bootstrap.min.css" integrity="sha384-GJzZqFGwb1QTTN6wy59ffF1BuGJpLSa9DkKMp0DgiMDm4iYMj70gZWKYbI706tWS" crossorigin="anonymous">
<script src="https://code.jquery.com/jquery-3.3.1.min.js" integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.6/umd/popper.min.js" integrity="sha384-wHAiFfRlMFy6i5SRaxvfOCifBUQy1xHdJ/yoi7FRNXMRBu5WHdZYu1hA6ZOblgut" crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.2.1/js/bootstrap.min.js" integrity="sha384-B0UglyR+jN6CkvvICOB2joaf5I4l3gm9GU6Hc1og6Ls7i6U/mkkaduKaBhlAXv9k" crossorigin="anonymous"></script>
<div id="block4">
    <div class="row mt-5">
        <div class="col-sm text-center align-middle">
            <h1>Doors</h1>
        </div>
    </div>
    <div class="row py-2">
        <div class="col-sm text-center align-self-center py-2">
            <a href="#carousel4" data-slide-to="0">
                <img src="https://clayui.com/images/thumbnail_placeholder.gif" class="image-detail" data-toggle="modal" data-target="#lightbox4">
            </a>
        </div>
        <div class="col-sm text-center align-self-center py-2">
            <a href="#carousel4" data-slide-to="1">
                <img src="https://clayui.com/images/thumbnail_placeholder.gif" class="image-detail" data-toggle="modal" data-target="#lightbox4">
            </a>
        </div>
        <div class="col-sm text-center align-self-center py-2">
            <a href="#carousel4" data-slide-to="2">
                <img src="https://clayui.com/images/thumbnail_placeholder.gif" class="image-detail" data-toggle="modal" data-target="#lightbox4">
            </a>
        </div>
        <div class="col-sm text-center align-self-center py-2">
            <a href="#carousel4" data-slide-to="3">
                <img src="https://clayui.com/images/thumbnail_placeholder.gif" class="image-detail" data-toggle="modal" data-target="#lightbox4">
            </a>
        </div>
        <div class="col-sm text-center align-self-center py-2">
            <a href="#carousel4" data-slide-to="4">
                <img src="https://clayui.com/images/thumbnail_placeholder.gif" class="image-detail" data-toggle="modal" data-target="#lightbox4">
            </a>
        </div>
        <div class="col-sm text-center align-self-center py-2">
            <a href="#carousel4" data-slide-to="5">
                <img src="https://clayui.com/images/thumbnail_placeholder.gif" class="image-detail" data-toggle="modal" data-target="#lightbox4">
            </a>
        </div>
    </div>
    <div id="lightbox4" class="modal fade" role="dialog" style="display: none;" aria-hidden="true">
        <div class="modal-dialog modal-xl modalCenter" role="document">
            <!--modal-xl modal-lg-->
            <div class="modal-content">
                <div class="modal-body">
                    <div class="carousel slide" data-ride="carousel" id="carousel4" data-interval="false">
                        <ol class="carousel-indicators">
                            <li data-target="#carousel4" data-slide-to="0" class="pointer car_item"></li>
                            <li data-target="#carousel4" data-slide-to="1" class="pointer car_item"></li>
                            <li data-target="#carousel4" data-slide-to="2" class="pointer car_item active"></li>
                            <li data-target="#carousel4" data-slide-to="3" class="pointer car_item"></li>
                            <li data-target="#carousel4" data-slide-to="4" class="pointer car_item"></li>
                            <li data-target="#carousel4" data-slide-to="5" class="pointer car_item"></li>
                        </ol>
                        <div class="carousel-inner">
                            <div class="carousel-item">
                                <img class="d-block w-100 img-fluid imageHeight" src="https://thebig.co/images/blogs/vertical_panorama02.jpg">
                            </div>
                            <div class="carousel-item">
                                <img class="d-block w-100 img-fluid imageHeight" src="https://media-cdn.tripadvisor.com/media/photo-s/09/f4/fe/38/horizontal.jpg">
                            </div>
                            <div class="carousel-item active">
                                <img class="d-block w-100 img-fluid imageHeight" src="https://media-cdn.tripadvisor.com/media/photo-s/09/f4/fe/38/horizontal.jpg">
                            </div>
                            <div class="carousel-item">
                                <img class="d-block w-100 img-fluid imageHeight" src="https://thebig.co/images/blogs/vertical_panorama02.jpg">
                            </div>
                            <div class="carousel-item">
                                <img class="d-block w-100 img-fluid imageHeight" src="https://thebig.co/images/blogs/vertical_panorama02.jpg">
                            </div>
                            <div class="carousel-item">
                                <img class="d-block w-100 img-fluid imageHeight" src="https://thebig.co/images/blogs/vertical_panorama02.jpg">
                            </div>
                        </div>
                        <a class="carousel-control-prev" href="#carousel4" role="button" data-slide="prev">
                            <span class="carousel-control-prev-icon" aria-hidden="true"></span>
                        </a>
                        <a class="carousel-control-next" href="#carousel4" role="button" data-slide="next">
                            <span class="carousel-control-next-icon" aria-hidden="true"></span>
                        </a>
                    </div>
                </div>
            </div>
        </div>
    </div>

使用position:absolute方法:

.carousel-item {
  padding-bottom: 56%;
  overflow: hidden;
  position: relative;
}
.imageHeight {
    object-fit: cover;
    -o-object-fit: cover;
    position: absolute;
    top: 0;
    bottom: 0;
    left: 0;
    right: 0;
    margin: auto;
}
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.2.1/css/bootstrap.min.css" integrity="sha384-GJzZqFGwb1QTTN6wy59ffF1BuGJpLSa9DkKMp0DgiMDm4iYMj70gZWKYbI706tWS" crossorigin="anonymous">
<script src="https://code.jquery.com/jquery-3.3.1.min.js" integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.6/umd/popper.min.js" integrity="sha384-wHAiFfRlMFy6i5SRaxvfOCifBUQy1xHdJ/yoi7FRNXMRBu5WHdZYu1hA6ZOblgut" crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.2.1/js/bootstrap.min.js" integrity="sha384-B0UglyR+jN6CkvvICOB2joaf5I4l3gm9GU6Hc1og6Ls7i6U/mkkaduKaBhlAXv9k" crossorigin="anonymous"></script>
<div id="block4">
    <div class="row mt-5">
        <div class="col-sm text-center align-middle">
            <h1>Doors</h1>
        </div>
    </div>
    <div class="row py-2">
        <div class="col-sm text-center align-self-center py-2">
            <a href="#carousel4" data-slide-to="0">
                <img src="https://clayui.com/images/thumbnail_placeholder.gif" class="image-detail" data-toggle="modal" data-target="#lightbox4">
            </a>
        </div>
        <div class="col-sm text-center align-self-center py-2">
            <a href="#carousel4" data-slide-to="1">
                <img src="https://clayui.com/images/thumbnail_placeholder.gif" class="image-detail" data-toggle="modal" data-target="#lightbox4">
            </a>
        </div>
        <div class="col-sm text-center align-self-center py-2">
            <a href="#carousel4" data-slide-to="2">
                <img src="https://clayui.com/images/thumbnail_placeholder.gif" class="image-detail" data-toggle="modal" data-target="#lightbox4">
            </a>
        </div>
        <div class="col-sm text-center align-self-center py-2">
            <a href="#carousel4" data-slide-to="3">
                <img src="https://clayui.com/images/thumbnail_placeholder.gif" class="image-detail" data-toggle="modal" data-target="#lightbox4">
            </a>
        </div>
        <div class="col-sm text-center align-self-center py-2">
            <a href="#carousel4" data-slide-to="4">
                <img src="https://clayui.com/images/thumbnail_placeholder.gif" class="image-detail" data-toggle="modal" data-target="#lightbox4">
            </a>
        </div>
        <div class="col-sm text-center align-self-center py-2">
            <a href="#carousel4" data-slide-to="5">
                <img src="https://clayui.com/images/thumbnail_placeholder.gif" class="image-detail" data-toggle="modal" data-target="#lightbox4">
            </a>
        </div>
    </div>
    <div id="lightbox4" class="modal fade" role="dialog" style="display: none;" aria-hidden="true">
        <div class="modal-dialog modal-xl modalCenter" role="document">
            <!--modal-xl modal-lg-->
            <div class="modal-content">
                <div class="modal-body">
                    <div class="carousel slide" data-ride="carousel" id="carousel4" data-interval="false">
                        <ol class="carousel-indicators">
                            <li data-target="#carousel4" data-slide-to="0" class="pointer car_item"></li>
                            <li data-target="#carousel4" data-slide-to="1" class="pointer car_item"></li>
                            <li data-target="#carousel4" data-slide-to="2" class="pointer car_item active"></li>
                            <li data-target="#carousel4" data-slide-to="3" class="pointer car_item"></li>
                            <li data-target="#carousel4" data-slide-to="4" class="pointer car_item"></li>
                            <li data-target="#carousel4" data-slide-to="5" class="pointer car_item"></li>
                        </ol>
                        <div class="carousel-inner">
                            <div class="carousel-item">
                                <img class="d-block w-100 img-fluid imageHeight" src="https://thebig.co/images/blogs/vertical_panorama02.jpg">
                            </div>
                            <div class="carousel-item">
                                <img class="d-block w-100 img-fluid imageHeight" src="https://media-cdn.tripadvisor.com/media/photo-s/09/f4/fe/38/horizontal.jpg">
                            </div>
                            <div class="carousel-item active">
                                <img class="d-block w-100 img-fluid imageHeight" src="https://media-cdn.tripadvisor.com/media/photo-s/09/f4/fe/38/horizontal.jpg">
                            </div>
                            <div class="carousel-item">
                                <img class="d-block w-100 img-fluid imageHeight" src="https://thebig.co/images/blogs/vertical_panorama02.jpg">
                            </div>
                            <div class="carousel-item">
                                <img class="d-block w-100 img-fluid imageHeight" src="https://thebig.co/images/blogs/vertical_panorama02.jpg">
                            </div>
                            <div class="carousel-item">
                                <img class="d-block w-100 img-fluid imageHeight" src="https://thebig.co/images/blogs/vertical_panorama02.jpg">
                            </div>
                        </div>
                        <a class="carousel-control-prev" href="#carousel4" role="button" data-slide="prev">
                            <span class="carousel-control-prev-icon" aria-hidden="true"></span>
                        </a>
                        <a class="carousel-control-next" href="#carousel4" role="button" data-slide="next">
                            <span class="carousel-control-next-icon" aria-hidden="true"></span>
                        </a>
                    </div>
                </div>
            </div>
        </div>
    </div>

关于css - 如何将带有轮播图像的 bootstrap4 模态调整到页面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55992997/

相关文章:

css - 是否可以仅在第一段应用文本溢出省略号?

html - 从 Bootstrap 3.3.7 迁移到 Bootstrap 4 : huge blank space at the bottom of the page

css - 模态主体中的 radio 到 slider 无法正确显示

css - 修复 2 个 Internet Explorer 7 css 错误

html - 单击链接时悬停打开下拉菜单并关闭菜单

css - <h :outputStylesheet doesn't work within JSF <ui:composition

html - 我怎样才能得到我想回复的特定评论的 ID

jquery - Slick Carousel Slider 覆盖 Bootstrap : Flex alignment issue

javascript - Meteor 的 Iron Router 不关闭模态对话框

php - 同一页面上的 2 个不同模态会引发错误