【发布时间】:2023-01-08 23:26:28
【问题描述】:
嗨,我正在用 vanila js 制作架子鼓 我想在按下键盘时将边框颜色更改为与键盘对应的颜色。 这是问题 我必须在 css 中使用 data-* 属性而不在 js 代码中使用 div.style 但我不知道该怎么做 请帮我 这是我的代码
这是我的 html
<content>
<div class="keys">
<div class="key" data-key="a" data-color="red">
<kbd>A</kbd><span>BOOM</span>
</div>
<div class="key" data-key="s" data-color="orange">
<kbd>S</kbd><span>CLAP</span>
</div>
<div class="key" data-key="d" data-color="yellow">
<kbd>D</kbd><span>HIHAT</span>
</div>
<div class="key" data-key="f" data-color="green">
<kbd>F</kbd><span>KICK</span>
</div>
<div class="key" data-key="g" data-color="blue">
<kbd>G</kbd><span>OPENHAT</span>
</div>
<div class="key" data-key="h" data-color="navy">
<kbd>H</kbd><span>RIDE</span>
</div>
<div class="key" data-key="j" data-color="purple">
<kbd>J</kbd><span>SNARE</span>
</div>
<div class="key" data-key="k" data-color="lightcoral">
<kbd>K</kbd><span>TINK</span>
</div>
<div class="key" data-key="l" data-color="lightblue">
<kbd>L</kbd><span>TOM</span>
</div>
</div>
</content>
这是我的 js 代码
function pressed(event) {
const div = document.querySelector(`.key[data-key="${event.key}"]`);
const sound = document.querySelector(`audio[data-key="${event.key}"]`);
if (!event.repeat) {
div && div.classList.add("pressed");
sound.currentTime = 0;
sound.play();
}
}
function up(event) {
const div = document.querySelector(`.key[data-key="${event.key}"]`);
div && div.classList.remove("pressed");
}
window.addEventListener("keydown", pressed);
window.addEventListener("keyup", up);
最重要的事 我的 CSS 文件
.pressed[data-key="a"] {
border-color: red;
}
.pressed[data-key="s"] {
border-color: orange;
}
.pressed[data-key="d"] {
border-color: yellow;
}
.pressed[data-key="f"] {
border-color: green;
}
.pressed[data-key="g"] {
border-color: blue;
}
.pressed[data-key="h"] {
border-color: navy;
}
.pressed[data-key="j"] {
border-color: purple;
}
.pressed[data-key="k"] {
border-color: lightcoral;
}
.pressed[data-key="l"] {
border-color: lightblue;
}
我想简化那个按下的类(不重复按下的类) 类似 .pressed(data-color variable){ border-color: (data-color-variable) } 我不能在此代码中使用任何库
我试图将数据颜色值作为变量从 html 文件获取到 css 文件但失败了......
最重要的条件是我不应该在 js 代码中使用 div.style。我需要在 javascript 中编写不直接接触样式的代码
【问题讨论】:
-
你可能想要
attr。然后你可以根据需要用JS更新属性。 -
您还可以使用 css 变量,然后使用 css 中引用的 use JS to update the variable。
-
谢谢你回答我的问题,但我不明白确切的意思。我能得到一些例子吗..?
标签: javascript html css