【问题标题】:Using 3D transform flip is not working in IE11 (mine is different)使用 3D 变换翻转在 IE11 中不起作用(我的不同)
【发布时间】:2015-05-09 03:59:09
【问题描述】:

我研究了 CSS3 3d 变换,最后我得到了一些 CSS3 3d 翻转动作的代码。所以它在除 Internet Explorer (IE11) 之外的所有浏览器中都能正常工作。 所以我在stackoverflow.com上调查了这个问题。我得到了一些解决方案,但不幸的是这些对我没有用。因此,请查看我的 jsfiddle 链接并为此提供一些解决方案。

代码:

$('#one').click(function() {
        if ($(this).is(':checked')) {
          $("#card").addClass("flipped");
            $(".back #append").append("<p>First one</p>")
        }
    });
$('#two').click(function() {
        if ($(this).is(':checked')) {
          $("#card").addClass("flipped");
            $(".back #append").append("<p>second one</p>")
        }
    });
$('#three').click(function() {
        if ($(this).is(':checked')) {
          $("#card").addClass("flipped");
            $(".back #append").append("<p>third one</p>")
        }
    });
$('#close').click(function() {
    $("#card").removeClass("flipped");
});
.container { 
  width: 200px;
  height: 260px;
  position: relative;
  -ms-perspective: 800px;
  perspective: 800px;
}
#card {
  width: 100%;
  height: 100%;
  position: absolute;
  -ms-transform-style: preserve-3d;
  transform-style: preserve-3d;
  transition: transform 1s;
}
#card figure {
  display: block;
  position: absolute;
  width: 100%;
  height: 100%;
  backface-visibility: hidden;
  margin:0px;
  padding:0px;  
}
#card .front {
  background: red;
}
#card .back {
  background: blue;
    -ms-transform: rotateY( 180deg );
  transform: rotateY( 180deg );
}
#card.flipped {
  -ms-transform: rotateY( 180deg );
  transform: rotateY( 180deg );
}
#close{
    position:absolute;bottom:0px;right:0px;color:#fff;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<section class="container">
  <div id="card">
    <figure class="front">
        <input type="checkbox" id="one"/>one<br></br>
        <input type="checkbox" id="two"/>two<br></br>
        <input type="checkbox" id="three"/>three<br></br>
      </figure>
    <figure class="back">
        <div id="append"></div>
        <div id="close"><button>close</button></div>
    </figure>
  </div>
</section>

更多详情见此链接:http://jsfiddle.net/Rayudu/jy0z8dy1/

请点击复选框然后翻转将发生并单击关闭按钮以删除翻转。

【问题讨论】:

  • 这个答案是否有助于解决您的问题?如果是,请考虑通过单击空心刻度线将其标记为已接受。否则,请详细说明您面临的问题。
  • @Harry,抱歉迟到了。非常感谢。您的回答对我的查询非常有用。很好。
  • @Harry,我有一个疑问。之前我发布了一个关于堆栈溢出的问题。没有人为我提供好处。你能看看我的链接吗? "stackoverflow.com/questions/27655470/…"
  • 该问题已被标记为重复配对。所以无法为那个添加任何答案:(

标签: jquery html css internet-explorer


【解决方案1】:

我之前遇到过同样的问题,发现在翻转状态下使背面可见可以解决这个问题。因此,对于您的情况,添加以下几行应该可以解决 IE11(以及 IE10)中的问题。

#card.flipped figure{
  backface-visibility: visible;
}

$('#one').click(function() {
  if ($(this).is(':checked')) {
    $("#card").addClass("flipped");
    $(".back #append").append("<p>First one</p>")
  }
});
$('#two').click(function() {
  if ($(this).is(':checked')) {
    $("#card").addClass("flipped");
    $(".back #append").append("<p>second one</p>")
  }
});
$('#three').click(function() {
  if ($(this).is(':checked')) {
    $("#card").addClass("flipped");
    $(".back #append").append("<p>third one</p>")
  }
});
$('#close').click(function() {
  $("#card").removeClass("flipped");
});
.container {
  width: 200px;
  height: 260px;
  position: relative;
  -ms-perspective: 800px;
  perspective: 800px;
}
#card {
  width: 100%;
  height: 100%;
  position: absolute;
  -ms-transform-style: preserve-3d;
  transform-style: preserve-3d;
  transition: transform 1s;
}
#card figure {
  display: block;
  position: absolute;
  width: 100%;
  height: 100%;
  backface-visibility: hidden;
  margin: 0px;
  padding: 0px;
}
#card .front {
  background: red;
}
#card .back {
  background: blue;
  -ms-transform: rotateY(180deg);
  transform: rotateY(180deg);
}
#card.flipped {
  -ms-transform: rotateY(180deg);
  transform: rotateY(180deg);
}
#card.flipped figure {
  backface-visibility: visible;
}
#close {
  position: absolute;
  bottom: 0px;
  right: 0px;
  color: #fff;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<section class="container">
  <div id="card">
    <figure class="front">
      <input type="checkbox" id="one" />one
      <br></br>
      <input type="checkbox" id="two" />two
      <br></br>
      <input type="checkbox" id="three" />three
      <br></br>
    </figure>
    <figure class="back">
      <div id="append"></div>
      <div id="close">
        <button>close</button>
      </div>
    </figure>
  </div>
</section>

注意: 上述属性设置的添加似乎会导致 Google Chrome 出现一些闪烁,这可以通过单独覆盖 GC 的设置来克服(如this fiddleweb-tiki)。通常,在无前缀(标准)属性之后添加前缀版本不是一个好方法,但在这里这不是什么大问题,因为我们专门为 Chrome 覆盖。

【讨论】:

  • 抱歉来晚了。你的回答对我很有用。这很棒。谢谢和最好的问候。
  • @Rayudu:别担心,伙计。很高兴能帮上忙:)
猜你喜欢
  • 2014-05-15
  • 2020-06-18
  • 2014-07-24
  • 1970-01-01
  • 2017-10-23
  • 2015-07-06
  • 2023-03-31
  • 1970-01-01
  • 2016-08-13
相关资源
最近更新 更多