如何使用 HTML 和 CSS 创建完全灵活的钢琴键盘

2023-11-29

我正在尝试创建一个钢琴键盘,该键盘将使用弹性框保持其元素比例,但一旦我开始更改窗口大小,似乎无法使黑色音符保持相同的宽度或高度。

这里有一个fiddle

body{
width: 800px;
height: 200px;
display: flex;
}

#kbd {

padding: 1%;
flex-flow: column;
display: flex;
flex: 4;
}

#keys {
display: flex;
flex: 8;
justify-content: center;
}


.note {
flex: 1;
display: inline-flex;
align-items: center;
}

.black {
justify-content: center;
position: absolute;
height: 45%;
background-color: #474747;
color: white;
width: 8%;
margin: 0 -4%; 
}

.white {
flex-flow: column;
justify-content: flex-end;
outline: 2px solid #474747;
color: #474747;
background-color: #ffffff;
padding-bottom: 1%;
}

演示@Codepen


为此不需要 Flexbox。响应式键盘布局可以通过以下方式完成:
 

  • 与每个键的注释相对应的附加类选择器:
<div class="key white c"      ></div>
<div class="key black c_sharp"></div>
<div class="key white d"      ></div>
<div class="key black d_sharp"></div>
<div class="key white e"      ></div>
<div class="key white f"      ></div>
<div class="key black f_sharp"></div>
<div class="key white g"      ></div>
<div class="key black g_sharp"></div>
<div class="key white a"      ></div>
<div class="key black a_sharp"></div>
<div class="key white b"      ></div>

 

  • 所有黑键和黑键之前的每个白键的边距,使用基于黑键大小的偏移量:
.a, .b, .d, .e, .g, .black{
  margin: 0 0 0 (-($blackKey_Width / 2) - $blackKey_BorderWidth);
}

 

  • 以下关键放置属性:
.key{
  float:    left;
  position: relative;
}

 

  • 更高的z-index对于黑键:
