javascript - javascript onclick css每次都会淡入,而不仅仅是第一次
问题描述
如何在每次点击时让文本淡入,而不仅仅是第一次使用 css 过渡和 JavaScript?
这是我到目前为止所拥有的
<style>
#data {
transition: .7s;
}
</style>
<h1 id="data"></h1>
<a href="#" id="clicker">click 1</a>
document.getElementById('data').style.opacity = 0;
function go(event){
event.preventDefault();
document.getElementById('data').style.opacity = 1;
document.getElementById('data').innerHTML = 'test';
}
document.getElementById('clicker').addEventListener('click', go);
解决方案
也可以使用Element.animate()来完成:
const dataElement = document.getElementById('data')
dataElement.style.opacity = 0
function go(event) {
event.preventDefault()
dataElement.animate({
opacity: [0, 1]
}, 700).onfinish = () => dataElement.style.opacity = 1
}
document.getElementById('clicker').addEventListener('click', go)
<h1 class="fade-in" id="data">test</h1>
<a href="#" id="clicker">click 1</a>
编辑:
在上面的代码片段中,onfinish
事件处理程序用于维护最终的不透明度值,因为它在动画结束后被设置回 0。但我发现这也可以通过fill: 'forwards'
在关键帧选项中设置来实现:
const dataElement = document.getElementById('data')
dataElement.style.opacity = 0
function go(event) {
event.preventDefault()
dataElement.animate({
opacity: [0, 1]
}, {
duration: 700,
fill: 'forwards'
})
}
document.getElementById('clicker').addEventListener('click', go)
<h1 class="fade-in" id="data">test</h1>
<a href="#" id="clicker">click 1</a>
此外,您可能希望在实施这些方法之前检查浏览器兼容性
如果你想要一个更安全的方法,你可以使用 css 动画:
const data = document.getElementById('data')
data.style.opacity = 0
const clicker = document.getElementById('clicker')
clicker.addEventListener('click', () => {
data.classList.remove('fade-in')
data.offsetWidth // required to trigger a reflow and restart the animation
data.classList.add('fade-in')
})
.fade-in {
animation-name: fadein-animation;
animation-duration: 700ms;
animation-fill-mode: forwards;
}
@keyframes fadein-animation {
0% {
opacity: 0;
}
100% {
opacity: 1;
}
}
<h1 id="data">test</h1>
<a href="#" id="clicker">click 1</a>
推荐阅读
- jquery - 按类将 jQuery 列表拆分为两个按字母顺序排列的部分
- html - 如何模拟按钮点击
- amazon-web-services - 在 AWS 放大控制台上部署 nuxt
- regex - 使用 Grep/Sed 在文件上递归运行 Regex 以存储捕获组
- angular - 架构验证失败并出现以下错误:数据路径“.builders['app-shell']”应该具有必需的属性“类”
- sql-server - SQL SERVER - 加入日历表以获得周末,从周五到周六和周日带来价值
- java - CompletableFuture 和异常 - 这里缺少什么?
- tfs - 是否有隐藏/显示工作项(继承过程)中的字段的选项?
- java - Spring boot + tomcat 8.5 + mongoDB,AsyncRequestTimeoutException
- powerbi - 在计算另一张卡时使用一张卡的价值