作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 foreach 绑定(bind)和 beforeRemove 回调,以便为我的列表项的删除设置动画。当我移除之前移除的项目上方的项目时,它工作正常,但是当我尝试移除之前移除的项目下方的项目时,转换无法正常工作。
这是一个说明我的问题的 jsfiddle:http://jsfiddle.net/tylerweeres/2szjxzs0/2/
HTML
<h3>Animations</h3>
<div data-bind="foreach: { data: people, beforeRemove: animateOut }">
<div style="padding: 5px;" class="person">
<span data-bind="text: name" style="display: inline-block; width: 200px;"></span>
<button style="padding: 5px 15px;" data-bind="click: $parent.removePerson">Remove</button>
</div>
</div>
.person {
font-family: georgia;
padding: 5px;
transition: all 600ms ease-in-out;
transform-origin: 75px;
}
.person.remove {
transform: translateX(2000px) rotateZ(540deg);
}
function vm () {
"use strict";
var me = this;
me.people = ko.observableArray([
{ "name": "Irma Olsen" },
{ "name": "Winifred Cabrera" },
// ...
{ "name": "Lucius Howard" },
{ "name": "Hedda Santana" }
]);
me.removePerson = function (person) {
me.people.remove(person);
};
me.animateOut = function animateOut(node, i, person) {
// Make sure it's not a text node
if (node.nodeType == Node.ELEMENT_NODE) {
node.classList.add("remove");
}
}
}
ko.applyBindings(new vm());
最佳答案
这是一个奇怪的问题,但我认为这与疯狂的浏览器渲染逻辑有关。您需要强制进行未发生的重绘。在某一时刻,我们有:
<div class="person remove">
<div class="person">
<div class=person>
<div class=person>
remove
不再类——当我们添加
remove
类,Knockout 删除数据,但浏览器不知道更新此 div,因此它不执行转换,这意味着
transitionEnd
不会触发,div 也不会被删除。
node.offsetHeight
(一个有效的表达)。
关于knockout.js - 我遇到了 knockout 的 beforeRemove 回调和 CSS 转换问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25211934/
我参加了一些类(class)并阅读了 YAGNI 的用途。但是,作为一个整体,这个原则从来没有让我满意。它引入了一个逻辑悖论。 作为一个假设,您正在设计一个打算向前扩展的框架。 YAGNI(可能还有
我是一名优秀的程序员,十分优秀!