正如这个问题所观察到的那样,新添加的元素上的立即CSS转换以某种方式被忽略 - 转换的结束状态立即呈现.
例如,给定此CSS(此处省略前缀):
.box {
opacity: 0;
transition: all 2s;
background-color: red;
height: 100px;
width: 100px;
}
.box.in { opacity: 1; }
Run Code Online (Sandbox Code Playgroud)
此元素的不透明度将立即设置为1:
// Does not animate
var $a = $('<div>')
.addClass('box a')
.appendTo('#wrapper');
$a.addClass('in');
Run Code Online (Sandbox Code Playgroud)
我已经看到了几种触发转换以获得预期行为的方法:
// Does animate
var $b = $('<div>')
.addClass('box b')
.appendTo('#wrapper');
setTimeout(function() {
$('.b').addClass('in');
},0);
// Does animate
var $c = $('<div>')
.addClass('box c')
.appendTo('#wrapper');
$c[0]. offsetWidth = $c[0].offsetWidth
$c.addClass('in');
// Does animate
var $d = $('<div>')
.addClass('box d')
.appendTo('#wrapper');
$d.focus().addClass('in');
Run Code Online (Sandbox Code Playgroud)
相同的方法适用于vanilla …
我知道有一个:focus选择器.我似乎无法找到:blur选择器的使用或文档.有吗?