相关视频链接:https://www.bilibili.com/video/av8481988/?p=3

Drum kit

做题思路
(1)监听键盘事件 addEventListener(‘事件名’,执行函数);

window.addEventListener(“keydown”,playSound);

(2)当A-L键按下的时候,播放音效 audio.play( );

(3)播放动画 Element.classList.add(“className”);

动画结束之后,移除动画 Element.classList.remove(“className”);

需要了解的知识点

 Html方面:

(一)audio

1.音频格式 .mp3 .wav .ogg
 <audio  data-key="65"  src="sounds/clap.wav" > </audio>

属性

描述

autoplay

autoplay

如果出现该属性,则音频在就绪后马上播放。

controls

controls

如果出现该属性,则向用户显示控件,比如播放按钮。

loop

loop

如果出现该属性,则每当音频结束时重新开始播放。

preload

preload

如果出现该属性,则音频在页面加载时进行加载,并预备播放。

如果使用 "autoplay",则忽略该属性。

src

url

要播放的音频的 URL。

css方面:

(一)min-height: 100vh;

1.min-height可设置元素的最小高度;

2.单位vh:

“视区”所指浏览器内部的可视区域大小,即window.innerWidth/window.innerHeight高度大小,不包含任务栏标题栏以及底部工具栏的浏览器区域大小。1vh即当前视窗的1%。类似的单位还有vw,视窗的宽度

(二)justify-content: center;

1.设置或检索弹性盒子(display: flex;)元素在主轴(横轴)方向上的对齐方式。

2.justify-content: flex-start | flex-end | center | space-between | space-around | initial | inherit;

flex-start

flex-end

center

space-between

space-around

initial

(三)transition过渡

1.元素从一种样式转变到另一个的效果

2.transition : width 2s; // 指定添加效果的css属性为width,效果持续时间为2s

3.属性:

属性

描述

CSS

transition

简写属性,用于在一个属性中设置四个过渡属性。

3

transition-property

规定应用过渡的 CSS 属性的名称。

3

transition-duration

定义过渡效果花费的时间。默认是 0。

3

transition-timing-function

规定过渡效果的时间曲线。默认是 "ease"。

3

transition-delay

规定过渡效果何时开始。默认是 0。

3

其中,过渡效果的时间曲线函数有:

描述

linear

规定以相同速度开始至结束的过渡效果(等于 cubic-bezier(0,0,1,1))。

ease

规定慢速开始,然后变快,然后慢速结束的过渡效果

(cubic-bezier(0.25,0.1,0.25,1))。

ease-in

规定以慢速开始的过渡效果(等于 cubic-bezier(0.42,0,1,1))。

ease-out

规定以慢速结束的过渡效果(等于 cubic-bezier(0,0,0.58,1))。

ease-in-out

规定以慢速开始和结束的过渡效果(等于 cubic-bezier(0.42,0,0.58,1))。

cubic-bezier(n,n,n,n)

在 cubic-bezier 函数中定义自己的值。可能的值是 0 至 1 之间的数值。

(四)transform变换

1.固定的属性:旋转,缩放,偏移,常与transition一起配合使用

2.语法:transform : none | transform-function;

描述

none

定义不进行转换。

translate(x,y)

定义2D转换。

translate3d(x,y,z)

定义3D转换。

translateX(x)

定义转换只是用X轴的值

translateY(y)

定义转换,只是用Y轴的值

translateZ(z)

定义3D转换,只是用Z轴的值。

scale(x[,y]?)

定义2D缩放转换。

scale3d(x,y,z)

定义3D缩放转换。

scaleX(x)

通过设置X轴的值来定义缩放转换。

scaleY(y)

通过设置Y轴的值来定义缩放转换。

scaleZ(z)

通过设置Z轴的值来定义3D缩放转换。

rotate(angle)

定义2D旋转,在参数中规定角度。

rotate3d(x,y,z,angle)

定义3D旋转。

rotateX(angle)

定义沿着X轴的3D旋转。

rotateY(angle)

定义沿着Y轴的3D旋转。

rotateZ(angle)

定义沿着Z轴的3D旋转。

skew(x-angle,y-angle)

定义沿着和Y轴的2D倾斜转换。

skewX(angle)

定义沿着X轴的2D倾斜转换。

skewY(angle)

定义沿着Y轴的2D倾斜转换。

perspective(n)

为3D转换元素定义透视视图。

(五)animation动画

1.元素从一种延时逐渐变化为另一种样式的效果。

2.语法:@keyframes animationname {keyframes-selector {css-styles;}}

3.示例:

@keyframes mymove

{

0%   {top:0px; background:red; width:100px;}

100% {top:200px; background:yellow; width:300px;}

}

4.属性:

属性

描述

CSS

@keyframes

规定动画。

3

animation

所有动画属性的简写属性,除了 animation-play-state 属性。

3

animation-name

规定 @keyframes 动画的名称。

3

animation-duration

规定动画完成一个周期所花费的秒或毫秒。默认是 0。

3

