文本正在立即消失,而不是随着时间的推移而消失
Text is fading out immediately rather than over time
我试图在动画过程中使用纯Javascript淡出文本。然而,我的剧本并没有这么做,而是立即将其淡出。有人能解释为什么会发生这种情况,以及如何在不使用jQuery的情况下修复它吗?HTML
<div id="scrollingTextHolder">
<p id="scrollingText">Hello</p>
<button id="moveText">Move Text</button>
</div>
CSS
#scrollingText{
display: block;
margin-top: 25px;
color: black;
}
JS
window.addEventListener("load", function(){
var scrollSpeed = window.requestAnimationFrame ||
window.webkitRequestAnimationFrame ||
window.mozRequestAnimationFrame ||
window.msRequestAnimationFrame ||
window.oRequestAnimationFrame ||
function(callback){
window.setTimeout(callback, 1000 / 60)
};
var moveText = document.getElementById("moveText");
function animateText(){
var scrollingTextElement = document.getElementById("scrollingText");
var currentPosition = parseInt(window.getComputedStyle(scrollingTextElement).getPropertyValue("margin-top"));
var moveTo = 247;
scrollingTextElement.style.opacity = scrollingTextElement.style.opacity - 0.1;
console.log(scrollingTextElement.style.opacity);
if(currentPosition <= moveTo){
scrollingTextElement.style.marginTop = (currentPosition + 3) +"px";
}
if(currentPosition == moveTo){
cancelAnimationFrame(requestAnimationFrame(animateText));
}
requestAnimationFrame(animateText);
}
moveText.addEventListener("click", function(){
requestAnimationFrame(animateText);
})
})
元素的style
属性返回一个空字符串,除非样式是以前用JavaScript设置的或是内联设置的。
因此,这条线路第一次被称为:
scrollingTextElement.style.opacity = scrollingTextElement.style.opacity - 0.1;
这和做这个是一样的:
scrollingTextElement.style.opacity = '' - 0.1;
由于JavaScript处理类型转换的方式,'' - 0.1
变成了-0.1
,这使得元素立即消失。
要解决此问题,可以使用Window.getComputedStyle()获取元素不透明度的真实值,如下所示:
scrollingTextElement.style.opacity =
getComputedStyle(scrollingTextElement).getPropertyValue('opacity') - 0.1;
Fiddle
相关文章:
- Java脚本时间添加
- Json数据包含日期和时间格式
- facebook”;添加评论“;popup获胜'不要消失
- 如何根据时间运行不同的脚本
- 用每小时的差值填充数组/列表-从下拉列表中给定两个时间值
- 在wordpress一定时间后更改自定义字段
- 文本正在立即消失,而不是随着时间的推移而消失
- 如何使下拉菜单在一定时间后消失 JavaScript.
- 警告在设定的时间内消失
- 选择日期时间选择器在单击JQuery UI对话框时消失
- jQuery:使子菜单在一段时间后出现和消失
- 以基于时间的方式消失警报框
- 按钮在一天中的特定时间出现/消失需要javascript
- 网页中的图像会出现一小段时间,然后消失
- 重新加载几次后,时间和日期消失
- Devex超时弹出框不会消失,当时间到了
- 消息在一段时间后消失
- 时间轴的反转会导致时间轴的一部分“消失”.下一出
- 使用jQuery覆盖内联CSS应用了一段时间,然后就消失了.为什么
- Twitter嵌入时间线消失