如何使用HTML和CSS创建一个完全灵活的钢琴键盘
我试图创建一个钢琴键盘,使用flex box保持其元素比例,但一旦我开始改变窗口大小,似乎无法使黑色音符保持相同的宽度或高度 这是一个如何使用HTML和CSS创建一个完全灵活的钢琴键盘,css,html,flexbox,css-shapes,piano,Css,Html,Flexbox,Css Shapes,Piano,我试图创建一个钢琴键盘,使用flex box保持其元素比例,但一旦我开始改变窗口大小,似乎无法使黑色音符保持相同的宽度或高度 这是一个 百分比高度是基于第一个定位的父对象的高度计算的。在本例中,键和kbd div没有位置CSS规则。这意味着黑色关键点将根据主体的宽度而不是其直接父对象进行缩放 添加位置:相对位置;添加到keys div以使其正常工作。根据第一个定位的父项的高度计算百分比高度。在本例中,键和kbd div没有位置CSS规则。这意味着黑色关键点将根据主体的宽度而不是其直接父对象进行缩
百分比高度是基于第一个定位的父对象的高度计算的。在本例中,键和kbd div没有位置CSS规则。这意味着黑色关键点将根据主体的宽度而不是其直接父对象进行缩放
添加位置:相对位置;添加到keys div以使其正常工作。根据第一个定位的父项的高度计算百分比高度。在本例中,键和kbd div没有位置CSS规则。这意味着黑色关键点将根据主体的宽度而不是其直接父对象进行缩放
添加位置:相对位置;键div以使其正常工作。位置应为相对位置,而不是绝对位置。 此外,还应将包含div的高度设置为100% 请参阅小提琴链接:
位置应该是相对的,而不是绝对的。 此外,还应将包含div的高度设置为100% 请参阅小提琴链接: 此操作不需要Flexbox。响应性键盘布局可通过以下方式实现: 与每个键的注释相对应的其他类选择器: 此操作不需要Flexbox。响应性键盘布局可通过以下方式实现: 与每个键的注释相对应的其他类选择器:
不确定是否需要将黑键作为独立块,但下面是一个示例
<body>
<div class="note-container">
<div class="white-note black-note"></div>
<div class="white-note black-note"></div>
<div class="white-note"></div>
<div class="white-note black-note"></div>
<div class="white-note black-note"></div>
<div class="white-note black-note"></div>
<div class="white-note"></div>
<div class="white-note black-note"></div>
<div class="white-note black-note"></div>
<div class="white-note"></div>
</div>
不确定是否需要将黑键作为独立块,但下面是一个示例
<body>
<div class="note-container">
<div class="white-note black-note"></div>
<div class="white-note black-note"></div>
<div class="white-note"></div>
<div class="white-note black-note"></div>
<div class="white-note black-note"></div>
<div class="white-note black-note"></div>
<div class="white-note"></div>
<div class="white-note black-note"></div>
<div class="white-note black-note"></div>
<div class="white-note"></div>
</div>
请在问题中包含代码请在问题中包含代码您的CSS钢琴做得很好,可能是我见过的最好的一个。你介意我在React项目中使用你的CSS代码吗?“我很高兴能把你的功劳归于我。”达蒙谢谢,很高兴你觉得它有用!你的CSS钢琴做得很好,可能是我见过的最好的钢琴之一。你介意我在React项目中使用你的CSS代码吗?“我很高兴能把你的功劳归于我。”达蒙谢谢,很高兴你觉得它有用!您可以在项目中随意使用它。
<body>
<div class="note-container">
<div class="white-note black-note"></div>
<div class="white-note black-note"></div>
<div class="white-note"></div>
<div class="white-note black-note"></div>
<div class="white-note black-note"></div>
<div class="white-note black-note"></div>
<div class="white-note"></div>
<div class="white-note black-note"></div>
<div class="white-note black-note"></div>
<div class="white-note"></div>
</div>
body {
background: #000;
}
.note-container {
width: 100%;
display: flex;
flex-flow: row nowrap;
}
.white-note {
position: relative;
width: 10%;
height: 400px;
background: #fff;
margin: 0 2px;
}
.white-note.black-note:after {
content: "";
position: absolute;
top: 0;
right: -25%;
width: 50%;
height: 50%;
background: #000;
z-index: 1;
}