CSS 动画在 IE 和 Edge 中不起作用

标签 css internet-explorer css-animations microsoft-edge

我有以下 CSS 代码,它是一个很好的声纳效果,应用于悬停时的元素。它在 Firefox、Opera 和 Chrome 中运行良好 但我也无法让它在 IE(10+) 和 Edge 中工作。

body {
  background-color: #cccccc;
}
.text {
  position: realtive;
  display: block;
  width: 85px;
  margin: 150px auto 0px;
  background-color: #;
}
.content {
  display: block;
  position: relative;
  height: 100px;
  width: 100px;
  border: 2px solid white;
  border-radius: 100%;
  margin: 20px auto;  
}
.icon {
  display: block;
  height: 100px;
  width: 100px;
  background-color: red;
}
.whiteSonarEffect .icon {
   border-radius: 100%;
   position: relative;
}
.whiteSonarEffect .icon:after {
   position: absolute;
   width: 100%;
   height: 100%;
   border-radius: 100%;
   content:'';
   -webkit-box-sizing: content-box;
   -moz-box-sizing: content-box;
   box-sizing: content-box;
   top: 0;
   left: 0;
}
.whiteSonarEffect .icon:hover {
   color: #fff;
}
.whiteSonarEffect .content:hover .icon:after {
   -webkit-animation: whiteSonarEffect 1.3s ease-out 75ms;
   -moz-animation: whiteSonarEffect 1.3s ease-out 75ms;
   -o-animation: whiteSonarEffect 1.3s ease-out 75ms;
   animation: whiteSonarEffect 1.3s ease-out 75ms;
}
@-webkit-keyframes whiteSonarEffect {
   0% {
       opacity: 0.3;
   }
   40% {
       opacity: 0.5;
       box-shadow: 0 0 0 2px rgba(255, 255, 255, 0.1), 0 0 10px 10px #fff, 0 0 0 10px rgba(255, 255, 255, 0.5);
   }
   100% {
       box-shadow: 0 0 0 2px rgba(255, 255, 255, 0.1), 0 0 10px 10px #fff, 0 0 0 10px rgba(255, 255, 255, 0.5);
       -webkit-transform: scale(1.5);
       opacity: 0;
   }
}
@-moz-keyframes whiteSonarEffect {
   0% {
       opacity: 0.3;
   }
   40% {
       opacity: 0.5;
       box-shadow: 0 0 0 2px rgba(255, 255, 255, 0.1), 0 0 10px 10px #fff, 0 0 0 10px rgba(255, 255, 255, 0.5);
   }
   100% {
       box-shadow: 0 0 0 2px rgba(255, 255, 255, 0.1), 0 0 10px 10px #fff, 0 0 0 10px rgba(255, 255, 255, 0.5);
       -moz-transform: scale(1.5);
       opacity: 0;
   }
}
@-o-keyframes whiteSonarEffect {
   0% {
       opacity: 0.3;
   }
   40% {
       opacity: 0.5;
       box-shadow: 0 0 0 2px rgba(255, 255, 255, 0.1), 0 0 10px 10px #fff, 0 0 0 10px rgba(255, 255, 255, 0.5);
   }
   100% {
       box-shadow: 0 0 0 2px rgba(255, 255, 255, 0.1), 0 0 10px 10px #fff, 0 0 0 10px rgba(255, 255, 255, 0.5);
       -o-transform: scale(1.5);
       opacity: 0;
   }
}
@keyframes whiteSonarEffect {
   0% {
       opacity: 0.3;
   }
   40% {
       opacity: 0.5;
       box-shadow: 0 0 0 2px rgba(255, 255, 255, 0.1), 0 0 10px 10px #fff, 0 0 0 10px rgba(255, 255, 255, 0.5);
   }
   100% {
       box-shadow: 0 0 0 2px rgba(255, 255, 255, 0.1), 0 0 10px 10px #fff, 0 0 0 10px rgba(255, 255, 255, 0.5);
       transform: scale(1.5);
       opacity: 0;
   }
}
<div class="whiteSonarEffect">
  <div class="text"><h3>Hover Me</h3></div>
 <div class="content">
    <div class="icon"></div>
 </div>
</div>

您可以在CodePen上查看:http://codepen.io/ivanchi/pen/YWNjVN 如果有任何建议,我们将不胜感激。

最佳答案

我过去遇到过类似的问题(不记得在哪里/何时),但 IE 要求在 0% 关键帧中设置 box-shadow还。在下面的代码片段中,我添加了与 40% 关键帧中相同的 box-shadow,但为所有阴影指定了 alpha=0 的颜色,以确保它是看不见的。

这适用于 IE11、Edge、Chrome、Opera 和 Firefox。

