javascript30--day01--Drum kit
相关视频链接: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 |
如果出现该属性,则音频在就绪后马上播放。 |
|
controls |
如果出现该属性,则向用户显示控件,比如播放按钮。 |
|
loop |
如果出现该属性,则每当音频结束时重新开始播放。 |
|
preload |
如果出现该属性,则音频在页面加载时进行加载,并预备播放。 如果使用 "autoplay",则忽略该属性。 |
|
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 |
简写属性,用于在一个属性中设置四个过渡属性。 |
3 |
|
规定应用过渡的 CSS 属性的名称。 |
3 |
|
定义过渡效果花费的时间。默认是 0。 |
3 |
|
规定过渡效果的时间曲线。默认是 "ease"。 |
3 |
|
规定过渡效果何时开始。默认是 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 |
规定动画。 |
3 |
|
所有动画属性的简写属性,除了 animation-play-state 属性。 |
3 |
|
规定 @keyframes 动画的名称。 |
3 |
|
规定动画完成一个周期所花费的秒或毫秒。默认是 0。 |
3 |
|
规定动画的速度曲线。默认是 "ease"。 |
3 |
|
规定动画何时开始。默认是 0。 |
3 |
|
规定动画被播放的次数。默认是 1。 |
3 |
|
规定动画是否在下一周期逆向地播放。默认是 "normal"。 |
3 |
|
规定动画是否正在运行或暂停。默认是 "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的更多相关文章
- JavaScript Drum kit
用 JavaScript 实现网页鼓乐器,相关的初始代码在 JavaScript30 官网和 GitHub 上已经存在.我把 sound 文件夹下的音频全部替换掉了,一些相关解释也直接在注释中标明. ...
- js & 快捷键
js & 快捷键 demo js-keyboard-shortcuts.html https://codepen.io/webgeeker/pen/MLYrNq let isCtrl = fa ...
- [转载]50个Demo展示HTML5无穷的魅力
Flash和HTML5的比较已经成为现在最热门的主题之一,我们不去争论哪个好哪个不好.和HTML5在很酷的动画和简单的游戏等方面一样,除非HTML5在未来几年有一些重大发展,否则Flash在富内容网页 ...
- JavaScript 30 - 1 学习笔记
学习JavaScirpt30的笔记! ...虽然英语不是很好,但是跟着来还是学到了一些东西. 1-------> JavaScirpt Drum Kit 功能是这样的 ,敲击键盘上面的按钮, ...
- Spartan Exploit Kit分析
之前都是调试flash的漏洞,相关的样本接触较少,碰巧看到一篇不错的分析,尝试了一下,留个记录. 调试flasher样本一般建议使用调试版的flash player,在调试版本下可以输出swf文件运行 ...
- Microsoft IoT Starter Kit 开发初体验
1. 引子 今年6月底,在上海举办的中国国际物联网大会上,微软中国面向中国物联网社区推出了Microsoft IoT Starter Kit ,并且免费开放1000套的申请.申请地址为:http:// ...
- SuiteScript > Apply script to Assembly and Kit
Path: Customization > Scripting > Scripts > New Limitation: Client script can't apply to As ...
- Jquery day01
day01: 基础--选择器.属性和CSS.文档处理 day02: 高级--筛选.事件.效果.ajax jQuery介绍 JS类库 JavaScript 库封装了很多预定义的对象和实用函数.能帮助使用 ...
- python Day01
Python Day01 Python 简介 介绍 Python 是一种面向对象.直译式的计算机程序设计语言,也是一种功能强大的通用型语言,已经有将近二十年的发展历史,成熟稳定.包含了一组完善而且容易 ...
随机推荐
- ERROR 1235 (42000): This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'问题的解决
.与limit相关的sql语句作为临时表 select * from 临时表 limit ) as B 缺点:只能查临时表的数据 .可以查原表的数据 select * from test where ...
- Vue 组件复用性和slot
1.组件可复用 2.slot元素作为组件模板之中的内容分发插槽,元素自身可以被替换 <!DOCTYPE html> <html lang="en"> < ...
- .net core webapi搭建(3)Code first+拆层三层+仓储
将项目拆层 我们要 将项目拆分成 Infrastructure 基础层 Core 核心层 Utility 工具 我们想在就 ...
- python接口自动化测试 - unittest框架suite、runner详细使用
test suite 测试套件,理解成测试用例集 一系列的测试用例,或测试套件,理解成测试用例的集合和测试套件的集合 当运行测试套件时,则运行里面添加的所有测试用例 test runner 测试运行器 ...
- 10、python函数
前言:本文主要介绍python函数的定义和调用.函数的参数.函数的作用域.内置函数. 一.函数的定义和调用 1.函数的作用 对特定的一些功能进行封装,提高代码的重用率,进而提升开发的效率,格式: de ...
- 创建dynamics CRM client-side (二) - Client API
如果我们想用script来直接在form上做一些修改, 我们需要用到client api 来做交互. 我们可以用以下来理解: Form <---> Client API <---&g ...
- Java基础语法面试题50题整理(带答案)
嗯,之前某些原因整理了这份面试题,加油生活 (: 0,嗯,先做简单的,那个不对() 1,int [] sy = {0,9,2,3}; 2,int [] sy1 = new int[4]; 3,in ...
- 4..部署场景2:带有遗留的Linux Bridge
此场景描述了使用Linux bridge的ML2插件实现OpenStack网络服务的遗留(基本)实现. 遗留实现通过为常规(非特权)用户提供一种方法来管理一个项目中的虚拟网络,并包含以下组件:提供了自 ...
- CCNA的基础知识及要点
一.CCNA中的基础知识及要点: 2.网线的制作:568B:橙白,橙,绿白,蓝,蓝白,绿,棕白,棕 568A的排线顺序从左到右依次为:白绿.绿.白橙.蓝.白蓝.橙.白棕.棕.实验目的:初学者常为做网线 ...
- CCF_ 201509-2_日期计算
水. #include<iostream> #include<cstdio> using namespace std; ] = {{,,,,,,,,,,,,},{,,,,,,, ...