0

我想在我的新闻网站(学校项目)的移动版本上制作 8 张卡片。我希望卡片都具有相同的比例,但是,我为卡片保存在计算机上的图像大小有所不同(其中一些更高)。

有没有办法让图像、标题和文本都适合卡片,而无需在将每个图像添加到项目之前调整其大小?

我希望所有卡片都像这样

图像尺寸不同时卡片的外观

代码:

img {
  max-width: 100%;
  max-height: 100%;
  display: block;  
}

.cards {
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  margin: 5px;
}


.card{
  display: flex;
  flex-direction: column;
  padding: 5px;
  margin: 20px;
  margin-bottom: 5px;
  height: 280px;
  box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19);
}
4

2 回答 2

0

只需给您的图像一个高度值,该值是您希望图片达到的最高值。您必须将宽度设置为自动以避免拉伸图片。

img {
    height: 300px; /* play around with this number until you get the height you need */
    width: auto;
    max-width: 100%;
}
于 2020-08-25T16:18:16.817 回答
0

通常我将图像作为背景并将其居中放置。您也可以将所有背景属性放在一起,但如果您使用 php,我建议您仅将background-image放入样式标签,并将其余部分作为类属性。

css 的解释

溢出:隐藏;-> 这隐藏了图像的额外边界

背景尺寸:封面;-> 这使得图像根据容器大小尽可能地拉伸/调整大小(事实上我使用了 600x800 的图像)语法

背景位置:中心中心;-> 如果您通常修剪图像,沿所有侧面均匀修剪它会更安全,但这取决于您。句法

奖励:只是为了确保避免小图像像图案一样重复,您还可以添加: background-repeat: no-repeat; 如果你设置 background-size: cover 你不需要这个。

/* where the magic happens */
.img-as-bg {
  height: 300px;
  overflow: hidden;
  background-size: cover;
  background-position: center center;
}


/* extra style copied from your source */
.cards {
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  margin: 5px;
}


.card{
  display: flex;
  flex-direction: column;
  padding: 5px;
  margin: 20px;
  margin-bottom: 5px;
  height: 280px;
  box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19);
}
<div class="cards">
  <div class="card" style="width: 18rem;">
    <div class="img-as-bg" style="background-image: url('https://via.placeholder.com/600x800/0055ff');"></div>
    <div class="card-body">
      <h5 class="card-title">Card title</h5>
      <p class="card-text">Some quick example text to build on the card title and make up the bulk of the card's content.</p>
      <a href="#">Read more</a>
    </div>
  </div>

  <div class="card" style="width: 18rem;">
    <div class="img-as-bg" style="background-image: url('https://via.placeholder.com/500x900/00ffff');"></div>
    <div class="card-body">
      <h5 class="card-title">Card title</h5>
      <p class="card-text">Some quick example text to build on the card title and make up the bulk of the card's content.</p>
      <a href="#">Read more</a>
    </div>
  </div>
</div>

于 2020-08-25T16:28:38.390 回答