当前位置: 首页 > 知识库问答 >
问题:

使用CSS设置img大小,由填充宽度或高度决定。保持长宽比

湛安宁
2023-03-14

给定一个具有设置宽度和高度的框,例如70vhx600px

当高度或宽度的边缘满足时,我们如何在该框内制作图像,展开、放大(并保持纵横比)以停止增长/放大。

这意味着您将始终看到该框中图像的整个高度和宽度。

请注意,框中并排包含几个img,因此当我们“滚动”这个“框”时,我们总是可以看到整个图像。

让我用三张图片来说明这一点(每个图片下面都有注释):

图像上方的第一张图像不填充高度或宽度,但它们保持长宽比。

第二,使用拉伸填充高度。宽度似乎保持不变。

第三,不管外箱的设置高度如何,我们都希望得到什么。

用视频来评论第三个。

请查看它。

我展示了我的愿望和当前的问题。

下面是显示数字3、css和html的代码段。

article.product {
    display: -webkit-box;
    display: -moz-box;
    display: -ms-flexbox;
    display: -webkit-flex;
    display: flex;
    flex: 0 1 auto;
    -ms-flex-direction:column;
    -webkit-flex-direction:column;
    flex-direction:column;
    border:10px solid rgba(230, 230, 230, 1);
    margin-bottom:10px;
}

article.product > section.gallery {
    display: -webkit-box;
    display: -moz-box;
    display: -ms-flexbox;
    display: -webkit-flex;
    display: flex;
    flex: 0 1 auto;
    -ms-flex-direction:row;
    -webkit-flex-direction:row;
    flex-direction:row;
    overflow-x: scroll; -webkit-overflow-scrolling: touch;
}

article.product > section.gallery > img {
    object-fit:contain;
    object-position:0 0;
    border:10px solid red;
    min-height:80vh;
    max-width:1180px;
    max-height:80vh;
}
<article class=product>
  <section class=gallery>
         <img src="https://image-us.samsung.com/SamsungUS/mobile/phones/06102019-new/First_S10e_Lockup1_Black_gallery.jpg?$product-details-jpg$"/>
         
         <img src="https://corporate.bestbuy.com/wp-content/uploads/2018/02/STAR_blog_v01.jpg"/>
         
         <img src="https://i.insider.com/5c80383026289813a2172e82?width=1100&format=jpeg&auto=webp"/>
  </section>
</article>

在展开模式下运行代码段并调整窗口高度。

编辑

更新了剪辑并创建了一个新视频。问题只是高度有一个最小高度。

共有1个答案

孙明德
2023-03-14

将您为图像编写的CSS替换为以下内容

article.product>section.gallery>img {
   max-width: 100%;
   max-height: 100%;
   margin: auto;
}

图像占用较大的属性,即宽度高度边距:自动负责定位图像。

下面的代码段:

article.product {
  display: -webkit-box;
  display: -moz-box;
  display: -ms-flexbox;
  display: -webkit-flex;
  display: flex;
  flex: 0 1 auto;
  -ms-flex-direction: column;
  -webkit-flex-direction: column;
  flex-direction: column;
  border: 10px solid rgba(230, 230, 230, 1);
  margin-bottom: 10px;
}

article.product>section.gallery {
  display: -webkit-box;
  display: -moz-box;
  display: -ms-flexbox;
  display: -webkit-flex;
  display: flex;
  flex: 0 1 auto;
  -ms-flex-direction: row;
  -webkit-flex-direction: row;
  flex-direction: row;
  overflow-x: scroll;
  -webkit-overflow-scrolling: touch;
  height: 70vh;
}

article.product>section.gallery>img {
  max-width: 100%;
  max-height: 100%;
  margin: auto;
}
<article class=product>
  <section class=gallery>
    <img src="https://image-us.samsung.com/SamsungUS/mobile/phones/06102019-new/First_S10e_Lockup1_Black_gallery.jpg?$product-details-jpg$" />

    <img src="https://corporate.bestbuy.com/wp-content/uploads/2018/02/STAR_blog_v01.jpg" />

    <img src="https://i.insider.com/5c80383026289813a2172e82?width=1100&format=jpeg&auto=webp" />
  </section>
</article>
 类似资料:
  • 问题内容: 我有一个可以放在一起的网站,它的固定长宽比大约等于风景,例如视频。 我想使它居中并扩展以填充可用的宽度和可用的高度,但不要在任何一侧变大。 例如: 高而薄的页面将使内容伸展整个宽度,同时保持成比例的高度。 短而宽的页面将使内容伸展到整个高度,并具有成比例的宽度。 我一直在研究两种方法: 使用具有正确长宽比的图像来扩展容器,但我无法在主要浏览器中以相同的方式表现该图像。 设置成比例的底部

  • 问题内容: 目前,通过STYLE,我可以在和高度上使用和,反之亦然,但是我仍然不能将图像分别限制在一个特定的位置,无论是太宽还是太高。 有任何想法吗? 问题答案: 如果仅在图像上定义一维,则将始终保留图像长宽比。 图像是否比您喜欢的更大/更佳? 您可以将其放入DIV中,该DIV设置为图像所需的最大高度/宽度,然后设置“ overflow:hidden”。那将收获超出您想要的任何东西。 如果图像的宽

  • 问题内容: 我有这个标题栏。 我需要searchBar来填补div中剩余的空白。我该怎么做? 这是我的CSS 问题答案: 您可以使用CSS表格单元格实现此布局。 稍微修改您的HTML,如下所示: 只需删除两个元素周围的wrapper 元素即可。 应用以下CSS: 适用于并给它100%的宽度。 对于,,,适用。 对于,将宽度设置为90%,这将迫使所有其他元素计算出缩小以适合的宽度,搜索栏将展开以填充

  • 有没有一种方法,只使用CSS,将图像的高度设置为其容器的高度,同时保持纵横比,允许宽度溢出和隐藏?这听起来有很多要求,但肯定有办法。我的意思是,我希望显示图像的完整高度,但如果宽度比容器允许的宽度宽(使用引导网格系统),那么只需溢出:隐藏。我将高度设置为100%,看起来很好,但图片从侧面挤压,以适合容器内,而不是溢出和被裁剪。通过将宽度设置为100%,它将填充容器。我认为这是使用容器作为标准的10

  • 问题内容: 我只是无法设置导航元素的高度和宽度。 有什么想法我做错了吗? 问题答案: 添加显示:块; a-tag是一个内联元素,因此您的高度和宽度将被忽略。

  • (在stackoverflow上已经提出了类似的问题,但这个问题有更多的限制,例如特定的最大宽度、最大高度、所需的特定高度和宽度,并且没有布局偏移。) 我想要一个具有以下约束的响应图像: 最大宽度:100%,这样它就不会溢出到右侧,并且在减小屏幕宽度时会有响应 如何使用CSS实现这一点? (如果CSS无法实现这一点,那么可能是在JavaScript中?) 我尝试了几个CSS功能,例如对象适合度和最