用HTML5、CSS和JavaScript创造代码敲击乐

HTML5 敲击乐:用前端三剑客打造交互式音乐体验

在数字艺术与编程技术交融的今天,HTML5 敲击乐作为一种新颖的交互形式,正在重新定义人们与音乐的互动方式。通过 HTML5、CSS3 和 JavaScript 这前端三剑客的协同工作,开发者能够构建出无需依赖任何插件的网页钢琴、架子鼓等敲击乐应用,让用户只需通过键盘或鼠标点击,就能创造出属于自己的旋律。这种技术不仅展现了前端开发的创造力,更凸显了 JavaScript 作为 "用户体验导演" 的核心价值 ------ 将抽象的代码转化为直观可感的交互艺术。

前端开发的三重奏:结构、样式与行为

HTML5、CSS 和 JavaScript 分别从三个维度构建了这个沟通桥梁。 HTML 作为结构骨架,负责搭建敲击乐的基础框架。 在开发初期,最高效的方式是使用 "!" 加 Tab 键的快捷方式生成标准 HTML5 文档结构 这个以<!DOCTYPE html>开头的声明,明确了文档类型为 HTML5,让浏览器能够以正确的方式解析内容。

js 复制代码
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>HTML5敲击乐</title>
  <link rel="stylesheet" href="./style.css">
</head>
<body>
  <!-- 键盘结构 -->
   <!-- 盒子,box 装东西 -->
  <!-- <div>
    <div>
      <h3>A</h3>
      <span>clap</span>
    </div>
    <div>
      <h3>S</h3>
      <span>hihat</span>
    </div>
    <div>
      <h3>D</h3>
      <span>kick</span>
    </div>
  </div> -->
  <div class="keys">
    <div class="key">
      <h3>A</h3>
      <span class="sound">clap</span>
    </div>
    <div class="key">
      <h3>S</h3>
      <span class="sound">hihat</span>
    </div>
    <div class="key">
      <h3>D</h3>
      <span class="sound">kick</span>
    </div>
    <div class="key">
      <h3>F</h3>
      <span class="sound">openhat</span>
    </div>
    <div class="key">
      <h3>G</h3>
      <span class="sound">boom</span>
    </div>
    <div class="key">
      <h3>H</h3>
      <span class="sound">ride</span>
    </div>
    <div class="key">
      <h3>J</h3>
      <span class="sound">snare</span>
    </div>
    <div class="key">
      <h3>K</h3>
      <span class="sound">tom</span>
    </div>
    <div class="key">
      <h3>L</h3>
      <span class="sound">tink</span>
    </div>
  </div>
  <script src="./script.js"></script>
</body>
</html>

Emmet语法快速输入:

有时候手写太繁琐,我们会通过Emmet 语法快速,简易的生成样式表

.keys>(.key>h3+span.sound)*9 复制代码
(.key>h3+span.sound)*9>

成功后大概是这样:

对于敲击乐,我们通常会用 div 元素创建黑白琴键的容器,用 span 元素标记每个琴键对应的音名或键盘按键,这种 "先结构后样式" 的开发理念,能确保代码的逻辑性和可维护性。

块级元素与行内元素的合理运用是构建敲击乐界面的关键。

附加:div像素大小的计算

这里我们可以看到一个div的key容器的高为24.286

而下面的span高度为auto(自动) 这是为什么呢? 其实是因为key容器是块级元素:(block(div等) 独占一行,可以设置宽度高度,负责布局,结构)

而span是行内元素:(inline(span) 不独占一行 不能设置宽度和高度),但是可以通过块级元素计 算得来,计算的公式为:

span的尺寸 = 内容尺寸(文字等)+行高影响+ span属性(padding/border)

接下来就是keys的计算 上面可以看到,一个key的高度为24.286 我们有9个div在一起,所以div keys的高度为24.286*9=218.571 这个是简易计算,其实是先算大的部分,浏览器再计算小的部分,最后渲染上去。

CSS 作为样式语言,为敲击乐应用注入视觉生命力。通过层叠样式表,我们可以精确控制外观:将琴键的基础样式、激活样式、悬停样式分离定义,便于后期维护和扩展。

css 复制代码
* {
    margin: 0;
    padding: 0;
}
body,html {
    height: 100%;
}

html {
    font-size: 10px; /* 全局字体大小为10像素 */
    background: url('./background.jpg') bottom center;
    background-size: cover;
} 
h3 {
    font-size: 10px;
    line-height: 1;
}

tips大厂考题

<!DOCTYPE html> 的本质:文件格式的 "身份标识"

<!DOCTYPE html>.txt.pdf 等后缀名的作用本质相通 都是文件格式的声明 。不同的是,.txt 通过文件名后缀告诉操作系统 "这是文本文件",而 <!DOCTYPE html> 则通过文档内的声明,告诉浏览器 "这是 HTML5 格式的文档"。

从技术角度看,HTML 文档本质是一种标记型文本文件

其内容由标签、文本和属性构成。但如果没有明确的格式声明,浏览器无法判断该文档遵循哪个版本的 HTML 标准(是 HTML4、XHTML 还是 HTML5),就像电脑无法仅凭内容区分 .docx.pdf 一样。

<!DOCTYPE html> 的核心作用,就是为浏览器提供解析依据,确保文档能被正确渲染。

相关推荐
我命由我123451 天前
CesiumJS 案例 P35:添加图片图层(添加图片数据)
开发语言·前端·javascript·css·html·html5·js
www_stdio1 天前
使用 Ajax 实现异步数据请求:从原理到实践
javascript·ajax·html
Lhuu(重开版1 天前
html语法
前端·html
小只笨笨狗~1 天前
css-文字背景渐变色
前端·css·html
Access开发易登软件2 天前
Access导出带图表的 HTML 报表:技术实现详解
数据库·后端·html·vba·导出·access
顾安r2 天前
11.8 脚本网页 打砖块max
服务器·前端·html·css3
诚实可靠王大锤2 天前
WebSocket调试工具(html),用于调试WebSocket链接是否畅通
websocket·网络协议·html
摇滚侠2 天前
浏览器的打印功能,如果通过HTML5,控制样式
前端·html·html5
程序猿_极客2 天前
【期末网页设计作业】HTML+CSS+JS 香港旅游网站设计与实现 (附源码)
javascript·css·html
一枚前端小能手2 天前
🏷️ HTML 属性参考 - 常用与全局属性的行为、兼容性与最佳实践
前端·javascript·html