IE11 - border-radius 和 box-shadow 一起导致问题

Posted

技术标签:

【中文标题】IE11 - border-radius 和 box-shadow 一起导致问题【英文标题】:IE11 - border-radius and box-shadow together cause problems 【发布时间】:2018-02-22 03:31:41 【问题描述】:

遵循我的代码:

div
  display: block;
  width: 500px;
  height: 200px;
  border: 1px solid black;
  border-radius: 5px;
  transition: box-shadow 1s;


div:hover
    box-shadow: 25px 25px 0px #000;
<div>Test</div>

它适用于 Chrome、Safari 和 Firefox,但在 Internet Explorer 11 上效果不佳,当 div 不再是焦点时会出现明显的视觉问题。如何解决?

JSFiddle:https://jsfiddle.net/aL0t8g21/

【问题讨论】:

你是如何测试 IE11 的? IE10、11 和 Edge 在我看来都和 Chrome 一样。 @JenniferMichelle 正如 Bob 所描述的,当我悬停 div 时,我可以看到奇怪的伪影。在我看来像是 IE 渲染引擎的问题,因此我认为很难解决。您可以尝试对阴影动画使用 JS 解决方法,即使对于纯 IE 解决方案来说这可能有点过分 是的,我也尝试过解决它我同意@MatthiasS。 IE 的渲染引擎存在问题,如果您愿意,我可以使用 :after:before of you div 为您创建一个解决方法。 @weber 好的,谢谢,这将非常有用... @weber 谢谢,您的解决方案并不优雅,但它有效。如果没有人找到更好的解决方案,我会接受。 【参考方案1】:

进行了更新,让它变得更好。

根据您的评论要求,这里有一个解决方法供您使用 :after:before of you div。

div 
  display: block;
  width: 500px;
  height: 200px;
  border: 1px solid black;
  border-radius: 5px;
  transition: box-shadow 1s;
  position: relative;
  background: #fff;


div:after 
  content: '';
  display: block;
  position: absolute;
  width: 500px;
  height: 200px;
  border-radius: 5px;
  background: #000;
  left: 0;
  top: 0;
  opacity: 0;
  transition: all 1s ease-in-out;
  z-index: -1;


div:hover:after 
  left: 25px;
  top: 25px;
  opacity: 1;
<div>Test</div>

jsfiddle

这在 IE 11 中运行良好。

【讨论】:

以上是关于IE11 - border-radius 和 box-shadow 一起导致问题的主要内容,如果未能解决你的问题,请参考以下文章

border-radius 兼容ie

IE8兼容border-radius.

IE8兼容border-radius

ie8兼容border-radius方法

IE8兼容border-radius

border-radius IE8兼容处理