Internet Explorer保留3D修复

qal*_*iol 11 html css css3 internet-explorer-10

以下代码适用于除IE.10之外的所有浏览器.

MSDN网站上说以下(我不明白如何申请):

注意W3C规范为此属性定义了preserve-3d的关键字值,表示不执行展平.目前,Internet Explorer 10不支持preserve-3d关键字.除了子元素的法线变换之外,您还可以通过手动将父元素的变换应用于每个子元素来解决此问题.

https://msdn.microsoft.com/en-gb/library/ie/hh673529(v=vs.85).aspx

我的代码(我出于其他原因使用CSS选择器):

div[class^="flip"] {
  display: inline-block;
}
div[class^="flip"] {
  -webkit-perspective: 800;
  -moz-perspective: 800;
  -ms-perspective: 800;
  -o-perspective: 800;
  perspective: 800;
  width: 313px;
  height: 480px;
  position: relative;
  margin-right: 10px;
  margin-left: 10px;
}
div[class^="flip"] .card.flipped {
  -webkit-transform: rotatey(-180deg);
  -moz-transform: rotatey(-180deg);
  -o-transform: rotatey(-180deg);
  transform: rotatey(-180deg);
}
div[class^="flip"] .card {
  width: 100%;
  height: 100%;
  -webkit-transform-style: preserve-3d;
  -moz-transform-style: preserve-3d;
  -o-transform-style: preserve-3d;
  transform-style: preserve-3d;
  -webkit-transition: 0.5s;
  -moz-transition: 0.5s;
  -o-transition: 0.5s;
  transition: 0.5s;
}
div[class^="flip"] .card .face {
  width: 100%;
  height: 100%;
  position: absolute;
  -webkit-backface-visibility: hidden;
  -moz-backface-visibility: hidden;
  -o-backface-visibility: hidden;
  backface-visibility: hidden;
  z-index: 2;
  text-align: center;
}
div[class^="flip"] .card .front {
  position: absolute;
  z-index: 1;
  background: #F5F5F5;
  border: #DDD 1px solid;
}
div[class^="flip"] .card .back {
  -webkit-transform: rotatey(-180deg);
  -moz-transform: rotatey(-180deg);
  -o-transform: rotatey(-180deg);
  transform: rotatey(-180deg);
  background: #F5F5F5;
  border: #DDD 1px solid;
}
Run Code Online (Sandbox Code Playgroud)
<div class="flip1">
  <div class="card">
    <div class="face front">Front content</div>
    <div class="face back">Back content</div>
  </div>
</div>
Run Code Online (Sandbox Code Playgroud)

你能帮帮我吗?

jbu*_*483 4

Internet Explorer 10 和 11 仅部分支持 3D 转换。(旧版本的 Internet Explorer不支持此属性)。


Internet Explorer 10 和 11“仅提供部分支持”,因为:

不支持transform-style:preserve-3d属性。这可以防止嵌套 3D 转换元素。


进一步阅读

建议在下一版本的 Internet Explorer 中实现此属性,因此不幸的是当前的 IE 并不真正支持任何“良好”或“复杂”的 3D 功能。

由于 IE 将“忽略”此属性,因此您可以显示一条横幅消息,通知用户使用 Chrome 或 Firefox 以获得更好的体验(这也意味着您将需要实施更少的浏览器黑客来支持 IE)。


回答你的问题

注意W3C规范为此属性定义了一个关键字值preserve-3d,表示不进行扁平化。目前,Internet Explorer 10 不支持preserve-3d 关键字。除了子元素的正常变换之外,您还可以通过手动将父元素的变换应用到每个子元素来解决此问题。

这建议在子元素上手动应用父元素的变换。因此,父元素 ( ) 上声明的 3d 变换.flip1也应该放置在子元素 (.back.front) 上。