jquery - 进出动画有问题

标签 jquery html css

我制作了进入/退出动画,它使用了 CSS3 的 transition 属性和 jQuery 的 queues。

一个 div 在开始时可见,另一个 div 在开始时隐藏。

运行代码后,我看到退出很顺利,但是入口却没有发生。点击几下后,div 就会消失。

我希望两个动画每次点击都播放一次,先退出。

$(document).ready(function() {
  $(".side").click(function() {
    $(this).css("transform", "rotate(90deg)");
    $(this).css("opacity", "0");
    $(this).css("margin-left", "50px");
    $(this).delay(400).queue(function() {
        $(this).hide();
        var nextTarg = $($(this).attr("next-target"));
        nextTarg.show();
        nextTarg.css("transform", "rotate(0deg)");
        nextTarg.css("opacity", "1");
        nextTarg.css("margin-left", "1.5%");
      });
  });
});
.entrance {
  transition: 0.4s;
}
.box {
  height: 90px;
  width: 90px;
  background-color: violet;
  margin: 1.5%;
}
.different.box {
  background-color: blueviolet;
}
.hidden {
  display: none;
}
.hidden.side {
  transform: rotate(90deg);
  margin-left: 50px;
  opacity: 0;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="side1" class="side entrance box" next-target="#side2"></div>
<div id="side2" class="different hidden side entrance box" next-target="#side1"></div>

最佳答案

稍微改变一下您的 jQueryCSS 将帮助您实现这一点:

代码片段

$(document).ready(function() {
  $(".side").click(function() {
    $(this).css({
      'transform': 'rotate(90deg)',
      'opacity': 0,
      'margin-left': '50px',
    });
    $(this).delay(400).queue(function() {
      $(this).css({
        'visibility': 'hidden'
      });
      var nextTarg = $($(this).attr("next-target"));
      nextTarg.css({
        'visibility': 'visible',
        'transform': 'rotate(0deg)',
        'opacity': 1,
        'margin-left': '8px',
      });
    });
  });
});
.entrance {
  transition: 0.4s;
}
.parent {
  position: relative;
}
.box {
  height: 90px;
  width: 90px;
  background-color: violet;
  margin: 8px;
}
.different.box {
  background-color: blueviolet;
  position: absolute;
    left: 0px;
    top: -8px;
}
.hidden {
  visibility: hidden;
}
.hidden.side {
  transform: rotate(90deg);
  margin-left: 50px;
  opacity: 0;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="parent">
  <div id="side1" class="side entrance box" next-target="#side2"></div>
  <div id="side2" class="different hidden side entrance box" next-target="#side1"></div>
</div>

关于jquery - 进出动画有问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39510304/

相关文章:

jquery - 从 ajax post 在 django View 中创建多个对象

javascript - 向下滚动时替换固定图像,然后将其更改为相对图像

html - 在悬停时更改输入的 BGcolor,然后在 mouseout 时返回,但如果输入有焦点,禁用 mouseout BGcolor 更改

javascript - iFrame 在 phonegap 中全屏显示。我只想要它包含的 div 的高度

jquery - 当分辨率小于时隐藏一个 DIV

javascript - Phonegap 应用程序无法打开外部链接

javascript - 图像 slider 不走运

css - css 样式表 Visual Studio 2015 中的“添加样式规则”选项在哪里?

c# - 如何将波浪号的相对路径呈现为 ../../jquery/javascript 中的相对路径?

html - 是否允许使用 class 和 id 属性?