.white{
  z-index: 1;
}
.black{
  z-index: 2;
}

 

  • 视口单位 [vw, vh, vmin, vmax] 为了 (height & width) 的属性 (.white & .black) 选择器。您可以通过调整黑键相对于白键的百分比来使其更加动态。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 HTML 和 CSS 创建完全灵活的钢琴键盘 的相关文章

  • 页面中的所有 css 类都使用 js

    我希望能够获取页面上所有CSS文件的所有类名 是否存在任何现有的可能性 或者我必须自己阅读并解析它 浏览器没有api吗 也许是重复的请求 如何使用 JavaScript 读取 CSS 规则值 https stackoverflow com
  • 带有图像的 Svg 在 Safari 中不显示

    在我的网站中 我嵌入了一些 svgs 它们在 Chrome Firefox IE 9 和 Safari 中似乎都工作得很好 然而 一旦 svg 中包含图像 safari 就不会渲染该图像 基于之前的类似主题 我尝试了以下内容 SVG 元素在
  • 使用 jQuery 的 ASP.NET 中的模态表单

    我对 ASP NET 开发还比较陌生 到目前为止 我已经设法让事情变得简单 但我现在的需求有点复杂 到目前为止还没有得到太多乐趣 本质上我希望在单击按钮添加新用户时弹出一个模式表单 所以我发现这个在 jQuery 网站上 http jque
  • 不加载隐藏图像

    我的网站上有一堆隐藏图像 它们的容器 DIV 具有 style display none 根据用户的操作 某些图像可能会通过 JavaScript 显示 问题是我的所有图像都是在打开页面时加载的 我想通过仅加载最终可见的图像来减轻服务器的压
  • 通过 jquery 设置 type="file" 的值[重复]

    这个问题在这里已经有答案了 Note 下面的答案反映了 2009 年旧版浏览器的状态 现在 您实际上可以在 2017 年使用 JavaScript 动态 编程地设置文件输入元素的值 有关详细信息以及演示 请参阅此问题中的答案 如何以编程方式
  • Chart.js 圆环图无法正常工作

    我正在尝试使用 Chart js 圆环图 我的 JSON 数据是从数据库中正确获取的 但在值填充时图表将不会显示 如果我粘贴静态示例代码 那么它会显示正确的数据 function playerPrel2Res qID var tmp pla
  • http://jigsaw.w3.org/css-validator/ 和 http://www.css-validator.org/ CSS 验证器之间的区别?

    我尝试使用两个验证器验证我的 CSS 但它们给出了不同的结果 http www css validator org http www css validator org 返回的错误 在我的例子中为 245 比http jigsaw w3 o
  • 如何在 html 中设置 alt 工具提示的样式? [复制]

    这个问题在这里已经有答案了 是否可以为 alt 属性设置工具提示的样式 我希望为 html 设置背景 字体颜色等样式alt属性 有人可以帮我解决这个问题吗 您无法设计默认的工具提示 即设置样式alt属性 但你可以使用 Javascript
  • css中为什么要用空格来分隔事物

    这是 wordpress 样式表中我不明白的内容 blockquote cite blockquote em blockquote i font style normal blockquote 和 cite 之间的空格有什么作用 我知道如果
  • 背景大小:封面在 Google Chrome 中突然停止工作?

    还有其他人有这个问题吗 我以创建网站为生 有些网站使用了 css 属性background size cover 大约 1 周前突然间 所有具有此属性的网站都不再在 Google Chrome 中正确显示 所有其他浏览器都工作正常 还有其他
  • border-radius 在 safari 下失败(丑陋的剪辑)

    有人知道 Safari 中以下 错误 的解决方法吗 当我使用border radius在 CSS3 中创建圆角边框 它在 Safari FF 等上工作得很好 但是 当边框颜色是背景颜色时 您可以看到容器背景与边框重叠 你可以在这里尝试一下
  • 无需源代码即可部署网站

    我用php开发了网站 我想在没有源代码的情况下部署它 用php可以吗 我可以将网站代码转换为某种中间形式然后进行部署吗 您可以使用 Zend Guard 来编码您的代码 这样它就无法被逆向工程 http www zend com en pr
  • 如何在块元素之间添加垂直间距,但不添加顶部和底部

    假设我有一堆 P LI 或 DIV 元素 它们之间没有任何内容 我想控制它们之间的垂直间距 这样它们就不会贴得那么紧 但我不想添加任何顶部和底部空间 因为这是由父元素处理的 我不需要更多 有没有一种适用于所有块元素的简单方法 假设我有这样的
  • 重定向后 HTML5 CORS 请求在 safari 中失败

    我正在使用 jQuery 制作 CORS 请求来完成 SSO 类型系统 用户登录 WordPress 同时使用钩子也登录 Moodle 我遇到的问题是 在 Safari 中 仅限 safari 7 当初始 POST 请求设置为 mudles
  • 如何将背景颜色(或自定义 css 类)应用于网格中的列 - ExtJs 4?

    看起来应该很简单 但我根本无法完成此任务 我什至不需要动态完成它 例如 假设我有一个简单的 2 列网格设置 如下所示 columns header USER dataIndex firstName width 70 cls red head
  • 头部带有脚本的 Nodejs EJS 部分

    我正在使用 EJS 从 Nodejs 服务器渲染和服务器 HTML 页面 我包含的一些部分在头部引用了脚本和样式表 但这会导致客户端对同一文件发出多个请求 例如 如果父视图也包含该文件 例如
  • 如何在GEB中选择内部元素的文本?

    我有以下场景 div ul class select2 results style width 400px li class select2 results dept 0 select2 result select2 result sele
  • 用左div填充剩余空间

    谁能告诉我如何让左侧 div 填充剩余空间 而不固定右侧 div 大小 我想要与以下示例完全相反的内容 left float left border 1px solid blue right overflow hidden border 1
  • 问号字符显示在文本中。为什么是这样?

    我有一个备份服务器 可以自动备份我的实时站点 包括文件和数据库 在实时站点上 文本看起来不错 但是当您查看它的镜像版本时 它会显示 在某些文本中 该文本存储在新闻数据库表中 这是实时服务器和镜像服务器上的屏幕截图 将其备份到镜像服务器的过程
  • 如何在 React Native 中做最后一个子选择器?

    我使用Scrollview 里面有3个视图 我在它们之间留了一个间隙 例如 marginRight 5 但我不希望在最后一个视图中出现这种间隙 这就是为什么我需要这种东西 你能帮助我吗 应用这个你就可以实现你在寻找什么 const styl

