3d 过渡后将 div 置于最前面 - css

Bring div to the front after 3d transition - css

我有一张卡片,正面和背面都有信息,当用户将鼠标悬停在卡片上时,它会切换并显示背面的信息。它在 Firefox 中有效,但在 Chrome/Safari 中无效,在这些浏览器中,尽管我尝试使用 z-index 值,但背面的文本被阻止了。需要考虑的一件事是,允许卡片背面溢出容器,这是故意的。谁能告诉我其他两个浏览器需要包含哪些内容?

CSS是基于这个post:http://css3.bradshawenterprises.com/flip/

实施:https://jsfiddle.net/af75qzqm/

示例截图:

适用于 Firefox

不适用于 Chrome

#f1_container {
  position: relative;
  width: 250px;
  height: 80px;
  margin-left: 10px;
  margin-right: 10px;
  margin-bottom: 23px;
  z-index: 0;
  overflow: visible;
  -webkit-perspective: 1000;
  -moz-perspective: 1000;
  -ms-perspective: 1000;
  -o-perspective: 1000;
}

#f1_card {
  position: relative;
  width: 100%;
  height: 100%;
  background-color: #ffffff;
  border: 3px solid transparent;
  border-radius: 3px;
  -webkit-box-shadow: 0 1px 1px #aaa;
  transform-style: preserve-3d;
  -webkit-transform-style: preserve-3d;
  -webkit-transition: all 0.2s linear;
  -moz-transform-style: preserve-3d;
  -moz-transition: all 0.2s linear;
  -ms-transform-style: preserve-3d;
  -ms-transition: all 0.2s linear;
  -o-transform-style: preserve-3d;
  -o-transition: all 0.2s linear;
  transition: all 0.2s linear;
  z-index: 0;
}

#f1_container:hover #f1_card {
  position: relative;
  -webkit-transform: rotateY(180deg);
  -moz-transform: rotateY(180deg);
  -ms-transform: rotateY(180deg);
  -o-transform: rotateY(180deg);
  transform: rotateY(180deg);
  z-index: -10;
}

#f1_container:hover {
  z-index: 10;
}

#f1_container:hover .front {
  z-index: 0;
}

.face {
  position: absolute;
  width: 100%;
  height: 100%;
  -webkit-backface-visibility: hidden;
  -moz-backface-visibility: hidden;
  -ms-backface-visibility: hidden;
  -o-backface-visibility: hidden;
  backface-visibility: hidden;
  padding: 10px;
  color: black;
}

.face.back {
  position: absolute;
  display: block;
  -webkit-transform: rotateY(180deg);
  -moz-transform: rotateY(180deg);
  -ms-transform: rotateY(180deg);
  -o-transform: rotateY(180deg);
  transform: rotateY(180deg);
  box-sizing: border-box;
  height: auto;
  text-align: left;
  background-color: lightblue;
  color: white;
  z-index: 20;
}
<div id="f1_container">
  <div id="f1_card">
    <div class="front face">
      Front
    </div>
    <div class="back face center">
      Back
    </div>
  </div>
</div>

我从 #f1_card 中删除了背景颜色和边框样式,并将它们添加到 .face.front

https://jsfiddle.net/af75qzqm/2/

.face.front {
  background-color: #ffffff;
  border: 3px solid transparent;
  border-radius: 3px;
  -webkit-box-shadow: 0 1px 1px #aaa;
}