具有边框半径的图像不填充 div [重复]

Posted

技术标签:

【中文标题】具有边框半径的图像不填充 div [重复]【英文标题】:image with border radius does not fill the div [duplicate] 【发布时间】:2021-09-17 07:58:05 【问题描述】:

我试图在具有弯曲边框的 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;

这里是实时代码沙盒环境的链接 link

【问题讨论】:

【参考方案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
        
        class="img"
        src="https://upload.wikimedia.org/wikipedia/commons/thumb/9/9a/Gull_portrait_ca_usa.jpg/300px-Gull_portrait_ca_usa.jpg"
    />
</div>

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

【讨论】:

【参考方案2】:

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

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

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

【讨论】:

【参考方案3】:

边框及其半径定义在元素的外部。查看带有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;

结果(放大):

【讨论】:

使用轮廓代替边框效果很好【参考方案4】:

只需将您的 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;
 

【讨论】:

【参考方案5】:

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

边框外半径 = 8px

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

结果很完美。

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


.img 
  height: 320px;
  width: 320px;
  border-radius:40px;

【讨论】:

以上是关于具有边框半径的图像不填充 div [重复]的主要内容,如果未能解决你的问题,请参考以下文章

我试图将边界半径添加到我的 div 元素但不工作 [重复]

CSS边框半径和边框折叠[重复]

如何将边框图像放在div内[重复]

边框半径和填充效果不好

在父 div 上设置边框半径修剪图像角在 Safari 中不起作用

CSS和输入100%宽度[重复]