javascript - 使用 jQuery 切换两个 CSS 动画只能通过一次

标签 javascript jquery html css

我正在尝试使用 jQuery 在两个 CSS 动画之间切换,但它们只能工作一次!我怎样才能让它继续切换?此外,由于某种原因,这在 jsFiddle 中似乎根本不起作用。请谢谢。

//hide and show counter-button
$('#counter-button').click(function() {
  $('#counter').toggle();

  //move button down/up on click
  if ($('#counter-button').attr('class') === 'movedown') {
    $('#counter-button').addClass('moveup');

  } else {
    $('#counter-button').addClass('movedown');
  }
});
#counter-button {
  font-size: 20px;
  position: fixed;
  right: 90px;
  bottom: 190px;
  z-index: 2;
  cursor: pointer;
}

.movedown {
  animation: down ease forwards 0.5s;
}

@keyframes down {
  from {
    right: 90px;
    bottom: 190px;
  }
  to {
    right: 90px;
    bottom: 100px;
  }
}
.moveup {
  animation: up ease forwards 0.5s;
}
@keyframes up {
  from {
    right: 90px;
    bottom: 100px;
  }
  to {
    right: 90px;
    bottom: 190px;
  }
}
#counter {
  position: fixed;
  height: 80px;
  width: 228px;
  bottom: 100px;
  right: 20px;
  border: 2px solid black;
  border-radius: 5px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="counter-button">
  COUNTER
</div>

<div id="counter"></div>

最佳答案

而不是 .attr('class') === 'movedown' 使用 hasClass() 检查类。在添加 moveup 类时,您应该删除 movedown 类,反之亦然。

检查下面的代码。

//hide and show counter-button
$('#counter-button').click(function() {
  $('#counter').toggle();

  //move button down/up on click
  if ($('#counter-button').hasClass('movedown')) {
    $('#counter-button').addClass('moveup').removeClass('movedown');
  } else {
    $('#counter-button').addClass('movedown').removeClass('moveup');
  }
});
#counter-button {
  font-size: 20px;
  position: fixed;
  right: 90px;
  bottom: 190px;
  z-index: 2;
  cursor: pointer;
}

.movedown {
  animation: down ease forwards 0.5s;
}

@keyframes down {
  from {
    right: 90px;
    bottom: 190px;
  }
  to {
    right: 90px;
    bottom: 100px;
  }
}
.moveup {
  animation: up ease forwards 0.5s;
}
@keyframes up {
  from {
    right: 90px;
    bottom: 100px;
  }
  to {
    right: 90px;
    bottom: 190px;
  }
}
#counter {
  position: fixed;
  height: 80px;
  width: 228px;
  bottom: 100px;
  right: 20px;
  border: 2px solid black;
  border-radius: 5px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="counter-button">
  COUNTER
</div>

<div id="counter"></div>

关于javascript - 使用 jQuery 切换两个 CSS 动画只能通过一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40481997/

相关文章:

JavaScript - 如何使用 DOM 将多个 LI 放入 1 个 UL

jquery - 仅当目标指定为 id 时才显示元素

html - 容器中精确拟合独立背景

javascript - jQuery 为菜单导航和可用性添加延迟

javascript - 如何在博客中提供缩放图像

javascript - JS - 比较两个数组中的两个值似乎不起作用

javascript - Lightbox 关闭时停止播放 Youtube 视频

javascript - 将重复的 JQuery 代码转换为干净的代码

javascript - 将 <div> 的背景颜色设置为里面的十六进制文本

javascript - 单击 :hover of the burger menu? 时如何制作全页宽度下拉菜单