【问题标题】:Calc image height from width从宽度计算图像高度
【发布时间】:2019-05-31 20:41:14
【问题描述】:

我有未知宽度的图像(100% 的父级,父级大小未知 - 响应式),不同大小的图像,我需要为所有图像设置相同的高度。

我准备了一个小 ode sn-p 向您展示我当前的代码。

#blog {margin: 0; padding: 0;}
#blog li {float: left; width: 48%; list-style: none;}
#blog li:nth-child(2n) {float: right;}
#blog li:nth-child(2n+1) {clear: both;}

#blog li img {display: block; width: 100%; height: calc(100% / 2.5);} /* 2.5 is width/height ratio */
<ul id=blog>
<li><img src=https://picsum.photos/500/300>...</li>
<li><img src=https://picsum.photos/700/250>...</li>
<li><img src=https://picsum.photos/200/100>...</li>
<li><img src=https://picsum.photos/100/80>...</li>
<li><img src=https://picsum.photos/600/540>...</li>
<li><img src=https://picsum.photos/300/300>...</li>
<li><img src=https://picsum.photos/300/300>...</li>
</ul>

是否可以在纯 CSS 中为所有图像设置确切的未知高度,或者我需要在 JS 中计算?

注意:我无法调整这些图像的大小,这种情况下可以接受一点变形(不正确的宽/高比)。

谢谢。

【问题讨论】:

    标签: css image height calc


    【解决方案1】:

    您可以尝试使用 flexbox,您可以在其中使用百分比值和高度,并且每行的高度都相同,而不是全部:

    #blog {
      margin: 0;
      padding: 0;
      display:flex;
      flex-wrap:wrap;
    }
    
    #blog li {
      width: 48%;
      margin:0 1%;
      list-style:none;
    }
    img {
     width:100%;
     height:80%;
     /* object-fit: cover; in case you want to keep the ratio and cut a part of the image*/
    }
    <ul id=blog>
      <li><img src=https://picsum.photos/500/300>...</li>
      <li><img src=https://picsum.photos/700/250>...</li>
      <li><img src=https://picsum.photos/200/100>...</li>
      <li><img src=https://picsum.photos/100/80>...</li>
      <li><img src=https://picsum.photos/600/540>...</li>
      <li><img src=https://picsum.photos/300/300>...</li>
      <li><img src=https://picsum.photos/300/300>...</li>
    </ul>

    【讨论】:

    • 我知道这个问题定义了小的变形是可以接受的。但我想 object-cover 和 object-fit 在这里会是不错的选择
    • @HlibLiapota 是的,如果他可以剪切一部分图像,我们可以添加object-fit:cover,我们将保持比例
    • @TemaniAfif:看起来不错,但我更喜欢所有高度相同的图像。您的解决方案在行中具有相同的高度,而不是针对所有图像。有什么想法吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-28
    • 1970-01-01
    • 2020-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多