单击屏幕上的其他位置时如何防止按钮失去焦点?

Posted

技术标签:

【中文标题】单击屏幕上的其他位置时如何防止按钮失去焦点?【英文标题】:How to prevent button from losing focus when clicking elsewhere on screen? 【发布时间】:2021-09-18 11:48:25 【问题描述】:

我对 React 还很陌生,我正在使用样式化组件。

const Button = styled.button`
  height: 35px;
  width: 85px;
  color: #0288d1;
  border: 1px solid #0288d1;
  background: white;
  border-radius: 1px;

  &:hover 
    cursor: pointer;
    background: #cfe8ef;
  

  &:focus 
    background: #0288d1;
    color: white;
  

`;

我想防止按钮在用户单击屏幕上的其他位置时失去焦点。我是否需要添加额外的 javascript 代码来执行此操作,或者是否有 CSS 属性可以帮助我解决此问题?

【问题讨论】:

这听起来不像是应该使用focus 来完成的事情。焦点旨在显示用户当前正在交互的位置,而点击离开意味着用户现在正在“关注”其他事物。如果您想在单击元素后更改其样式,然后无限期地保持该样式,则应使用复选框并设置:checked 状态的样式,或者仅使用.active 类并在单击时应用它。跨度> 【参考方案1】:

试试下面:

    const setFocus = e => 
        e.target && e.target.focus();
    ;

    return (
        <button
            onBlur=e => 
                setFocus(e);
            
        >
            My Button
        </button>
    );

【讨论】:

【参考方案2】:

您可以在全局样式表中添加:active

button:active 
   border: 2px solid #000;

所以任何时候,button 标签都会在活动模式下接收这种样式。

【讨论】:

以上是关于单击屏幕上的其他位置时如何防止按钮失去焦点?的主要内容,如果未能解决你的问题,请参考以下文章

由于文本框失去焦点,按钮需要单击两次

如何在颤动中取消焦点文本字段?

如何防止主窗口失去焦点?

当我失去焦点时选项卡不起作用

在本机反应中单击 TextInput 字段外部时失去焦点并关闭键盘?

SwiftUI 在失去焦点时运行函数 TextField