单击时单选按钮使焦点不可见但焦点应在键盘导航上可见

时间:2017-10-09 05:47:31

标签: javascript jquery css angular accessibility

如何仅在点击时使焦点对单选按钮不可见(通过键盘导航可以看到焦点)

禁用鼠标按下事件或 在mousedown上使用settimeout(()=> $(event.target).blur(),1) 正在工作但是当焦点来自点击时,使用箭头键选择单选按钮不起作用。

那么,最好的方法是只在点击时使单选按钮不可见,而不会使箭头键选择不可用?

提前致谢

3 个答案:

答案 0 :(得分:0)

我们在谈论

pointer-events: none;

还是我错过了什么?

答案 1 :(得分:0)

您可以尝试以下代码:

HTML:

<input type="text" class="inp" />
<input type="radio" class="rb" />

CSS:

.inp {
   display: block;
}

.rb {
 /*hide default outline*/
   outline: none;  
}

[type=radio]:not(:hover):not(:active):focus {
  /*set custom focus ring instead via box-shadow*/
    box-shadow: 1px 0 1px #c5c3c3 inset, -1px 1px 1px #c5c3c3 inset, 0px 0px 0 2px #fff, 0px 0px 0 3px rgb(100, 149, 237);
}   

它会在悬停和点击时隐藏对焦环,但在单选按钮通过键盘获得焦点时显示它。

以下是JSFiddle

的链接

还有一种叫做聚焦环的提议(目前只在Firefox中实现,但有polyfill

答案 2 :(得分:0)

这对我有用

为mousedown和blur添加了事件处理程序,如下所示

---------------模板-----------------

<input type="radio"
(mousedown)="removeOutline($event)"
(blur)="radioBlur($event)"/>

------事件处理程序-----------------

removeOutline(event: MouseEvent): void {
        $(event.target).addClass("focus");
    }

radioBlur(event: MouseEvent): void {
        $(event.target).removeClass("focus");
        if ($(event.target).attr("class") === "") {
            $(event.target).removeAttr("class");
        }
    }

 -----------css---------------
  .focus {
        outline: 0;
   }
相关问题