动态增加的元素transiton失效

作者 : 开心源码 本文共874个字,预计阅读时间需要3分钟 发布时间: 2022-05-13 共199人阅读
function creatEl(){  let box = document.getElementById('box');  for(let i=0;i<4;i++){    let el=doucument.creatElement('div')    el.classList.add('li')    el.text(i)    box.appendChild(el)    el.style.opacity = '1'  }}

乍一看没啥问题,创立元素后append到box元素,再设opacity为1,class li,其中有设transition属性,这里省略不写了。此时调用函数,该出现transition效果,然而并没有。

1. 起因:从创立元素到append再到设opacity,因为因为渲染引擎的优化,浏览器只触发了一次渲染,所以不会有动画。

2. 处理办法:setTimeout强制触发浏览器重绘

function creatEl(){  let box = document.getElementById('box');  for(let i=0;i<4;i++){    let el=doucument.creatElement('div') // 此处肯定用let,具体起因明白块的概念的应该都懂    el.classList.add('li')    el.text(i)    box.appendChild(el)    setTimeout(()=>{ // 用setTimeout强制触发浏览器重绘        el.style.opacity = '1'    },0)  }}

3.如若想要动态创立的元素一个一个浮现

function creatEl(){  let box = document.getElementById('box');  for(let i=0;i<4;i++){    let el=doucument.creatElement('div')    el.classList.add('li')    el.text(i)    box.appendChild(el)    setTimeout(()=>{        el.style.opacity = '1'    },200*i)  // 此处设不同推迟就可,具体要推迟多少可自行设定  }}
说明
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » 动态增加的元素transiton失效

发表回复