【发布时间】:2017-11-29 20:16:07
【问题描述】:
如果我希望随着时间的推移不定期地更改<div> 的opacity,我可以使用CSS animation 和@keyframes:
.myDiv {
animation: myAnimation 10s linear;
}
@keyframes myAnimation {
0% {opacity: 1;}
80% {opacity: 1;}
81% {opacity: 0.99;}
100% {opacity: 0;}
}
}
但是,如果我想以相同的方式随着时间的推移不规则地更改 <audio class="my-audio"> 元素的 volume 怎么办?
我知道我可以开始:
var myAudio = document.getElementsByClassName('my-audio')[0];
myAudio.volume = 1.0;
但是,当声音剪辑的81% 播放并均匀淡入volume 到0.0 时,我如何将volume 更改为0.99,当声音剪辑的100% 有玩了吗?
这种听觉转换是否有 javascript 语法,或者我是否正在寻找一些不存在的东西(目前)?
【问题讨论】:
-
您可以使用
setTimeout或setInterval自己实现一个。 -
这不能用 CSS 完成,因为
volume是一个对象属性,而不是 CSS 属性。它可以通过 JavaScript 使用setTimeout()来完成,你必须自己做数学来决定音量应该多高以及何时。 -
您可以获得音频元素的
currentTime属性,并且有一个 timeupdate 事件。与duration属性一起,您可以进行所需的数学运算,并在正确的时间开始为volume属性设置较低的值。 -
我会为此创建一个新的音频文件。
标签: javascript html transition html5-audio