用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> 的核心作用,就是为浏览器提供解析依据,确保文档能被正确渲染。

相关推荐
皮皮虾我们跑11 小时前
前端HTML常用基础标
前端·javascript·html
小张成长计划..12 小时前
前端7:综合案例--品优购项目(HTML+CSS)
前端·css·html
杨超越luckly12 小时前
HTML应用指南:利用POST请求获取中国一汽红旗门店位置信息
前端·arcgis·html·数据可视化·门店数据
速易达网络20 小时前
Bootstrap 5 响应式网站首页模板
前端·bootstrap·html
@yanyu66620 小时前
Tomcat安装与HTML响应实战
java·tomcat·html
future_studio1 天前
聊聊 Unity(小白专享、C# 小程序 之 日历、小闹钟)
前端·html
哆啦A梦15881 天前
36 注册
前端·javascript·html
杨超越luckly1 天前
HTML应用指南:利用GET请求获取全国沃尔沃门店位置信息
前端·arcgis·html·数据可视化·门店数据
软件技术NINI1 天前
MATLAB疑难诊疗:从调试到优化的全攻略
javascript·css·python·html