2

我试图在具有弯曲边框的 div 内渲染图像。我遇到了一个问题,即图像没有完全填充 div,尽管它们具有相同的边框半径和尺寸。

输出

这是我在 div 中渲染图像的方式

<div className={"container"}>
    <img
      alt={"thumb"}
      className={"img"}
      src={
        "https://upload.wikimedia.org/wikipedia/commons/thumb/9/9a/Gull_portrait_ca_usa.jpg/300px-Gull_portrait_ca_usa.jpg"
      }
    />
  </div>

这是css类

.container {
  height: 32px;
  width: 32px;
  border-radius: 8px;
  border: 1px solid grey;
}

.img {
  height: 32px;
  width: 32px;
  border-radius: 8px;
}

这是实时代码框环境 链接的链接

4

5 回答 5

1

不要使用容器元素为图像添加边框。只需将边框和半径直接应用于图像,如下所示:

.img {
  width: 128px;
  height: 128px;
  border-radius: 32px;
  border: 4px solid grey;
}
<img
    alt="thumb"
    class="img"
    src="https://upload.wikimedia.org/wikipedia/commons/thumb/9/9a/Gull_portrait_ca_usa.jpg/300px-Gull_portrait_ca_usa.jpg"
/>

(我把尺寸放大了一点,以便更容易看到。)

于 2021-07-06T17:18:53.977 回答
1

我更喜欢应用于overflow: hidden容器,除非某些子内容需要在容器外可见。当与边界半径一起使用时,它会掩盖孩子溢出的部分:

.container {
  height: 32px;
  width: 32px;
  border-radius: 8px;
  border: 1px solid grey;
  overflow: hidden;
  
/*  just to make it bigger  */
  transform: scale(15);
  transform-origin: top left;
}

.img {
  height: 32px;
  width: 32px;
}
<div class="container">
    <img
        alt="thumb"
        class="img"
        src="https://upload.wikimedia.org/wikipedia/commons/thumb/9/9a/Gull_portrait_ca_usa.jpg/300px-Gull_portrait_ca_usa.jpg"
    />
</div>

注意:确保您删除了设置为内部图像的任何边框半径。

于 2021-07-06T17:30:23.867 回答
0

边框及其半径定义在元素的外部。查看带有边框的夸张结果20px

.container {
    height: 32px;
    width: 32px;
    border-radius: 8px;
    border: 20px solid gray;
} 

结果(放大):

示例边框

你可以做些什么来解决这个问题:要么在孩子(图像)而不是容器上设置边框。或outline改用:

.container {
    height: 32px;
    width: 32px;
    border-radius: 8px;
    outline: 20px solid gray;
}

结果(放大):

大纲示例

于 2021-07-06T17:19:19.077 回答
0

只需将您的 css 更改为以下内容即可完美运行:

 .container {
    height: 32px;
    width: 32px;
    border-radius: 9px;
    border: 1px solid grey;
 }

 .img {
    height: 32.1px;
    width: 32.1px;
    border-radius: 8px;
    padding: 0;
 }
于 2021-07-06T17:19:49.433 回答
-1

您正在将边框的外半径与图像的外半径进行比较。只有边框的内半径和图像的外半径应该相同。

边框外半径 = 8px

边框内半径 = 图像外半径 = 8px - 边框宽度 = 7px

结果很完美。

在此处输入图像描述

.container {
  height: 320px;
  width: 320px;
  border-radius: 50px;
  border: 10px solid grey;
}

.img {
  height: 320px;
  width: 320px;
  border-radius:40px;
}
于 2021-07-06T17:15:20.023 回答