【问题标题】:CSS dynamic image size in bootstrap引导中的 CSS 动态图像大小
【发布时间】:2021-12-24 09:13:12
【问题描述】:

我得到了一个带有 bootstrap 5 的水平滚动页面。所有图像的高度相同,但宽度不同。我的目标是图像始终使用页面的全宽,因此当调整浏览器窗口大小时,图像也应该缩小。

我缺少什么来实现这一目标?非常感谢您的帮助。

.container-fluid{
  /* Vertical Scroll */
  overflow-x: scroll;
  overflow-y: hidden;
  white-space: nowrap;
  height: 100%;
}

.flex-nowrap {
  -webkit-flex-wrap: nowrap!important;
  -ms-flex-wrap: nowrap!important;
  flex-wrap: nowrap!important;
}

.row {
  flex-direction: column;
}

.col > img {
  min-height: 100px;
  max-height: 300px;
  height: 300px;
  padding-right:10px;

}
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet" />

<div class="container-fluid ">
  <div class="row flex-row d-flex flex-nowrap">
    <div class="col">
      <img src="https://via.placeholder.com/450x600.png" alt="">    
    </div>
    <div class="col">
      <img src="https://via.placeholder.com/500x600.png" alt="">    
    </div>
    <div class="col">
      <img src="https://via.placeholder.com/550x600.png" alt="">    
    </div>
    <div class="col">
      <img src="https://via.placeholder.com/333x600.png" alt="">    
    </div>
    <div class="col">
      <img src="https://via.placeholder.com/450x600.png" alt="">    
    </div>
    <div class="col">
      <img src="https://via.placeholder.com/500x600.png" alt="">    
    </div>
    <div class="col">
      <img src="https://via.placeholder.com/550x600.png" alt="">    
    </div>
    <div class="col">
      <img src="https://via.placeholder.com/333x600.png" alt="">    
    </div>
    <div class="col">
      <img src="https://via.placeholder.com/450x600.png" alt="">    
    </div>
    <div class="col">
      <img src="https://via.placeholder.com/500x600.png" alt="">    
    </div>
    <div class="col">
      <img src="https://via.placeholder.com/550x600.png" alt="">    
    </div>
    <div class="col">
      <img src="https://via.placeholder.com/333x600.png" alt="">    
    </div>
  </div>
</div>

【问题讨论】:

    标签: html css twitter-bootstrap image-resizing bootstrap-5


    【解决方案1】:

    如果您希望.flex-row 的子项的宽度由图像确定,您需要将.col 替换为.w-auto.flex-shrink-1.flex-grow-1 并将.img-fluid 添加到您的图像中。您的样式表中也有一些错误。看看sn-p:

    编辑

    如果您正在寻找垂直响应(不是人们通常的意思),那么在高度设置上使用单位 vh 而不要使用 .flex-shrink-1。这将使图像成为视口高度的百分比,同时保持纵横比。使用height: 30vh;min-height: 100px; 看看更新后的sn-p:

    .container-fluid {
      /* Vertical Scroll  */
      overflow-x: scroll;
      overflow-y: hidden;
      white-space: nowrap;
      height: 100%;
    }
    
    .flex-nowrap {
      -webkit-flex-wrap: nowrap !important;
      -ms-flex-wrap: nowrap !important;
      flex-wrap: nowrap !important;
    }
    
    
    /* .row {
      flex-direction: column;
    } */
    
    .w-auto>img {
      min-height: 100px;
      /* max-height: 300px; */
      height: 30vh;
      padding-right: auto;
    }
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet" />
    <div class="container-fluid ">
      <div class="row flex-row d-flex flex-nowrap">
        <div class="w-auto flex-grow-1">
          <img src="https://via.placeholder.com/450x600.png" class="img-fluid" alt="">
        </div>
        <div class="w-auto flex-grow-1">
          <img src="https://via.placeholder.com/500x600.png" class="img-fluid" alt="">
        </div>
        <div class="w-auto flex-grow-1">
          <img src="https://via.placeholder.com/550x600.png" class="img-fluid" alt="">
        </div>
        <div class="w-auto  flex-grow-1">
          <img src="https://via.placeholder.com/333x600.png" class="img-fluid" alt="">
        </div>
        <div class="w-auto  flex-grow-1">
          <img src="https://via.placeholder.com/450x600.png" class="img-fluid" alt="">
        </div>
        <div class="w-auto  flex-grow-1">
          <img src="https://via.placeholder.com/500x600.png" class="img-fluid" alt="">
        </div>
        <div class="w-auto  flex-grow-1">
          <img src="https://via.placeholder.com/550x600.png" class="img-fluid" alt="">
        </div>
        <div class="w-auto  flex-grow-1">
          <img src="https://via.placeholder.com/333x600.png" class="img-fluid" alt="">
        </div>
        <div class="w-auto  flex-grow-1">
          <img src="https://via.placeholder.com/450x600.png" class="img-fluid" alt="">
        </div>
        <div class="w-auto  flex-grow-1">
          <img src="https://via.placeholder.com/500x600.png" class="img-fluid" alt="">
        </div>
        <div class="w-auto  flex-grow-1">
          <img src="https://via.placeholder.com/550x600.png" class="img-fluid" alt="">
        </div>
        <div class="w-auto  flex-grow-1">
          <img src="https://via.placeholder.com/333x600.png" class="img-fluid" alt="">
        </div>
      </div>
    </div>

    【讨论】:

    • 感谢您的建议,但这种行为不正确,假设我有 20 张图片(我用更多图片更新了您的示例)。我想水平滚动。您的解决方案通过 page-with 而不是 page-height 调整图像大小
    • @endo.anaconda,已更新
    猜你喜欢
    • 2015-11-15
    • 1970-01-01
    • 1970-01-01
    • 2012-11-15
    • 2011-10-29
    • 2018-12-26
    • 2018-09-25
    • 2018-12-28
    • 2014-07-01
    相关资源
    最近更新 更多