图像裁剪父元素的边框半径? (苹果浏览器)

Posted

技术标签:

【中文标题】图像裁剪父元素的边框半径? (苹果浏览器)【英文标题】:Image Clipping Parent Element's Border-Radius? (Safari) 【发布时间】:2018-07-30 05:29:41 【问题描述】:

是什么导致图像剪切父元素的border-radius?图像和父元素都应用了border-radius: 50%,但它仍然会导致剪辑发生。

这是我在 Safari 中面临的问题:

据我所知,这似乎是 Safari 特有的问题。有什么意见吗?

body 
  margin: 0;
  padding: 0;
  border: 0;


#photo-container 
  box-sizing: border-box;
  padding: 40px 25% 20px;
  line-height: 0;
  margin: 0;


#photo-container a 
  border: 2px solid blue;
  -webkit-border-radius: 50%;
  -moz-border-radius: 50%;
  border-radius: 50%;
  padding: 5px;
  display: block;
  box-sizing: border-box;


img#photo 
  -webkit-border-radius: 50%;
  -moz-border-radius: 50%;
  border-radius: 50%;
  box-sizing: border-box;
  width: 100%;
  height: auto;
  border: 0;
  padding: 0;
<div id="photo-container">
  <a id="#">
    <img id="photo" src="http://freedesignfile.com/upload/2018/02/most-beautiful-scenery-of-nature-Stock-Photo-04.jpg">
  </a>
</div>

【问题讨论】:

如果您尝试创建一个空的 DIV 并将图像设置为背景,然后查看该 div 上的边框半径是否会产生相同的问题。 试过你的建议,没有成功。我觉得应该有一个简单的解决方案,但也许这是 Safari 中的一个错误? 不确定您所说的“没有成功”是什么意思。这看起来不像 Safari 中带有圆圈的图像吗? jsfiddle.net/jsbd8zd7 @Alexus,感谢您的反馈,尽管我在这里找到了解决方案:***.com/a/48877520/9214076。 【参考方案1】:

找到了解决办法。将-webkit-backface-visibility: hidden;-moz-backface-visibility: hidden; 应用于img#photo 解决了边框剪裁问题。

img#photo 
  -webkit-backface-visibility: hidden;
  -moz-backface-visibility: hidden;
  -webkit-border-radius: 50%;
  -moz-border-radius: 50%;
  border-radius: 50%;
  box-sizing: border-box;
  width: 100%;
  height: auto;
  border: 0;
  padding: 0;

【讨论】:

【参考方案2】:

最初加载页面时,它会显示轻微的重叠错误,直到页面完全加载,然后它在我的 safari 中正确加载。

如果您仍然遇到问题,我可以提出的唯一建议是将box-sizing: border-box; 也添加到#photo-container a

至于为什么会发生,这就是为什么:

Safari 似乎无法正确裁剪图像。因此,即使图像不可见,容器的边框也会被图像覆盖。我测试了几个不同的东西,比如缩小图像的大小等,并且在多个阶段都遇到了类似的问题,所以这不太可能是你可以 100% 解释的问题。

【讨论】:

感谢您的意见,但即使将box-sizing: border-box 应用于#photo-container a,问题仍然存在。 那么,这会被认为是浏览器显示错误吗?

以上是关于图像裁剪父元素的边框半径? (苹果浏览器)的主要内容,如果未能解决你的问题,请参考以下文章

苹果浏览器怎么隐藏边框

vue的cropperjs,在安卓手机跟电脑浏览器都可以拖动裁剪,在苹果手机上无法拖动?

为啥我的边框半径只出现在浏览器的边缘?

边框半径和浏览器缩放

css 如果在使用边框半径时元素的背景正在啜饮,请使用background-clip:padding-box;告诉浏览器扩展

怎样让苹果手机浏览器放大后文字部分自适应屏幕