javascript - 用 JS 动画文本内容
问题描述
以下代码使 div 的文本内容在向下滑动时消失。如何在它仍在滑动的同时从上面替换它的内容?我的代码在没有替换新内容的情况下这样做,我只是不知道为什么?我的目标和想法不仅仅是替换文本内容,而是在动画过程中这样做。
var changeText = function(id, newText){
item = document.querySelector(id);
item.animate([
// keyframes
{ transform: 'translateY(0px)', opacity: '1' },
{ transform: 'translateY(1px)', opacity: '0.9' },
{ transform: 'translateY(4px)', opacity: '0.7' },
{ transform: 'translateY(9px)', opacity: '0.5'},
{ transform: 'translateY(14px)', opacity: '0.3' },
{ transform: 'translateY(20px)', content: newText}
], {
// timing options
duration: 500,
});
}
解决方案
您可以在第一个动画完成后立即开始另一个动画。但在开始第二个动画之前,您可以更改文本。
var changeText = function(id, newText){
item = document.querySelector(id);
// item.animate(...) returns an Animation (refer to https://developer.mozilla.org/en-US/docs/Web/API/Element/animate)
let animation = item.animate([
// keyframes
{ transform: 'translateY(0px)', opacity: '1' },
{ transform: 'translateY(1px)', opacity: '0.9' },
{ transform: 'translateY(4px)', opacity: '0.7' },
{ transform: 'translateY(9px)', opacity: '0.5'},
{ transform: 'translateY(14px)', opacity: '0.3' }
], {
// timing options
duration: 500,
});
/* The Animation has an eventHandler
refer to here: https://developer.mozilla.org/en-US/docs/Web/API/Animation
and here: https://developer.mozilla.org/en-US/docs/Web/API/Animation/onfinish
*/
animation.onfinish = function() {
// change text
item.innerText = newText;
// and start the second animation
item.animate([
// keyframes
{ transform: 'translateY(14px)', opacity: '0.3' },
{ transform: 'translateY(9px)', opacity: '0.5' },
{ transform: 'translateY(4px)', opacity: '0.7' },
{ transform: 'translateY(1px)', opacity: '0.9'},
{ transform: 'translateY(0px)', opacity: '1' }
], {
// timing options
duration: 500,
});
};
}
<button onClick="changeText('#txt', 'newTxt')">
Click me!
</button>
<div id="txt">
Initial Text
</div>
推荐阅读
- permissions - 通话记录和短信权限。此政策将影响您的一个或多个应用。
- nginx - 连接到上游(nginx + uwsgi)时连接被拒绝 - 集群
- javascript - Vuex - 基于模块状态的计算属性不会在调度时更新?
- c# - 马拉地语列数据翻译成英文
- r - 达到最小总和所需的列数,按行
- winforms - 使用 PowerShell 在 Excel 中显示图表
- asp.net-mvc - 不知道如何设置Web API,检索数据的问题
- javascript - 为什么我的 href 仅在我手动刷新页面后才有效?
- html - 部分未扩展到 100% 宽度
- sql - 结果中未显示 SQL 空值