我遇到了 CSS 转换问题,在尝试其他操作之前,我想了解问题所在。
一个容器中有 3 个盒子和一个“下一步”按钮。目标是让下一个框顶部出现在顶部,并在按下“下一个”按钮时淡入。通过将框附加到容器来将其定位在顶部,以便将其添加为最后一个元素,从而在顶部可见,并且应该通过 css 过渡淡入。
问题是附加框后 css 过渡似乎不起作用。
如果在未附加的框元素上进行测试,CSS 过渡效果很好。
在这里摆弄 http://jsfiddle.net/z435s/13/,代码如下:
HTML:
<div class="container">
<div class="box red"></div>
<div class="box blue"></div>
<div class="box green"></div>
</div>
<div id="next">Next</div>
JS:
var container = $(".container");
// Save the current list order
var list = container.children(".box");
// The current index
var current = 0;
// Put the first on top
container.append(list[0]);
function next() {
// Figure out what is the index of the next box
if (current + 1 < list.length) current++;
else current = 0;
// Save it in a variable
var target = $(list[current]);
// Put it on top
container.append(target);
// Hide it and then fade it in
target.css("opacity", 0).css("transition", "opacity 1000ms ease-out").css("opacity", 1);
// The fading in is not working
}
$("#next").click(next);
Update:
这个问题的基本解决方案是在将不透明度设置为 0 之后、设置过渡 css 之前在目标上调用 offset() :
target.css("opacity", 0);
target.offset();
target.css("transition", "opacity 1000ms ease-out").css("opacity", 1);
Updated上面的小提琴版本在这里 http://jsfiddle.net/z435s/14/