如何更改CSS过渡开始?

时间:2019-08-30 14:01:49

标签: html css

当我单击它们时,我试图旋转这两个卡中的每个卡,但无法正常工作。 我想只在单击卡片时才开始过渡,而不是在开始时。

如果有什么方法可以增强此代码,请告诉我,我仍然是初学者

* {
	margin: 0;
	padding: 0;
}
/*body {
	background-color: rgb(236, 236, 236);
}*/

.box {
    width: 190px;
    height: 270px;
    margin: 3px;
    padding: 10px;
    list-style: none;
    font-size: 310px;
    font-family: "Century Schoolbook", serif;
    border-radius: 4px;
    display: inline-block;
    line-height: 255px;
    box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19);
    transition: transform 0.7s linear;
    
}


ul { 
    position: relative;
    top: 70px;
    width: 500px;
    margin: 0 auto;
    text-align: center; 
       
}
.a {
    background: #fff;
    color: #000; 
    transform: rotateY(180deg);
}
.b {
    background: #000;
    color: #fff;
}
.flip {
    transform: rotateY(180deg);
}
.rflip {
    transform: rotateY(0deg);
}
      
    
<!DOCTYPE html>
<html>
  <head>
    <title>S S</title>
	<link rel="stylesheet" href="style.css">
  </head>
  <body>
  <ul>
    <li class="box a" onclick="this.classList.toggle('rflip');">S</li>
  	<li class="box b" onclick="this.classList.toggle('flip');">S</li>
  </ul>
  
  </body>
</html>

2 个答案:

答案 0 :(得分:0)

您可能会研究不同的鼠标事件,例如“ mousedown”或“ mouseup”?并可能添加一个小脚本来处理回调。

<!DOCTYPE html>
<html>
  <head>
    <title>S S</title>
    <link rel="stylesheet" href="style.css">
  </head>
  <body>
  <ul>
    <li class="box a" onmouseup="flipCard($event, true)">S</li>
    <li class="box b" onmouseup="flipCard($event, false)">S</li>
  </ul>
  <script>
    function flipCard(event, goRight) {
       var classToToggle = goRight ? 'rflip' : 'flip';
       event.target.classList.toggle(classToToggle);
    }
  </script>

  </body>
</html>

如果您希望过渡发生在特定时间,则还可以使用超时(1000是毫秒,因此是1秒):

function flipCard(event, goRight) {
   setTimeout(function() {
      var classToToggle = goRight ? 'rflip' : 'flip';
      event.target.classList.toggle(classToToggle);
   }, 1000);
}

这篇文章未经任何测试,但概念应该存在

答案 1 :(得分:0)

在您的rflip类中,我想您希望进行反向翻转,这就是您拥有

的原因
transform: rotateY(180deg);

在班上
如果您想摆脱这种情况,可以尝试

.a {
    background: #fff;
    color: #000; 
    transform: rotateY(360deg);
}
.rflip {
    transform: rotateY(180deg);
}