随机推荐

  • Python get 获取矩阵中具有 na 值的邻居的平均值

    我有非常大的矩阵 所以不想通过遍历每一行和每一列来求和 a 1 2 3 3 4 5 5 6 7 def neighbors i j a return a i j 1 a i j 1 len a 0 a i 1 j a i 1 len a j
  • 处理 Rails 3 中的 has_one 嵌套资源

    我有一个用户模型和一个关于模型 关于模型是一个页面 用户可以在其中获得有关他们的更多信息 由于其性质 将其放在单独的模型上而不是在用户模型中更合适 我希望能够将其路由到 username about 之类的内容 并让所有动词在该路径上工作
  • 如何检测 Angular 中的路由变化?

    我正在寻找检测我的路线变化AppComponent 此后 我将检查全局用户令牌以查看用户是否已登录 以便在用户未登录时可以重定向用户 在 Angular 2 中你可以subscribe Rx 事件 到 Router 实例 所以你可以做类似的
  • 在 matplotlib 中显示所有数据集的固定宽度条形

    我有以下数据集 我需要绘制 1 2 或所有数据集的条形图 当我绘制单个数据项的图表时 例如 xdata 0 and ydata 1000 xlabels first 条形图会缩放以占据整个绘图区域 如何将条形图宽度限制为 0 45 ydat
  • 使用 vb.net 在 SQL 中保存日期

    我使用以下代码保存文本框中的日期并使用日期选择器选择日期 If String IsNullOrEmpty DobTxt Text Then SQLCmd Parameters Add DOB SqlDbType Date Value DBN
  • 如何去掉 JavaScript 代码文本框中的 NaN?

    我正在尝试制作一个三角形缺腿计算器 首先你放一条腿 即斜边 然后你就会得到缺失的腿 但是 如果您先填写第二个框 它会显示 NaN 我知道它没那么重要 但是有没有办法摆脱它 让它显示 0 直到两个盒子都填满为止 这是代码
  • 将 matlab 矩阵转换为向量

    我想在预定义位置获取 Matlab 矩阵的元素向量 例如 我有以下内容 gt gt i 1 2 3 gt gt j 1 3 4 gt gt A 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 A 1 2 3 4
  • Trello.Net 授权有效,但授权后无法访问数据

    我是新来的Trello Net并在授权方面遇到了一些困难 我了解请求 URL 然后要求用户浏览该 URL 以获取令牌的过程 第一个问题是我正在尝试编写一个无需任何 UI 即可自动运行的进程 因此 我必须使用硬编码令牌 该令牌是通过运行此代码
  • 为 Outlook 2010 构建插件时 FindRibbons 任务意外失败

    我们正在使用 VS2013 NET4 Microsoft Async 和 BCL Portability 来自 Nuget 构建 Outlook 2010 插件 并遇到类似于以下内容的构建错误这个问题 and 本次论坛讨论不幸的是 这些资源
  • 使用从笛卡尔空间和世界文件生成的纬度和经度计算多边形面积

    给定一系列 GPS 坐标对 我需要计算多边形 n 边形 的面积 这是相对较小的 不大于 50 000 平方英尺 地理编码是通过对世界文件中的数据应用仿射变换来创建的 我尝试使用两步方法将地理编码转换为笛卡尔坐标 double xPos lo
  • 熊猫合并两个数据帧求和值[重复]

    这个问题在这里已经有答案了 假设我有两个带有部分重复条目的数据帧 source1 pandas DataFrame key a b value 1 2 key value 0 a 1 1 b 2 source2 pandas DataFra
  • 在 PhpStorm 中打开和关闭 HTML 标签时添加自动注释

    我想添加 HTML 注释 div class div 以及他们各自的 div s 例如 假设我有一个 div class main container 我想在它之后立即发表评论 然后在其之后 div 我想要一个 一切都会是什么样子的一个例子
  • Roslyn:如何从当前加载的解决方案中获取对工作区的引用?

    我试图获取对当前加载的工作区的引用 但没有成功 根据文档 粗体部分 我应该能够获得它的参考 工作区 API 位于 Roslyn Services 命名空间中 并且 如果您包含以下 using 指令 则它们可用 使用 Roslyn Servi
  • Windows 8 Metro 是否支持托管 c++/cli

    我似乎无法在任何地方找到这个问题的答案 但是 Metro 会支持托管 C 吗 目前在 Visual Studios 2012 RC 中还没有 仅在 Metro 中 我有一些用 c cli 编写的框架 想将它们移植到 Metro 我知道 c
  • MSSQL - 将 1970 年以来的毫秒转换为 datetime2

    考虑以下查询 在 MSSQL 2008 中 SELECT dateModified FROM SomeTable 这将返回 javascript 格式的浮点数 自 1970 年以来的毫秒数 dateModified 130159829068
  • 如何查找实现给定接口的所有类?

    在给定的命名空间下 我有一组实现接口的类 我们就这样称呼它吧ISomething 我还有另一堂课 我们称之为CClass 知道ISomething但不知道实现该接口的类 我想要那个CClass寻找所有的实施ISomething 实例化它的实
  • 在 Windows 中安装 perl DBI-mysql 的问题

    我已经下载并安装了活动Perl在我的 Windows 7 64 机器上 一切都很顺利 也加载了perl翻译成我的Eclipse平台 但是 当我尝试访问localhostMySQL数据库 我得到以下错误 database
  • 如何摆脱整个选项列表周围的蓝色边框[重复]

    这个问题在这里已经有答案了 我想做的是 如果我单击选择框并且下拉列表显示下拉列表的蓝色边框颜色将被删除 测试链接 http jsfiddle net 5kcsn 320 script input select textarea form b
  • 如何创建以表达式作为参数的通用表达式

    有一个DisplayNameFor x gt x Title ASP Net MVC 中的助手 我想在行为上实现类似的东西 我想要一种接受基于表达式的方法User class u gt u Birthdate或 u gt u Name 一个
  • 如何使用 HTML 和 CSS 创建完全灵活的钢琴键盘

    我正在尝试创建一个钢琴键盘 该键盘将使用弹性框保持其元素比例 但一旦我开始更改窗口大小 似乎无法使黑色音符保持相同的宽度或高度 这里有一个fiddle body width 800px height 200px display flex k