insertAdjacentHTML [重复]后转换不起作用

问题描述 投票:0回答:3
css
3个回答
1
投票

我建议使用动画,只要动画在元素添加到 dom 时启动即可。然后,您可以动态附加具有此动画的元素,并且动画将运行。

您可以找到我刚刚解释的示例:https://jsfiddle.net/w6kqscgn/

p {
  animation: appear 2s;
}

@keyframes appear {
  from { 
    transform: translateX(-100%);
  }
}

1
投票

插入元素然后更改变换属性以触发转换。您应该在稍微延迟后执行此操作,这就是我使用 setTimeout 的原因:

function showNoResults() {
  results.innerHTML = ''
  results.insertAdjacentHTML(
    'afterbegin',
    `<div class='no-results'>
          <h1 >No results found :(</h1>
         </div>`
  )
  setTimeout(function(){
    document.querySelector('.no-results h1').style.transform="translateX(0)";
  },1);
}
.no-results h1 {
  transform: translateX(-100%);
  transition: all 0.2s linear;
}
<div id="results"></div>

<button onclick="showNoResults()">showNoResults</button>


0
投票

一种不同的方法是使用另一个类触发动画:

.no-results h1 {
   transform: translateX(0);
   transition: all 0.2s linear;
}
.no-results.active h1 {
   transform: translateX(-100%);
}

在 HTML 文档中插入元素:

showNoResults() {
  this.cache.results.innerHTML = ''
  this.cache.results.insertAdjacentHTML(
    'afterbegin',
    `<div id="noresults" class='no-results'>
      <h1>No results found :(</h1>
     </div>`
  )
}

要触发动画,只需在需要时将类添加到

div
元素即可:

document.getElementById("noresults").classList.add("active");
© www.soinside.com 2019 - 2024. All rights reserved.