animation-timing-function

规定动画的速度曲线。默认是 "ease"。

3

animation-delay

规定动画何时开始。默认是 0。

3

animation-iteration-count

规定动画被播放的次数。默认是 1。

3

animation-direction

规定动画是否在下一周期逆向地播放。默认是 "normal"。

3

animation-play-state

规定动画是否正在运行或暂停。默认是 "running"。

3

(六)display

1.规定元素应该生成的框的类型

2.display: inline(默) | inline-block | block | none;

Inline

显示为内联元素,元素前后没有换行符

inline-block

显示为行内块元素

Block

显示为块级元素,此元素前后有换行符

None

此元素不会被显示

Js方面

(一)querySelector( ) 和 querySelectorAll( )

1.document.querySelector(css选择器1,选择器2); // 返回的是匹配指定选择器的第一个元素。

2.document.querySelectorAll( css选择器);  //返回的是匹配指定选择起的所有元素

3.querySelectorAll()和getElementByTagName( )区别

https://futu.im/posts/2018-01-20-querySelectorAll-vs-getElementsByTagName/

\

querySelectorAll

getElementsByTagName

遍历方式

深度优先

深度优先

返回值类型

NodeList

HTMLCollection

返回值状态

静态

动态

4.querySelectorAll() 比getElementByTagName() 慢的原因:
https://www.w3cplus.com/javascript/querySelectorAll-vs-getElementsByTagName.html?utm_medium=hao.caibaojian.com&utm_source=hao.caibaojian.com

使用getElementsByTagName方法我们得到的结果就像是一个对象的索引,而通过querySelectorAll方法我们得到的是一个对象的克隆;所以当这个对象数据量非常大的时候,显然克隆这个对象所需要花费的时间是很长的。

(二)Audio对象

1.对应<audio>标签;

2.属性:常用属性为audio.currentTime

属性

描述

audioTracks

返回表示可用音频轨道的 AudioTrackList 对象。

autoplay

设置或返回是否在就绪(加载完成)后随即播放音频。

buffered

返回表示音频已缓冲部分的 TimeRanges 对象。

controller

返回表示音频当前媒体控制器的 MediaController 对象。

controls

设置或返回音频是否应该显示控件(比如播放/暂停等)。

crossOrigin

设置或返回音频的 CORS 设置。

currentSrc

返回当前音频的 URL。

currentTime

设置或返回音频中的当前播放位置(以秒计)。

defaultMuted

设置或返回音频默认是否静音。

defaultPlaybackRate

设置或返回音频的默认播放速度。

duration

返回音频的长度(以秒计)。

ended

返回音频的播放是否已结束。

error

返回表示音频错误状态的 MediaError 对象。

loop

设置或返回音频是否应在结束时再次播放。

mediaGroup

设置或返回音频所属媒介组合的名称。

muted

设置或返回是否关闭声音。

networkState

返回音频的当前网络状态。

paused

设置或返回音频是否暂停。

playbackRate

设置或返回音频播放的速度。

played

返回表示音频已播放部分的 TimeRanges 对象。

preload

设置或返回音频的 preload 属性的值。

readyState

返回音频当前的就绪状态。

seekable

返回表示音频可寻址部分的 TimeRanges 对象。

seeking

返回用户当前是否正在音频中进行查找。

src

设置或返回音频的 src 属性的值。

textTracks

返回表示可用文本轨道的 TextTrackList 对象。

volume

设置或返回音频的音量。

3.方法:常用方法

方法

描述

addTextTrack()

向音频添加新的文本轨道。

canPlayType()

检查浏览器是否能够播放指定的音频类型。

fastSeek()

在音频播放器中指定播放时间。

getStartDate()

返回新的 Date 对象,表示当前时间线偏移量。

load()

重新加载音频元素。

play()

开始播放音频。

pause()

暂停当前播放的音频。

(三)Data-* 自定义属性

(四)classList

1.返回元素的类名,用于在元素中添加、移除、切换css类

2.Element.classList ;

3.属性:length

4.方法:

element.classList.add( class1, class2 ……) 在元素中添加一个或多个类

element.classList.remove( class1, class2 ……)  移除一个或多个类名

element.classList.toggle(class, true | false) 在元素中切换类名

(五)` `和${xx}

1.` ` 模板字符串 ${xx}模板占位符

2.功能:

(1)与普通字符串''  ""没有什么区别 console.log(“hello”); console.log(`hello`);

(2)字符串插值/字符串连接更加方便。

var a=[1,2,3];
function b(){return “world”);
console.log(`hello ${a} ${b()}`);// hello 1,2,3 world

其他

-ms-  IE内核识别码

-o- Opera内核识别码

-moz- FireFox内核识别码

-Webkit- 谷歌内核识别码

