该练习来自Wes Bos的Javascript30的项目,旨在三十天内每天进行一个JavaScript练习。该项目的完整文档和答案地址:JavaScript30-Github
本文是自己在练习过程中的思路小节。欢迎交流。
思路
监听
keydown
事件,在该事件被触发时播放音效,相应的call-back function被调用:window.addEventListener('keydown', fucntion)
播放音频时,相应的页面HTML按钮元素显示动画效果:
element.classList.add('animation')
动画效果完毕后,该元素恢复到起始状态:
element.clasList.remove('animation')
具体实现
1. 监听keydown
事件,playAudio
作为call-back function被调用,在该事件被触发时播放音效。
|
|
2. 页面按钮的动画效果与恢复
在playAudio方法中给页面中的按钮元素添加了动画效果,改变了按钮元素的大小、边框、阴影式样。
那么如何去掉按钮元素的动画效果呢?
监听按钮元素的transitionend
事件,从下图可以到每一次按下音频按键,该按键发生了transition后的TransitionEvent
。TransitionEvenet
有很多propertyName
,这些propertyName
依赖于通过css对该元素进行了哪些样式的改变。
可以从中选择一个transform
的propertyName
Event进行操作。
|
|
其他
Template literals / 模板字面量
Template literals 是允许嵌入表达式的字符串字面量。
语法:`字符串${表达式}字符串`
示例:
|
|
具体可参看MDN文档 。