javascript - 为什么我的翻转动画在 chrome 和 safari 中不起作用?

标签 javascript css cross-browser

第一次发帖。 对不起,如果我的代码有点乱,我还是个初学者,我一直在努力让这个翻转动画在 chrome 和 safari 上工作。它适用于 firefox,但我不明白为什么翻转动画在 chrome 上不能正常工作。

function flip(){
  document.getElementById('card').classList.toggle('flip');
}

function flip2(){
  document.getElementById('card2').classList.toggle('flip');
}

function flip3(){
  document.getElementById('card3').classList.toggle('flip');
}
h4{
	font-size: 2em;
}

#week-wrap {
	height: auto;  
	max-width: 100%; 
	width: auto; 
	background-color: #efefef;
	text-align: center;
}


#card, #card2, #card3 {
	text-align: center;
    position: relative;
	display: inline-block;
   max-width: 30%;
  cursor:pointer;
  margin: 1%;
-webkit-transition: all 1s ease;  
  transition: all 1s ease;
	 
-webkit-transform-style: preserve-3d;
  transform-style: preserve-3d;
  
  -webkit-backface-visibility: hidden; 
 backface-visibility: hidden;


 border-style: solid; 
    
}

#back{
  top:0;
  left:0;
  -webkit-backface-visibility: hidden;
  backface-visibility: hidden;
  
   
  position: absolute; 
  
  color:white;
  background-color: teal;
  width: 100%;
  height: 100%; 
}

#back{
	-webkit-transform: rotateY(180deg);
  transform: rotateY(180deg);
   
   
}


.figcaption {
	text-align: center; 
    width:100%; 
  height:0;
	font-size: 4em; 
  line-height: 0;
	color:white;
    position:absolute; 
  top:10%;
    z-index:1;
}

#card img {
	-webkit-display:block;
    display:block;
    
    max-width: 100%; 
}

#card2 img {
    display:block;
    max-width: 100%; 
}

#card3 img {
    display:block;
    max-width: 100%; 
}

.flip{
	-webkit-transform: rotateY(180deg);
  transform: rotateY(180deg);
  
    
}
<div id="week-wrap">

<div id="card" onclick="flip()">
	<div class="figcaption">Front</div>
	<img src="http://www.petakids.com/wp-content/uploads/2015/11/Baby-Bunny.jpg" />
  <div id="back"><h3>Back</h3>
  </div> 
  
</div>
    
    <div id="card2" onclick="flip2()">
	<div class="figcaption">Front </div>
	<img src="http://www.petakids.com/wp-content/uploads/2015/11/Baby-Bunny.jpg" />
      <div id="back"><h3>Back</h3>
  </div> 
        
      
</div>
      
       <div id="card3" onclick="flip3()">
	<div class="figcaption">Front </div>
	<img src="http://www.petakids.com/wp-content/uploads/2015/11/Baby-Bunny.jpg" />
         <div id="back"><h3>Back</h3>  </div> 
  </div>
  </div>

最佳答案

在后面设置一个z-index,去掉相同的id,让它成为一个类。

function flip() {
  document.getElementById('card').classList.toggle('flip');
}

function flip2() {
  document.getElementById('card2').classList.toggle('flip');
}

function flip3() {
  document.getElementById('card3').classList.toggle('flip');
}
h4 {
  font-size: 2em;
}
#week-wrap {
  height: auto;
  max-width: 100%;
  width: auto;
  background-color: #efefef;
  text-align: center;
}
#card,
#card2,
#card3 {
  text-align: center;
  position: relative;
  display: inline-block;
  max-width: 30%;
  cursor: pointer;
  margin: 1%;
  -webkit-transition: all 1s ease;
  transition: all 1s ease;
  -webkit-transform-style: preserve-3d;
  transform-style: preserve-3d;
  -webkit-backface-visibility: hidden;
  backface-visibility: hidden;
  border-style: solid;
}
.back {
  top: 0;
  left: 0;
  z-index: 1;
  -webkit-backface-visibility: hidden;
  backface-visibility: hidden;
  position: absolute;
  color: white;
  background-color: teal;
  width: 100%;
  height: 100%;
  -webkit-transform: rotateY(180deg);
  transform: rotateY(180deg);
}
.figcaption {
  text-align: center;
  width: 100%;
  height: 0;
  font-size: 4em;
  line-height: 0;
  color: white;
  position: absolute;
  top: 10%;
  z-index: 1;
}
#card img {
  -webkit-display: block;
  display: block;
  max-width: 100%;
}
#card2 img {
  display: block;
  max-width: 100%;
}
#card3 img {
  display: block;
  max-width: 100%;
}
.flip {
  -webkit-transform: rotateY(180deg);
  transform: rotateY(180deg);
}
<div id="week-wrap">
  <div id="card" onclick="flip()">
    <div class="figcaption">Front</div>
    <img src="http://www.petakids.com/wp-content/uploads/2015/11/Baby-Bunny.jpg" />
    <div class="back">
      <h3>Back</h3>
    </div>
  </div>
  <div id="card2" onclick="flip2()">
    <div class="figcaption">Front</div>
    <img src="http://www.petakids.com/wp-content/uploads/2015/11/Baby-Bunny.jpg" />
    <div class="back">
      <h3>Back</h3>
    </div>
  </div>
  <div id="card3" onclick="flip3()">
    <div class="figcaption">Front</div>
    <img src="http://www.petakids.com/wp-content/uploads/2015/11/Baby-Bunny.jpg" />
    <div class="back">
      <h3>Back</h3> 
    </div>
  </div>
</div>

然后你会说你不能点击背面翻页。这与 backface-visibility: hidden; 规则有关。

关于javascript - 为什么我的翻转动画在 chrome 和 safari 中不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39522984/

相关文章:

javascript - 用javascript计算两个日期之间的差异

css - jQuery-Dialog 中的样式表

php - 为什么 FlexySlider 幻灯片没有加载到这个 WordPress 主题中?

css - Chrome上iframe显示异常(Firefox正常)

testing - 您如何记录您的网络浏览器要求?

javascript - 使用 WebAssembly 获取域的 IP 地址或进行 DNS 请求

javascript - jQuery照亮与bootstrap 2.2.2一起使用将无法一起工作: e. css(...)未定义照亮.js

javascript - 如何有条件地测试 componentDidMount 进行 API 调用

javascript - 在 Node.js v 8.9.3 上,扩展类上的 Array.concat 方法会删除空值 - 为什么?

html - 悬停时显示表格行边框