我在“button3”上做这个淡出工作时遇到了麻烦。我从opacity = 10开始,尝试在定时器上将其设置为0.0。我发现淡入淡出的每个答案都在eventListener之外,有什么建议?如何在没有J查询的情况下在EventListener中使框褪色?
0
A
回答
0
最简单的事情是添加了持续时间来那箱CSS过渡,然后单击时的不透明度设置为0。这会导致它淡出。
CSS:
#button3{ transition: all 2s linear; }
JS:
document.getElementById("button3").addEventListener("click", function(){ box.style.opacity = 0; });
0
你需要做的是使用setInterval
然后clearInterval
当目标是完全可见(不透明度= 1),或完全隐藏(不透明度= 0)。下面的解决方案仅仅是JavaScript的:
const btn = document.getElementById('btn-toggle-fade');
btn.addEventListener('click', (e) => {
\t const target = document.querySelector(e.target.dataset.target);
// Set default opacity value
if (!target.style.opacity) {
\t target.style.opacity = 1;
}
if (Number(target.style.opacity) === 1) {
\t const fadeOut = setInterval(() => {
\t if (Number(target.style.opacity) < 0.1) {
\t clearInterval(fadeOut);
} else {
\t target.style.opacity = Number(target.style.opacity) - 0.1;
}
}, 100);
} else {
\t const fadeIn = setInterval(() => {
\t if (Number(target.style.opacity) < 1) {
\t target.style.opacity = Number(target.style.opacity) + 0.1;
} else {
\t clearInterval(fadeIn);
}
}, 100);
}
});
#my-div {
background: #000;
color: #fff;
height: 100px;
line-height: 100px;
width: 200px;
text-align: center;
}
<button id="btn-toggle-fade" data-target="#my-div">
Toggle Fade
</button>
<div id="my-div">
Hello
</div>
但是,说实话,我认为以下(与CSS转换)是更好的:
const btn = document.getElementById('btn-toggle-fade');
btn.addEventListener('click', (e) => {
\t const target = document.querySelector(e.target.dataset.target);
if (target.classList.contains('visible')) {
\t target.classList.remove('visible');
target.classList.add('hidden');
} else {
\t target.classList.remove('hidden');
target.classList.add('visible');
}
});
#my-div {
background: #000;
color: #fff;
height: 100px;
line-height: 100px;
width: 200px;
text-align: center;
}
.visible {
opacity: 1;
transition: opacity 2s linear;
visibility: visible;
}
.hidden {
opacity: 0;
transition: visibility 0s 2s, opacity 2s linear;
visibility: hidden;
}
<button id="btn-toggle-fade" data-target="#my-div">
Toggle Fade
</button>
<div id="my-div" class="visible">
Hello
</div>
相关问题
- 1. 如何在没有nodejs msi的情况下安装节点j
- 2. R:如何在没有for-loop的情况下分配A [B [,j],j]
- 3. 如何在没有子查询的情况下为以下查询编写sql
- 4. 如何在没有白色边框的情况下使用CSS居中图像
- 5. 如何在没有Linq的情况下查询DataGridView
- 6. 如何在没有Scala的情况下测试Spark SQL查询
- 7. DocumentDB:如何在没有超时的情况下运行查询
- 8. 在没有模式的情况下在SQL Server中查询XML
- 9. 如何在没有任何子查询的情况下重写SQL查询?
- 10. 使用情况下,如果在查询
- 11. 你如何在jQuery中使框褪色?
- 12. PostgreSQL查询在没有权限的情况下使用表格
- 13. 如何在没有子查询的情况下重写此查询?
- 14. 如何在没有\ n的情况下获得角色?
- 15. 如何在没有app.config的情况下配置角色?
- 16. 如何在没有轮询的情况下查找文件中的更改?
- 17. 如何在没有子查询的情况下聚合一列中的行?
- 18. 如何在没有查询的情况下估算HIVE中的表格大小?
- 19. 如何使用的情况下在DB2列中选择查询
- 20. 如何在SQL查询中使用的情况下
- 21. 在没有使用map/reduce的情况下在MongoDB中进行联盟查询
- 22. 在没有着色器的情况下在bgfx中渲染?
- 23. 如何在没有询问的情况下检查MySQL表是否存在MySQL
- 24. 在没有指定字段名称的情况下查询Solr
- 25. 在没有VBA的情况下向Oracle进行直通查询
- 26. 在没有第二个查询的情况下搜索关系
- 27. 在没有表扫描的情况下合并Hibernate查询
- 28. php和DB在没有Ajax的情况下查询
- 29. 在没有OuterXML的情况下验证(和查询)XmlElement内容?
- 30. 在没有先查询的情况下更新记录?
请张贴带编辑器的代码而不是代码图片。 – T4rk1n
请看第一个[如何问](https://stackoverflow.com/help/how-to-ask) SO是一个平台,您可以从中获得有关您问题的良好建议。但为此,你需要更具体地了解你在问什么?到目前为止你做了什么?在提出请求之前,请查看建议的SO问题并查看它们。尽管如此,你还是没有找到解决方案,那么你可以在这里问一个问题。 –
它是否在事件监听器中是无关紧要的:在监听器外部工作的淡入淡出代码也可以在内部工作。你的函数的问题是你只是使用一个简单的'for'循环,在浏览器重新绘制之前它将运行完成。相反,使用'setTimeout()' - 基于伪循环。 – nnnnnn