用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 表单与表格布局实战:两个经典作业案例详解
前端·html
米奇妙妙wuu12 小时前
css实现文字和边框同样的渐变色效果
css·html·css3
十六年开源服务商21 小时前
WordPress在线聊天系统推荐
大数据·javascript·html
jzlhll1231 天前
android经常用到的一个小工具颜色计算器
html
郭优秀的笔记1 天前
html鼠标悬浮提示功能
android·javascript·html
_OP_CHEN1 天前
【前端开发之HTML】(三)HTML 常见标签(下):图文、链接与实战,解锁网页交互新姿势!
前端·html·交互·前端开发·网页开发·界面美化
lkbhua莱克瓦242 天前
JavaScript核心语法
开发语言·前端·javascript·笔记·html·ecmascript·javaweb
0思必得02 天前
[Web自动化] Selenium中Select元素操作方法
前端·python·selenium·自动化·html
@大迁世界2 天前
停止使用 innerHTML:3 种安全渲染 HTML 的替代方案
开发语言·前端·javascript·安全·html
大猫会长2 天前
css中,由基准色提取其他变体
前端·javascript·html