如何用键盘触发按钮并激活

How to trigger button with keyboard and active

我想用键盘和鼠标触发一个按钮。 它可以工作,但是如果我用键盘触发它,:active 不会显示。

HTML

<button id="btn1" onclick="btn1()"> click </button>

CSS

#btn1:active{
transform:scale(1.1);
}

Javascript

document.addEventListener("keydown", function(event) {
    if (event.key === '1') {
      document.getElementById("btn1").click();
    }
});

对于此用例,您需要使用 Javascript add/remove class。

keydown eventListner 中添加活动的class。为 keyup 添加另一个 eventListner,然后删除活动的 class.

document.addEventListener("keydown", function(event) {
      var btn = document.getElementById("btn1");
      btn.click();
      btn.classList.add('active');
});
document.addEventListener("keyup", function(event) {
      var btn = document.getElementById("btn1");
      btn.classList.remove('active');
});

function btn1(){
  
}
#btn1:active{
transform:scale(1.1);
}
.active{
transform:scale(1.1);
}
<button id="btn1" onclick="btn1()"> click </button>

您可以使用selector.style

并使用 setTimeout() 转换为默认比例

示例:

document.addEventListener("keydown", function(event) {
    if(event.key == "1"){
        clicked(document.getElementById("btn1"));
        document.getElementById("btn1").click();
    }
});

function clicked(el){
    el.style.transform = "scale(1.1)";
    setTimeout(()=>{ el.removeAttribute('style'); }, 100);
}
#btn1:active{
  transform:scale(1.1);
}
<button id="btn1" onclick="//btn1()"> click </button>