如何使用 ReactJS 将图像正确地放入 HTML 和 CSS 中的 div

How to properly fit an image into a div in HTML and CSS using ReactJS

我即将完成一个小型的血管图像数据库。正如您从下面的屏幕截图中看到的,我遇到的问题 是尽管我将 css 类 固定为特定宽度,但卡片的尺寸都不一样。我正在尝试让所有卡片的宽度和高度都相同。我做错了什么?

在与此问题相关的代码片段下方:

vessels.js

export default function Vessel({ vessel }) {
    const { name, slug, images /* size */ } = vessel;

    return (
        <div>
        <article className="room">
            <div className="img-container">
                <img src={images[0] || defaultImg} alt="single" />
                <Link to={`/vessels/${slug}`} className="btn-primary">
                    Features
                </Link>
            </div>
        </article>
        </div>
    );
}

以及相关的App.css类:

.room {
    display: block;
    box-shadow: var(--lightShadow);
    transition: var(--mainTransition);
}    
.img-container {
    position: relative;
}
.img-container img {
    width: 100%;
    display: block;
    transition: var(--mainTransition);
}

到目前为止我做了什么:

  1. 我一直在努力研究并找出发生这种情况的原因,但无法理解我做错了什么。我咨询了this source,好像很清楚。我申请了,我得到的结果就是我发布的图片上的结果。

  2. 我也尝试在 css 上添加 height 属性 但这并没有改变问题

    .img-容器 img { 宽度:100%; 高度:100%; 显示:块; 过渡:var(--mainTransition); }

  3. 在某个时候我怀疑这是 visibility 的问题,但这也没有改变我遇到的问题。而且我认为这不是可见性的问题 属性.

在我看来,有一个(可能?)属性 可以被覆盖?或者这不是问题所在。 感谢您指出解决此问题的正确方向。

尝试使用 flexbox 和样式化组件来实现您想要的设计。

示例:

import React from "react";
import styled from "styled-components";
import "./styles.css";

const BoatContainer = styled.div`
  display: flex;
  flex-flow: row wrap;
`;

const BoatImg = styled.img`
  width: 200px;
  margin: 5px;
`;

export default function App() {
  return (
    <div className="App">
      <h1>Behold: boats.</h1>
      <BoatContainer>
        <BoatImg src="https://upload.wikimedia.org/wikipedia/commons/thumb/d/d9/Motorboat_at_Kankaria_lake.JPG/1920px-Motorboat_at_Kankaria_lake.JPG" />
        <BoatImg src="https://upload.wikimedia.org/wikipedia/commons/thumb/c/cb/Boats_at_Bhimili_beach_in_Visakhapatnam.jpg/1280px-Boats_at_Bhimili_beach_in_Visakhapatnam.jpg" />
        <BoatImg src="https://upload.wikimedia.org/wikipedia/commons/thumb/d/d9/Motorboat_at_Kankaria_lake.JPG/1920px-Motorboat_at_Kankaria_lake.JPG" />
        <BoatImg src="https://upload.wikimedia.org/wikipedia/commons/thumb/c/cb/Boats_at_Bhimili_beach_in_Visakhapatnam.jpg/1280px-Boats_at_Bhimili_beach_in_Visakhapatnam.jpg" />
        <BoatImg src="https://upload.wikimedia.org/wikipedia/commons/thumb/d/d9/Motorboat_at_Kankaria_lake.JPG/1920px-Motorboat_at_Kankaria_lake.JPG" />
        <BoatImg src="https://upload.wikimedia.org/wikipedia/commons/thumb/c/cb/Boats_at_Bhimili_beach_in_Visakhapatnam.jpg/1280px-Boats_at_Bhimili_beach_in_Visakhapatnam.jpg" />
      </BoatContainer>
    </div>
  );
}


沙盒演示:https://codesandbox.io/s/stack-63731876-boats-e7onm

这里有一个方便的 CSS flexbox 技巧指南供参考:https://css-tricks.com/snippets/css/a-guide-to-flexbox/