【问题标题】:How to properly fit an image into a div in HTML and CSS using ReactJS如何使用 ReactJS 将图像正确放入 HTML 和 CSS 中的 div
【发布时间】:2020-12-23 04:16:15
【问题描述】:

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

下面这个问题相关代码的sn-p:

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 的问题,但这也没有改变我遇到的问题。而且我认为这不是可见性属性的问题。

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

【问题讨论】:

    标签: html css reactjs card


    【解决方案1】:

    尝试使用 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

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

    【讨论】:

    • 哈雷您好,感谢您光临并阅读问题。那是一个好主意!我会执行您的建议,并会尽快回复您!感谢您花时间回答! :)
    猜你喜欢
    • 2012-06-05
    • 1970-01-01
    • 1970-01-01
    • 2015-08-20
    • 2015-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-10
    相关资源
    最近更新 更多