【问题标题】:Card flip doesn't work properly in IE10卡片翻转在 IE10 中无法正常工作
【发布时间】:2014-03-05 15:14:59
【问题描述】:

卡片翻转在所有浏览器中都可以正常工作,但在 IE10 中效果不佳,悬停后背面的内容旋转了 180 度。

我在谷歌上搜索了很多,但我没有找到任何针对 IE10 的修复程序,这是我的代码

HTML

  <div class="flip-container">
     <div class="flipper">
        <div class="front">
          <h2>Front content</h2>
        </div>
        <div class="back">
          <h2>Back content</h2>
        </div>
     </div>
  </div> 

CSS

 .flip-container {
            perspective: 1000;
           -webkit-perspective: 1000;
           -moz-perspective: 1000;
           -o-perspective: 1000;
      }

 .flip-container:hover .flipper, .flip-container.hover .flipper {
          transform: rotateY(180deg);
           -webkit-transform: rotateY(180deg);
           -moz-transform: rotateY(180deg);
           -ms-transform: rotateY(180deg);
           -o-transform: rotateY(180deg);
}

     .flip-container, .front, .back {
         width: 200px;
         height: 200px;
             border-radius:50%;

        }

     .flipper {
       transition: 0.6s;
           -webkit-transition: 0.6s;
           -moz-transition: 0.6s;
           -ms-transition: 0.6s;
           -o-transition: 0.6s;

       transform-style: preserve-3d;
          -webkit-transform-style: preserve-3d;
          -moz-transform-style: preserve-3d;
          -o-transform-style: preserve-3d;
          -ms-transform-style: preserve-3d;
           position: relative;
    }

    .flipper h2{
           margin: 80px 0 0 30px;
     }

     .front, .back {
       backface-visibility: hidden;
     -webkit-backface-visibility: hidden;
     -moz-backface-visibility: hidden;
     -o-backface-visibility: hidden;

              background:#f2f2f2;
              border:1px solid #ccc;
          position: absolute;
          top: 0;
          left: 0;

    }

  /* front pane, placed above back */
    .front {
     z-index: 2;
     }

 .back {
      transform: rotateY(180deg);
      -webkit-transform: rotateY(180deg);
      -moz-transform: rotateY(180deg);
      -ms-transform: rotateY(180deg);
      -o-transform: rotateY(180deg);
        }

Demo on fiddle

【问题讨论】:

  • 您在 CSS 中使用 transform-style: preserve-3d。 IE 还不支持该属性。 caniuse.com/#search=3d%20transfor
  • 另外,我建议在使用像 -webkit- 这样的供应商前缀时,将不带前缀的标准属性放在供应商前缀之后,以便在支持时最后获取它。
  • 我在供应商前缀之后添加了标准属性,但我没有得到解决方案
  • Keith 为transform-style 属性编写的preserve-3d 值尚不受IE 支持。另请参阅description at Microsoft
  • 已经发布了一个解决方案。为什么不考虑投票赞成/反对?

标签: html css


【解决方案1】:

大家好,我通过对 IE10 使用 preserve-3d 获得了另一个解决方案,因此此代码适用于所有浏览器。这是我的代码。

HTML 结构

 <div class="flip-container">
    <div class="flipper">
        <div class="front">
            front
        </div>
        <div class="back">
            back
        </div>
    </div>
 </div>

CSS

   .flip-container {
        -webkit-perspective: 1000;
        -moz-perspective: 1000;
        -o-perspective:1000;
        -ms-perspective: 1000;
        perspective: 1000;

        -ms-transform: perspective(1000px);
        -moz-transform: perspective(1000px);
        -moz-transform-style: preserve-3d; 
        -ms-transform-style: preserve-3d; 

    }



        /* for IE */
    .flip-container:hover .back, .flip-container.hover .back {
        -webkit-transform: rotateY(0deg);
        -moz-transform: rotateY(0deg);
        -o-transform: rotateY(0deg);
        -ms-transform: rotateY(0deg);
        transform: rotateY(0deg);
    }

    .flip-container:hover .front, .flip-container.hover .front {
        -webkit-transform: rotateY(180deg);
        -moz-transform: rotateY(180deg);
        -o-transform: rotateY(180deg);
        transform: rotateY(180deg);
    }

    /* END: for IE */


    .flipper {
        -webkit-transition: 0.6s;
        -webkit-transform-style: preserve-3d;
        -ms-transition: 0.6s;

        -moz-transition: 0.6s;
        -moz-transform: perspective(1000px);
        -moz-transform-style: preserve-3d;
        -ms-transform-style: preserve-3d;

        transition: 0.6s;
        transform-style: preserve-3d;

        position: relative;
        top: 0;
        left: 0;
        width: 180px;
        height: 180px;
        -webkit-transition: all 0.4s ease-in-out;
        -moz-transition: all 0.4s ease-in-out;
        -o-transition: all 0.4s ease-in-out;
    }

    .front, .back {
        -webkit-backface-visibility: hidden;
        -moz-backface-visibility: hidden;
        -ms-backface-visibility: hidden;
        backface-visibility: hidden;

        -webkit-transition: 0.6s;
        -webkit-transform-style: preserve-3d;

        -moz-transition: 0.6s;
        -moz-transform-style: preserve-3d;

        -o-transition: 0.6s;
        -o-transform-style: preserve-3d;

        -ms-transition: 0.6s;
        -ms-transform-style: preserve-3d;

        transition: 0.6s;
        transform-style: preserve-3d;

        position: absolute;
        top: 0;
        left: 0;
        width: 180px;
        height: 180px;


    }

    .front {
        -webkit-transform: rotateY(0deg);
        -ms-transform: rotateY(0deg);
        background-position: center center;
        z-index: 2;
        background:green;
    }

    .back {
        background: #f2f2f2;
        -webkit-transform: rotateY(-180deg);
        -moz-transform: rotateY(-180deg);
        -o-transform: rotateY(-180deg);
        -ms-transform: rotateY(180deg);
        transform: rotateY(-180deg);
    }

Demo on jsfiddle

【讨论】:

    【解决方案2】:

    这是一个没有transform-style: preserve-3d的小提琴:

    http://jsfiddle.net/myTerminal/ENkt2/29/

    它改用opacity,并在IE10上运行。

    【讨论】:

    • 有很多重构可以做,很多不是 CSS 要求的,但是你有一个可行的解决方案。
    猜你喜欢
    • 1970-01-01
    • 2014-09-27
    • 2015-11-05
    • 2018-06-15
    • 2018-06-12
    • 2016-02-05
    • 2017-05-08
    • 2017-10-10
    • 1970-01-01
    相关资源
    最近更新 更多