javascript - CSS 转换不影响替换节点

标签 javascript css css-animations

为什么 showLoadingAndResetAnimation 不能正确淡入,而 showLoading 可以?元素不是淡入,而是立即变得不透明。 https://jsfiddle.net/q56a3mjj/18/

function showLoading() {
    var elem = document.getElementsByClassName("main")[0];
    elem.style.opacity = 1;
}

/* As per css-tricks.com, I restart the animation by        *
* replacing the animated node with a deep-copy of itself    *
* https://css-tricks.com/restart-css-animation/             */
function showLoadingAndResetAnimation() {
    var elem = document.getElementsByClassName("main")[0];
    var newElem = elem.cloneNode(true);
    elem.parentNode.replaceChild(newElem, elem);
    newElem.style.opacity = 1;
}

编辑:我认为发生这种情况是因为浏览器从未将 newElem 视为具有 opacity: 0,因此它认为它不会从 0 过渡。添加 20 毫秒的超时有效。

最佳答案

因为您正在创建一个元素(替换原来的元素)并且 CSS3 transition-delay 事件将在元素生效后触发。

你可以通过删除你的 javascript 来制作你想要的动画并使用它:

@keyframes moveRight {
    0%   {left: 0; opacity : 0}
    50%   {opacity : 1}
    99% {left: 650px; opacity : 0}
    100% {left:0; opacity: 0;}
}

https://jsfiddle.net/q56a3mjj/33/

关于javascript - CSS 转换不影响替换节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49331705/

相关文章:

CSS 动画 "slide in from side"无法在 Chrome 上运行

html - css 动画空白 : nowrap;

javascript - 切换到 JS Defer 转换 jquery ajax 重新加载整个页面

javascript - 执行列排序后 dgrid 无法保留滚动位置

javascript - 清空 Angular 中的输入字段

CSS3 动画在 Firefox 或 Internet Explorer 中不起作用

javascript - React 渲染不必要的组件

css - { height : 100%; position: absolute; } getting browser height? 背后的逻辑是什么

html - Bootstrap 3 将隐藏的 div 仍然加载图像

javascript - 在不使用溢出的情况下隐藏 HTML 页面上的默认滚动条 :hidden?