&l…">
当前位置:首页 > CSS

css制作钢琴块

2026-01-08 18:43:25CSS

使用CSS制作钢琴块

钢琴块可以通过HTML和CSS的配合实现,主要利用flexbox布局和伪元素来模拟钢琴的黑白键排列。

HTML结构

<div class="piano">
  <div class="key white"></div>
  <div class="key black"></div>
  <div class="key white"></div>
  <!-- 更多键... -->
</div>

CSS样式

.piano {
  display: flex;
  position: relative;
  width: 600px;
  height: 200px;
  background: #f0f0f0;
  border-radius: 5px;
}

.key.white {
  flex: 1;
  height: 100%;
  background: white;
  border: 1px solid #ccc;
  z-index: 1;
}

.key.black {
  position: absolute;
  width: 30px;
  height: 60%;
  background: black;
  z-index: 2;
  transform: translateX(-50%);
}

黑白键定位

黑键需要绝对定位覆盖在白键上方,通过left属性调整位置:

css制作钢琴块

.key.black:nth-child(2) {
  left: 12.5%; /* 第一个黑键位置 */
}
.key.black:nth-child(4) {
  left: 37.5%; /* 第二个黑键位置 */
}
/* 其他黑键类似 */

交互效果

添加悬停和按下效果增强真实感:

css制作钢琴块

.key.white:hover {
  background: #f8f8f8;
}
.key.black:hover {
  background: #333;
}
.key.white:active {
  background: #e0e0e0;
}
.key.black:active {
  background: #222;
}

完整示例

一个八度的钢琴块实现:

<div class="piano">
  <div class="key white" data-note="C"></div>
  <div class="key black" data-note="C#"></div>
  <div class="key white" data-note="D"></div>
  <div class="key black" data-note="D#"></div>
  <div class="key white" data-note="E"></div>
  <div class="key white" data-note="F"></div>
  <div class="key black" data-note="F#"></div>
  <div class="key white" data-note="G"></div>
  <div class="key black" data-note="G#"></div>
  <div class="key white" data-note="A"></div>
  <div class="key black" data-note="A#"></div>
  <div class="key white" data-note="B"></div>
</div>
.piano {
  display: flex;
  position: relative;
  width: 840px;
  height: 300px;
  margin: 50px auto;
  background: #333;
  padding: 5px;
  border-radius: 10px;
}

.key {
  box-sizing: border-box;
}

.key.white {
  flex: 1;
  height: 100%;
  background: white;
  border: 1px solid #999;
  border-radius: 0 0 5px 5px;
  z-index: 1;
}

.key.black {
  position: absolute;
  width: 40px;
  height: 60%;
  background: black;
  border-radius: 0 0 5px 5px;
  z-index: 2;
  transform: translateX(-50%);
}

/* 黑键定位 */
.key.black:nth-child(2) { left: 8.33%; }
.key.black:nth-child(4) { left: 25%; }
.key.black:nth-child(7) { left: 41.66%; }
.key.black:nth-child(9) { left: 58.33%; }
.key.black:nth-child(11) { left: 75%; }

响应式调整

通过媒体查询适应不同屏幕:

@media (max-width: 768px) {
  .piano {
    width: 100%;
    height: 150px;
  }
  .key.black {
    width: 20px;
  }
}

标签: 钢琴css
分享给朋友:

相关文章

css导航栏制作

css导航栏制作

CSS导航栏制作方法 水平导航栏 使用display: inline-block或flexbox布局创建水平导航栏。设置背景色、间距和悬停效果增强视觉体验。 <nav class="horiz…

css制作箭头

css制作箭头

使用 CSS 边框制作箭头 通过调整元素的 border 属性,利用透明边框和实色边框的组合生成箭头。例如,创建一个向右的箭头: .arrow-right { width: 0; he…

div css制作导航

div css制作导航

使用div和CSS制作导航栏 导航栏是网站的重要组成部分,用于帮助用户快速找到所需内容。以下是使用div和CSS制作导航栏的方法: HTML结构 创建一个基本的导航栏HTML结构,使用div和ul元…

css制作按钮

css制作按钮

基础按钮样式 创建一个基础的CSS按钮样式,可以通过以下代码实现。这个例子包含了按钮的基本属性,如背景色、边框、内边距和文字样式。 .button { background-color: #4C…

css制作下拉菜单

css制作下拉菜单

CSS 制作下拉菜单的方法 使用纯 CSS 可以创建简单的下拉菜单效果,主要依赖 :hover 伪类和 display 属性控制子菜单的显示与隐藏。 基础 HTML 结构 <div c…

css 制作三角形

css 制作三角形

使用 CSS 制作三角形的方法 边框法(Border Method) 通过设置元素的宽高为0,并利用边框的透明属性来创建三角形。这是最常见且兼容性最好的方法。 向上三角形 .triangle-…