是否可以仅使用CSS动画对innerHTML的更改?

Fab*_*cht 6 javascript css css-animations

我的纯JS脚本<p>只是通过使用来改变元素中的文本innerHTML.是否可以仅使用CSS为此更改设置动画,而不使用jQuery?如果是这样,怎么样?

谢谢!

Rav*_*msa 5

在设置innerHTML之前,向容器添加一些类,该类通过CSS设置动画前状态,然后设置innerHTML并删除该类。如果容器具有过渡设置,则应设置动画以达到清洁状态。

 .container {
        transition: all 1s;
        max-height: 300px;
    }

    .container.pre-animation {
        opacity:0;
        max-height: 0;
    }
Run Code Online (Sandbox Code Playgroud)

setTimeout 确保效果更明显

var innerHTMLString = '<h1> I am H1 </h1>';

var container = document.querySelector('.container')

container.classList.add('pre-animation');
container.innerHTML = innerHTMLString +'ravi';
setTimeout(function(){
    container.classList.remove('pre-animation')
},100)
Run Code Online (Sandbox Code Playgroud)

  • 应该。但这取决于您要制作的动画。在这种情况下,您需要淡出当前句子“ opacity:0”,然后更改内部html并将其动画化回“ opacity:1”。 (2认同)
  • 这个答案有正确的想法,但需要进行两次修改才能使其生效。setTimeout 需要为 1000 毫秒,而不是 100,以匹配 CSS 转换持续时间。而更新innerHTML的那一行需要向下移动一行,所以它是*inside* setTimeout函数。 (2认同)