3
我得到了两个元素列表,我想通过简单的CSS转换将项目从一个列表移动到另一个列表。将元素移动到不同的父元素后,CSS转换不运行
逻辑:
- 的
hidden
类添加到元件以淡出出来(opacity: 0, width: 0, plus transition
) - 当过渡结束元件移动到另一清单
- 删除
hidden
类,以便该元件将淡入
HTML
<ul id="list1">
<li id="item1">Item 1</li>
<li id="item2">Item 2</li>
</ul>
<ul id="list2">
<li id="item3">Item 3</li>
<li id="item4">Item 4</li>
</ul>
CSS
...
li {
display: block;
float: left;
height: 80px;
margin: 0 2px;
-webkit-transition: all 1s ease-in-out;
-moz-transition: all 1s ease-in-out;
-o-transition: all 1s ease-in-out;
transition: all 1s ease-in-out;
width: 80px;
}
li.hidden {
opacity: 0;
width: 0;
}
...
JS
$(document).ready(function() {
$('li').click(function() {
var $item = $(this),
parentId = $item.parent().attr('id'),
newParentSelector = (parentId == 'list1') ? '#list2' : '#list1';
$item.addClass('hidden');
$item.one('webkitTransitionEnd otransitionend oTransitionEnd msTransitionEnd transitionend', function(e) {
$item.appendTo(newParentSelector);
$item.removeClass('hidden');
});
});
});
当在LI
项目.hidden
CLA ss被添加过渡动画按预期运行。当LI项目被移动到另一个列表并且.hidden类被移除时,过渡动画不在运行,但该项目以正确的不透明度和宽度出现。
更奇特的是,当我手动切换某个项目的“隐藏”类别(即$('#item2').toggleClass('hidden');
)时,fade-in
和fade-out
动画都会运行。
问题在此fiddle中得到证明。
谢谢。奇怪,但它的工作。 1毫秒在IE上不起作用的原因是因为不同的浏览器对计时器有不同的滴答声(IE轮次为1到0,而其他浏览器则轮到1到下一个可接受的值)。通常最好延迟至少20ms。 –