【发布时间】:2018-09-05 06:39:45
【问题描述】:
我试图在附加到 DOM 时滑入一个元素。像这样:
$("<div class='column column-hiding'>Content</div>")
.appendTo(container)
.removeClass("column-hiding");
也试过了:
$("<div class='column'>Content</div>")
.appendTo(container)
.addClass("column-showing");
样式定义如下:
.column {
transform: translateX(0%);
transition: all 0.3s ease-out;
}
.column-hiding {
transform: translateX(-100%);
transition: all 0.3s ease-out;
}
或
.column {
transform: translateX(-100%);
transition: all 0.3s ease-out;
}
.column-showing {
transform: translateX(0%);
transition: all 0.3s ease-out;
}
这样它会立即显示该列。此方法在延迟 setTimeout 延迟后有效,但是否有任何其他选项可用于确定应添加/删除类的时间?我还尝试在样式中添加transition-delay,但它仍然会立即显示。
提前感谢您的回答。
注意:我使用的是 jQuery 3。
** 编辑 **
这是一个sn-p:
// this animates instantly
$("<div class='column column-hiding'>Content</div>")
.appendTo($("#container"))
.removeClass("column-hiding");
// this is working
var column = $("<div class='column col2 column-hiding'>Content</div>")
.appendTo($("#container"));
setTimeout(function(){
column.removeClass("column-hiding");
}, 500);
#container {
width: 100px;
height: 300px;
background: silver;
overflow: hidden;
}
.column {
transform: translateX(0%);
transition: all 0.3s ease-out;
background: blue;
width: 100px;
height: 100px;
}
.column-hiding {
transform: translateX(-100%);
transition: all 0.3s ease-out;
}
.col2 {
background: red
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="container"></div>
【问题讨论】:
-
你能在你的问题中创建 sn-p 以更好地理解你的代码是如何工作的吗?
-
好的,我会创建一个..
-
@MaratBadykov 添加了一个。
-
您好,您可以在附加元素后尝试使用 mutationObserver 作为回调函数...见stackoverflow.com/questions/3219758/detect-changes-in-the-dom/…
-
是的,这是一个答案,但它会导致任何性能问题吗?我也在读那个答案。
标签: jquery css transition show-hide