body {
  background-color: #cccccc;
}
.text {
  position: realtive;
  display: block;
  width: 85px;
  margin: 150px auto 0px;
  background-color: #;
}
.content {
  display: block;
  position: relative;
  height: 100px;
  width: 100px;
  border: 2px solid white;
  border-radius: 100%;
  margin: 20px auto;
}
.icon {
  display: block;
  height: 100px;
  width: 100px;
  background-color: red;
}
.whiteSonarEffect .icon {
  border-radius: 100%;
  position: relative;
}
.whiteSonarEffect .icon:after {
  position: absolute;
  width: 100%;
  height: 100%;
  border-radius: 100%;
  content: '';
  -webkit-box-sizing: content-box;
  -moz-box-sizing: content-box;
  box-sizing: content-box;
  top: 0;
  left: 0;
}
.whiteSonarEffect .icon:hover {
  color: #fff;
}
.whiteSonarEffect .content:hover .icon:after {
  -webkit-animation: whiteSonarEffect 1.3s ease-out 75ms;
  -moz-animation: whiteSonarEffect 1.3s ease-out 75ms;
  -o-animation: whiteSonarEffect 1.3s ease-out 75ms;
  animation: whiteSonarEffect 1.3s ease-out 75ms;
}
@-webkit-keyframes whiteSonarEffect {
  0% {
    opacity: 0.3;
    box-shadow: 0 0 0 2px rgba(255, 255, 255, 0), 0 0 10px 10px rgba(255, 255, 255, 0), 0 0 0 10px rgba(255, 255, 255, 0);
  }
  40% {
    opacity: 0.5;
    box-shadow: 0 0 0 2px rgba(255, 255, 255, 0.1), 0 0 10px 10px #fff, 0 0 0 10px rgba(255, 255, 255, 0.5);
  }
  100% {
    box-shadow: 0 0 0 2px rgba(255, 255, 255, 0.1), 0 0 10px 10px #fff, 0 0 0 10px rgba(255, 255, 255, 0.5);
    -webkit-transform: scale(1.5);
    opacity: 0;
  }
}
@-moz-keyframes whiteSonarEffect {
  0% {
    opacity: 0.3;
    box-shadow: 0 0 0 2px rgba(255, 255, 255, 0), 0 0 10px 10px rgba(255, 255, 255, 0), 0 0 0 10px rgba(255, 255, 255, 0);
  }
  40% {
    opacity: 0.5;
    box-shadow: 0 0 0 2px rgba(255, 255, 255, 0.1), 0 0 10px 10px #fff, 0 0 0 10px rgba(255, 255, 255, 0.5);
  }
  100% {
    box-shadow: 0 0 0 2px rgba(255, 255, 255, 0.1), 0 0 10px 10px #fff, 0 0 0 10px rgba(255, 255, 255, 0.5);
    -moz-transform: scale(1.5);
    opacity: 0;
  }
}
@-o-keyframes whiteSonarEffect {
  0% {
    opacity: 0.3;
    box-shadow: 0 0 0 2px rgba(255, 255, 255, 0), 0 0 10px 10px rgba(255, 255, 255, 0), 0 0 0 10px rgba(255, 255, 255, 0);
  }
  40% {
    opacity: 0.5;
    box-shadow: 0 0 0 2px rgba(255, 255, 255, 0.1), 0 0 10px 10px #fff, 0 0 0 10px rgba(255, 255, 255, 0.5);
  }
  100% {
    box-shadow: 0 0 0 2px rgba(255, 255, 255, 0.1), 0 0 10px 10px #fff, 0 0 0 10px rgba(255, 255, 255, 0.5);
    -o-transform: scale(1.5);
    opacity: 0;
  }
}
@keyframes whiteSonarEffect {
  0% {
    opacity: 0.3;
    box-shadow: 0 0 0 2px rgba(255, 255, 255, 0), 0 0 10px 10px rgba(255, 255, 255, 0), 0 0 0 10px rgba(255, 255, 255, 0);
  }
  40% {
    opacity: 0.5;
    box-shadow: 0 0 0 2px rgba(255, 255, 255, 0.1), 0 0 10px 10px #fff, 0 0 0 10px rgba(255, 255, 255, 0.5);
  }
  100% {
    box-shadow: 0 0 0 2px rgba(255, 255, 255, 0.1), 0 0 10px 10px #fff, 0 0 0 10px rgba(255, 255, 255, 0.5);
    transform: scale(1.5);
    opacity: 0;
  }
}
<div class="whiteSonarEffect">
  <div class="text">
    <h3>Hover Me</h3>
  </div>
  <div class="content">
    <div class="icon"></div>
  </div>
</div>

关于CSS 动画在 IE 和 Edge 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38035791/

相关文章:

css - Bootstrap 4 和列排序

javascript - Jquery 设置边界使动画不会离开屏幕

Jquery 填充选择菜单列表在 ie 中不起作用

javascript - 如何添加自定义 css3 动画以及悬停时的过渡?

javascript - 带有复选框的表 tr td,如果没有选中复选框,则应用父 tr 类

internet-explorer - IE 8 在 ssl 的 CNAME 重定向上抛出错误

c# - 通过 Options 类或 DesiredCapability 禁用 IE 弹出窗口拦截器

Angular 2 : Re-using same animation for multiple elements

SVG CSS 动画不一致

css - 在不裁剪的情况下仅对 SVG 中的一条路径进行动画处理