我在「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