【问题标题】:How to trigger button with keyboard and active如何用键盘和活动触发按钮
【发布时间】:2021-12-15 05:34:53
【问题描述】:

我想用键盘和鼠标触发一个按钮。 它可以工作,但是如果我用键盘触发它,则 :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 button events triggers


    【解决方案1】:

    您需要为此用例使用 Javascript 添加/删除类。

    keydown eventListner 中添加活动类。为 keyup 添加另一个 eventListner,然后删除该活动类。

    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);
    }
    &lt;button id="btn1" onclick="btn1()"&gt; click &lt;/button&gt;

    【讨论】:

      【解决方案2】:

      您可以使用 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);
      }
      &lt;button id="btn1" onclick="//btn1()"&gt; click &lt;/button&gt;

      【讨论】:

        猜你喜欢
        • 2017-06-09
        • 2015-03-27
        • 1970-01-01
        • 2011-09-03
        • 1970-01-01
        • 2012-09-21
        • 1970-01-01
        • 2011-09-17
        • 1970-01-01
        相关资源
        最近更新 更多