javascript30--day01--Drum kit的更多相关文章

  1. JavaScript Drum kit

    用 JavaScript 实现网页鼓乐器,相关的初始代码在 JavaScript30 官网和 GitHub 上已经存在.我把 sound 文件夹下的音频全部替换掉了,一些相关解释也直接在注释中标明. ...

  2. js & 快捷键

    js & 快捷键 demo js-keyboard-shortcuts.html https://codepen.io/webgeeker/pen/MLYrNq let isCtrl = fa ...

  3. [转载]50个Demo展示HTML5无穷的魅力

    Flash和HTML5的比较已经成为现在最热门的主题之一,我们不去争论哪个好哪个不好.和HTML5在很酷的动画和简单的游戏等方面一样,除非HTML5在未来几年有一些重大发展,否则Flash在富内容网页 ...

  4. JavaScript 30 - 1 学习笔记

    学习JavaScirpt30的笔记! ...虽然英语不是很好,但是跟着来还是学到了一些东西. 1------->   JavaScirpt Drum Kit 功能是这样的 ,敲击键盘上面的按钮, ...

  5. Spartan Exploit Kit分析

    之前都是调试flash的漏洞,相关的样本接触较少,碰巧看到一篇不错的分析,尝试了一下,留个记录. 调试flasher样本一般建议使用调试版的flash player,在调试版本下可以输出swf文件运行 ...

  6. Microsoft IoT Starter Kit 开发初体验

    1. 引子 今年6月底,在上海举办的中国国际物联网大会上,微软中国面向中国物联网社区推出了Microsoft IoT Starter Kit ,并且免费开放1000套的申请.申请地址为:http:// ...

  7. SuiteScript > Apply script to Assembly and Kit

    Path: Customization > Scripting > Scripts > New Limitation: Client script can't apply to As ...

  8. Jquery day01

    day01: 基础--选择器.属性和CSS.文档处理 day02: 高级--筛选.事件.效果.ajax jQuery介绍 JS类库 JavaScript 库封装了很多预定义的对象和实用函数.能帮助使用 ...

  9. python Day01

    Python Day01 Python 简介 介绍 Python 是一种面向对象.直译式的计算机程序设计语言,也是一种功能强大的通用型语言,已经有将近二十年的发展历史,成熟稳定.包含了一组完善而且容易 ...

随机推荐

  1. 异数OS-织梦师-异数OS虚拟容器交换机(七) 走进4Tbps网络应用时代,加速5G应用真正落地

    . 异数OS-织梦师-异数OS虚拟容器交换机(七) 走进4Tbps网络应用时代,加速5G应用真正落地 本文来自异数OS社区 github: https://github.com/yds086/Here ...

  2. 【红外DDE算法】数字细节增强算法的缘由与效果(我对FLIR文档详解)

    [红外DDE算法]数字细节增强算法的缘由与效果(我对FLIR文档详解) 1. 为什么红外系统中图像大多是14bit(甚至更高)?一个红外系统的性能经常以其探测的范围来区别,以及其对最小等效温差指标.首 ...

  3. shell 条件测试

    1.文件相关 -e 判断文件或者文件夹是否存在 -d 判断目录是否存在 -f 判断文件是否存在 -r 判断是否有读权限 -w 判断是否有写权限 -x 判断是否有执行权限 1.1命令行使用 [root@ ...

  4. [洛谷P4178] Tree (点分治模板)

    题目略了吧,就是一棵树上有多少个点对之间的距离 \(\leq k\) \(n \leq 40000\) 算法 首先有一个 \(O(n^2)\) 的做法,枚举每一个点为起点,\(dfs\) 一遍可知其它 ...

  5. 用JAVA分别实现WebSocket客户端与服务端

    最近公司在搞一个项目刚好需要用到WebSocket技术来实现实时数据的传输,因为之前也没接触过,所以捣鼓了好些天,最近恰巧有空就写写.有误的地方还请大牛们能及时指正. 项目背景:基于spring+sp ...

  6. AMD R5 2400G插帧教程

    最近买的小主机带的是AMD R5 2400G显卡,支持AMD的插帧技术,Sandeepin肯定要体验一把效果. BlueskyFRC 按照网上的教程配置,似乎2400G显卡驱动里没有AMD Fluid ...

  7. LeetCode题目总结-滑窗法

    LeetCode题目总结-滑动窗口法 滑动窗口法:此方法首先建立一个长度为零的窗口,把右侧窗口向右移动,当新的元素与原来窗口中的元素不重复时,把新的元素加入其中,并更新窗口长度:当新的元素与原集合中的 ...

  8. laravel 服务容器的由来 代码展示

    <?php /** * 目的:代码的完善来说明从 基础类的调用到 工厂类的使用 再到容器的出现的原因 * (首先要明白工厂类和容器的关系 可以理解:容器就是工厂类的升级版(为了解决类的依赖)) ...

  9. Leetcode 题目整理 climbing stairs

    You are climbing a stair case. It takes n steps to reach to the top. Each time you can either climb ...

  10. 解决python报错:ImportError: No module named shutil_get_terminal_size 的方法

    我的环境:Ubuntu 16.04.5 LTS 修改这个文件: $HOME/.local/lib/python2.7/site-packages/IPython/utils/terminal.py 这 ...