首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用JS实现快速DOM动画

使用JS实现快速DOM动画
EN

Stack Overflow用户
提问于 2019-07-30 00:45:10
回答 1查看 80关注 0票数 0

我目前正在设计一个网站,我有一个包含3个下拉列表的部分。

在div单击时,下拉菜单的内容将显示,与其关联的图标将折叠。如果要关闭下拉菜单,它也会出现在另一边。

我之前一直在使用querySelector,在阅读并在JSPerf上看到后者在性能方面更好之后,我切换到了getElementById。

代码语言:javascript
复制
  if (window.getComputedStyle(document.getElementById('show-info-1')).display === "none") {
    document.getElementById('show-info-1').style.display = 'block';
    document.getElementById('show-open-1').style.display = 'none';
    document.getElementById('show-close-1').style.display = 'block';
  } else {
    document.getElementById('show-info-1').style.display = 'none';
    document.getElementById('show-open-1').style.display = 'block';
    document.getElementById('show-close-1').style.display = 'none';
  }
}
document.getElementById("show-2").onclick = function() {
  if (window.getComputedStyle(document.getElementById('show-info-2')).display === "none") {
    document.getElementById('show-info-2').style.display = 'block';
    document.getElementById('show-open-2').style.display = 'none';
    document.getElementById('show-close-2').style.display = 'block';
  } else {
    document.getElementById('show-info-2').style.display = 'none';
    document.getElementById('show-open-2').style.display = 'block';
    document.getElementById('show-close-2').style.display = 'none';
  }
}
document.getElementById("show-3").onclick = function() {
  if (window.getComputedStyle(document.getElementById('show-info-3')).display === "none") {
    document.getElementById('show-info-3').style.display = 'block';
    document.getElementById('show-open-3').style.display = 'none';
    document.getElementById('show-close-3').style.display = 'block';
  } else {
    document.getElementById('show-info-3').style.display = 'none';
    document.getElementById('show-open-3').style.display = 'block';
    document.getElementById('show-close-3').style.display = 'none';
  }
}

我真的希望DOM动画稍微快一点,因为它从这里看起来真的很慢。我也想避免使用jQuery,因为我知道这是一个解决方案,但我想VanillaJS就足够了。

EN

回答 1

Stack Overflow用户

发布于 2019-07-30 01:38:33

您是否考虑过将您的关注点分开,并更多地依靠您的CSS来完成工作?

类似于:

HTML:

代码语言:javascript
复制
<div id="btn-wrapper-2">
  <!-- "show-info-2" -->
  <!-- "show-open-2" -->
  <!-- "show-close-2" -->
</div>

CSS:

代码语言:javascript
复制
.enable-btns-2 > .dropdown {
  display = "block";
}

.enable-btns-2 > .icon {
  display = "none";
}

...

JS:

代码语言:javascript
复制
document.getElementById("show-2").onclick = function() {
  document.getElementById("btn-wrapper-2").classList.toggle("enable-btns-2");
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57258145

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档