css - 容器与内部剪辑元素不匹配

Posted

技术标签:

【中文标题】css - 容器与内部剪辑元素不匹配【英文标题】:css - container not match inner clipped element 【发布时间】:2021-02-15 02:48:45 【问题描述】:

我尝试将内部剪裁的图像放入容器中,但看起来它并没有完全放在容器的中心!

将内部元素准确定位在容器中心的正确方法是什么?

.container 
     position: relative;
     width: 130px;     
     height: 130px;
     overflow: hidden;
     border: 5px solid #e0e0ef;
     border-radius:50%;

.inner 
  position: absolute;
  top: -140px;/**/
  left: -160px;/**/
  clip-path: circle(60px at 200px 220px);
  background-color: #ece0e0;
<div class="container">
<img class="inner"  src="https://upload.wikimedia.org/wikipedia/commons/thumb/5/5d/Crateva_religiosa.jpg/440px-Crateva_religiosa.jpg" >
</div>

【问题讨论】:

【参考方案1】:

这是您要找的吗?我更新了clip-path: circle() 声明,特别是两个position 值。 60px 的圆半径没有改变,但圆心的位置值发生了变化,在父容器中显得更加居中。

.container 
     position: relative;
     width: 130px;     
     height: 130px;
     overflow: hidden;
     border: 5px solid #e0e0ef;
     border-radius:50%;

.inner 
  position: absolute;
  top: -140px;/**/
  left: -160px;/**/
  clip-path: circle(60px at 225px 205px);
  background-color: #ece0e0;
<div class="container">
<img class="inner"  src="https://upload.wikimedia.org/wikipedia/commons/thumb/5/5d/Crateva_religiosa.jpg/440px-Crateva_religiosa.jpg" >
</div>

【讨论】:

【参考方案2】:

用计算函数改变上/左!

.container 
     position: relative;
     width: 130px;     
     height: 130px;
     overflow: hidden;
     border: 5px solid #e0e0ef;
     border-radius:50%;

.inner 
  --x: 200px;
  --y: 220px;
  position: absolute;
  top: calc(60px + 5px - var(--y));
  left: calc(60px + 5px - var(--x));
  clip-path: circle(60px at var(--x) var(--y));
  background-color: #ece0e0;
<div class="container">
<img class="inner" style="--x:150px;--y:100px"   src="https://upload.wikimedia.org/wikipedia/commons/thumb/5/5d/Crateva_religiosa.jpg/440px-Crateva_religiosa.jpg" >
</div>

【讨论】:

以上是关于css - 容器与内部剪辑元素不匹配的主要内容,如果未能解决你的问题,请参考以下文章

将剪辑路径应用于父元素会导致子元素的动画不稳定

Safari 不允许隐藏溢出的 svg 剪辑路径溢出容器

CSS使容器相对父元素垂直水平居中定位(父容器及子元素大小不确定)

复制与一个块相关的所有 CSS(及其子块)

如何找到已排序容器的匹配元素的索引?

可以将 SVG 剪辑路径相对于其容器居中吗?