Img 不尊重 html 中的宽度(使用 flexbox)

Posted

技术标签:

【中文标题】Img 不尊重 html 中的宽度(使用 flexbox)【英文标题】:Img doesn't respect width in html (with flexbox) 【发布时间】:2021-11-09 06:47:05 【问题描述】:

我有一些 html 应该在顶部创建一个图像,在下面创建一个图片库。

<!DOCTYPE html>
<html lang="en">
<head>
  <title>your page title goes here</title>
  <meta charset="utf-8" />
  <meta name="viewport" content="width=device-width, initial-scale=1" />
  <link rel="stylesheet" href="index.css" />
</head>
<body>
  <div class="container">
    <h1>My Photo Gallery</h1>
    <div class="gallery">
      <figure>
        <img src="img/dog1.jpeg" >
        <figcaption>Example Photo</figcaption>
      </figure>
      <div class="img-bar">
        <img src="img/dog2.jpeg" />
        <img src="img/dog3.jpeg" />
        <img src="img/dog4.jpeg" />
        <img src="img/dog5.jpeg" />
      </div>
    </div>
  </div>
</body>
</html>

为了设置图片库的样式,我添加了以下样式:

.img-bar
  display: flex;


img 
  width: 100%;


.img-bar img 
  object-fit: cover;
  width: 300px;
  height: 300px;

所有图像文件的尺寸均 > 300 像素 x 300 像素,因此我希望它们遵循 CSS 规则。但是,正如您从下面的照片中看到的那样,第二张图片不符合规则(它的高度大于宽度)。作为参考,该图像文件的实际尺寸为 934 像素 x 1401 像素。

任何帮助将不胜感激!谢谢。

【问题讨论】:

将 flex-shrink:0 添加到您的图像中 【参考方案1】:

您想设置容器的尺寸,然后让里面的图像展开以填充它。我会像这样重新洗牌:

img 
  width: 100%;
  height: 100%;
  object-fit:cover;


.img-bar 
  display:flex;
  width: 300px;
  height: 300px;

这当然适用于所有图像,因此您可能需要为 img-bar 中的图像添加一个类,或者为包含主图像的 figure 元素设置尺寸。

【讨论】:

以上是关于Img 不尊重 html 中的宽度(使用 flexbox)的主要内容,如果未能解决你的问题,请参考以下文章

反应原生 flex - 按钮不尊重“alignSelf”

输入为啥不尊重flex?

UITextView 在 SwiftUI 中可表示不尊重 ScrollView 中的宽度界限

Flex 项目超出 IE 中父项的宽度

Chrome 不尊重视频源内联媒体查询

为啥在 flexbox 中宽度处理方式不同?