动画addClass+removeClass转换



假设我有两个盒子,其中一个放在屏幕左上角,使用这个类:

.position1 {
    position: fixed;
    top: 100px;
    left: 100px;
}

另一个位于右下角,使用该类:

.position2 {
    position: fixed;
    bottom: 100px;
    right: 100px;
}

有没有一种简单的方法,使用jQuery或其他方法:

  • 将左上角的长方体滑动(设置动画)到右下角的位置
  • 将右下角的长方体滑动(设置动画)到左上角的位置

通过简单地执行.addClass().removeClass(),我可以在不使用动画的情况下轻松实现这一点。。。但我需要动画本身来模仿盒子之间的"交换位置",而不仅仅是瞬间交换侧面。

我看过jQuery的animate功能,但除非我弄错了,否则它不会显示您可以应用预定义的类(并删除预定义的类)作为animate函数的选项。

看这里:jQuery.animate()只带css类,没有显式样式或这里:http://api.jqueryui.com/switchClass/

您也可以为此使用转换。在使用原始CSS时可能会遇到的一个问题是,无法在像素值和初始(无属性)值之间转换。

以下是一个简单转换的基本示例(仅限webkit),我相信它符合您的要求:

CSS

.changer {
    -webkit-transition: all 2s ease;
}
#one { background-color: blue; }
#two { background-color: red; }
.position1 {
    position: fixed;
    top: 100px;
    left: 100px;
    width: 100px;
    height: 100px;    
}
.position2 {
    position: fixed;
    top: 200px;
    left: 200px;
    width: 100px;
    height: 100px;    
}

HTML

<div id="one" class="changer position1"></div>
<div id="two" class="changer position2"></div>

Javascript(在卸载中运行,超时仅为示例的一点延迟)

window.setTimeout(function() {
    var one = document.getElementById('one');
    var two = document.getElementById('two');  
    one.classList.remove('position1');
    one.classList.add('position2');
    two.classList.remove('position2');
    two.classList.add('position1');
}, 500);

工作Fiddle

相关内容

  • 没有找到相关文章