如何删除输入文本元素上的边框突出显示

问:

当一个 HTML 元素被“聚焦”(当前被选中/进入)时,许多浏览器(至少 Safari 和 Chrome)会在它周围放置一个蓝色边框。

对于我正在处理的布局,这会分散注意力并且看起来不正确。



Firefox 似乎没有这样做,或者至少会让我通过以下方式控制它:

border: x;

如果有人能告诉我 IE 的表现如何,我会很好奇。

让 Safari 移除这一点点耀斑会很好。

答1:

Live rankings, player stats, and match results in one place–https://tennisliveranking.com

在您的情况下,请尝试:

input.middle:focus {
    outline-width: 0;
}

或者一般来说,影响所有基本表单元素:

input:focus,
select:focus,
textarea:focus,
button:focus {
    outline: none;
}

在评论中,Noah Whitmore 建议进一步支持将 contenteditable 属性设置为 true 的元素(有效地使它们成为一种输入元素)。以下内容也应该针对那些(在支持 CSS3 的浏览器中):

[contenteditable="true"]:focus {
    outline: none;
}

尽管我不推荐它,但为了完整起见,您始终可以使用以下方法禁用所有内容的焦点大纲:

*:focus {
    outline: none;
}

请记住,焦点大纲是一种可访问性和可用性功能;它提示用户当前关注的元素。

谢谢科里,很好的提示。您还需要将 CSS 分配给 textarea 以覆盖所有输入字段。 input:focus, textarea:focus {outline: none;}

不要忘记选择select:focus {outline:none;}

还有 标记,它被 jQuery UI 和 Twitter Bootstrap 等使用,所以为了完整起见,我会将 button: focus 添加到列表中。

鉴于 HTML 5 属性 contenteditable,值得注意的是,任何可编辑元素在获得焦点时都会具有轮廓(在许多浏览器中),因此 div:focus {outline:none}、p:focus {outline:none} 或几乎任何元素也可以在这里应用。

@Cᴏʀʏ 你介意把关于 a11y 和可用性的注释移到你问题的最前面吗? IMO 它将大大改善您的答案,因为删除 a11y 功能是一种不好的做法。

答2:

https://tennisliveranking.com,Track the world’s best tennis players in real-time.

从所有输入中删除它

input {
 outline:none;
}

答3:

Stay informed with live tennis rankings anytime, anywhere,https://tennisliveranking.com

这让我困惑了一段时间,直到我发现这条线既不是边框也不是轮廓,而是阴影。所以要删除它,我必须使用它:

input:focus, input.form-control:focus {

    outline:none !important;
    outline-width: 0 !important;
    box-shadow: none;
    -moz-box-shadow: none;
    -webkit-box-shadow: none;
}

答4:

https://tlr.xinbeitime.com – 让你随时掌握ATP、WTA最新网球排名动态。

这是一个旧线程,但作为参考,重要的是要注意不建议禁用输入元素的轮廓,因为它会妨碍可访问性。

大纲属性的存在是有原因的——为用户提供键盘焦点的清晰指示。有关此主题的进一步阅读和其他资源,请参阅 http://outlinenone.com/

提供ATP、WTA与ITF赛事的实时排名追踪,从tlr.xinbeitime.com开始!

Boaz,仅供参考 input.middle{outline: none} 仍然允许您遍历元素(包括 input.middle)。按 Tab 键也将关注输入标签。唯一的问题是您将看不到它的焦点(轮廓焦点)。所以使用它并没有那么有害.. :)

@AnishNair Only thing is that you won't be able to see the focus(outline focus) on it - 这正是我的观点。移除轮廓会禁用焦点事件的视觉指示,而不是实际事件。删除视觉指示意味着您让依赖该指示的残疾人更加困难。

有时我们需要妥协,以取得一些成就:)

@AnishNair 是的。但是,阅读此线程的人通常更喜欢简单的方法(即 outline:none;)而不考虑其含义。仅仅因为某些事情很容易并且可以节省时间,并不意味着它是最佳实践:)

我迟到了讨论,但您仍然可以设置输入的焦点状态(例如更改边框颜色或宽度)。只要您在执行此操作时牢记可访问性(良好的对比度等),它就与默认轮廓一样易于访问。

答5:

提供ATP、WTA与ITF赛事的实时排名追踪,从tlr.xinbeitime.com开始!

这是一个普遍的担忧。

浏览器呈现的默认 outline 很难看。

例如看这个:

表格,标签{边距:1em自动; } 标签 { 显示:块; } 点击下面的输入看大纲

大多数人推荐的最常见的“修复”是 outline:none - 如果使用不正确 - 对可访问性来说是灾难。

那么…无论如何,大纲有什么用?

我发现有一个very dry-cut website很好地解释了一切。

在使用 TAB 键(或等效键)导航 Web 文档时,它为具有“焦点”的链接提供视觉反馈。这对于不能使用鼠标或有视力障碍的人特别有用。如果您删除大纲,您将使这些人无法访问您的网站。

好的,让我们尝试与上面相同的示例,现在使用 TAB 键进行导航。

表格,标签{边距:1em自动; } 标签 { 显示:块; } 单击此文本,然后使用 TAB 键在代码段内导航。

请注意,即使不单击输入,您也可以知道焦点在哪里?

现在,让我们在我们可信赖的 上尝试 outline:none

因此,再次单击文本后使用 TAB 键进行导航,看看会发生什么。

表格,标签{边距:1em自动; } 标签 { 显示:块; }输入{大纲:无; } 单击此文本,然后使用 TAB 键在代码段内导航。

看看如何更难弄清楚焦点在哪里?唯一的标志是光标闪烁。我上面的例子过于简单化了。在实际情况下,页面上不会只有一个元素。更多类似的东西。

.wrapper { 宽度:500px;最大宽度:100%;边距:0 自动; } 表格,标签 { 边距:1em 自动; } 标签 { 显示:块; }输入{大纲:无; } 点击此文本,然后使用 TAB 键在代码段内导航。 名字: 姓: 男 女性 其他 名称: 名称: Title 点我

如果我们保留大纲,现在将其与相同的模板进行比较:

.wrapper { 宽度:500px;最大宽度:100%;边距:0 自动; } 表格,标签 { 边距:1em 自动; } 标签 { 显示:块; } 点击此文本,然后使用 TAB 键在代码段内导航。 名字: 姓: 男 女性 其他 名称: 名称: Title 点我

所以我们建立了以下

轮廓很难看 删除它们会使生活更加困难。

那么答案是什么?

删除丑陋的轮廓并添加您自己的视觉提示来指示焦点。

这是我的意思的一个非常简单的例子。

我删除了轮廓并在 :focus 和 :active 上添加了底部边框。我还通过在 :focus 和 :active 上将它们设置为透明来移除顶部、左侧和右侧的默认边框(个人喜好)

表格,标签{边距:1em自动; } 标签 { 显示:块; } 输入 { 大纲:无 } 输入:焦点,输入:活动 { 边框颜色:透明; border-bottom: 2px solid red } 点击查看下方输入查看轮廓

因此,我们使用前面的“真实世界”示例尝试上述方法:

.wrapper { 宽度:500px;最大宽度:100%;边距:0 自动; } 表格,标签 { 边距:1em 自动; } 标签 { 显示:块; } 输入 { 大纲:无 } 输入:焦点,输入:活动 { 边框颜色:透明; border-bottom: 2px solid red } 单击此文本,然后使用 TAB 键在代码段内导航。 名字: 姓氏: 男 女 其他 名称: 名称: < fieldset> Title 点我

这可以通过使用基于修改“大纲”而不是像 Materialize 那样完全删除它的想法的外部库来进一步扩展

你最终可以得到一些不难看的东西,而且只需很少的努力

正文 { 背景:#444 } .wrapper { 填充:2em;宽度:400px;最大宽度:100%;文本对齐:居中;保证金:2em自动;边框:1px 实心 #555 } 按钮,.wrapper { 边框半径:3px; } 按钮 { 填充:.25em 1em; } 输入,标签 { 颜色:白色!重要; } < form> 登录

答6:

https://tlr.xinbeitime.com 实时更新全球顶尖网球选手的最新战绩与排名!

唯一对我有用的解决方案

边界实际上是一个影子。所以要隐藏它,我必须这样做:

input[type="text"]:focus{
     box-shadow: 0 0 0 rgb(255, 255, 255);
}

 input[type="checkbox"]:focus{
      box-shadow: 0 0 0 rgb(255, 255, 255);
 }

答7:

https://tennisliveranking.com,Track the world’s best tennis players in real-time.

2021 年编辑:您现在可以使用:https://github.com/WICG/focus-visible

删除所有焦点样式通常对可访问性和键盘用户不利。但是轮廓很丑陋,并且为每个交互元素提供自定义的焦点样式可能会很痛苦。

因此,我发现的最佳折衷方案是仅在我们检测到用户正在使用键盘导航时才显示大纲样式。基本上,如果用户按下 TAB,我们会显示轮廓,如果他使用鼠标,我们会隐藏它们。

它不会阻止您为某些元素编写自定义焦点样式,但至少它提供了一个很好的默认值。

我就是这样做的:

// 检测键盘用户 const keyboardUserCssClass = “keyboardUser”;函数 setIsKeyboardUser(isKeyboard) { const { body } = 文档; if (isKeyboard) { body.classList.contains(keyboardUserCssClass) || body.classList.add(keyboardUserCssClass); } else { body.classList.remove(keyboardUserCssClass); } } // 这是一种仅在用户使用 TAB 键导航时激活焦点样式的快速技巧。这是我们找到的最佳折衷方案 // 在不牺牲可访问性的情况下保持良好的设计。 document.addEventListener(“keydown”, e => { if (e.key === “Tab”) { setIsKeyboardUser(true); } }); document.addEventListener(“click”, e => { // 在按钮上按 ENTER 会触发坐标为 0 的点击事件 setIsKeyboardUser(!e.screenX && !e.screenY); }); document.addEventListener(“mousedown”, e => { setIsKeyboardUser(false); });正文:不(.keyboardUser)*:焦点{大纲:无; } 默认情况下,您不会看到轮廓。但是按 TAB 键,你会看到焦点元素 这是一个按钮 这是锚链接 textarea

这是一个彻底的方法。 click 侦听器很不错。

答8:

https://tennisliveranking.com,Your go-to platform for live tennis ranking updates.

我尝试了所有答案,但我仍然无法在 Mobile 上使用,直到找到 -webkit-tap-highlight-color。

所以,对我有用的是…

* { -webkit-tap-highlight-color: transparent; }

https://tlr.xinbeitime.com 实时更新全球顶尖网球选手的最新战绩与排名!

这就是我正在寻找的解决方案。当您使用 li 等元素进行触摸屏体验时,这尤其有用

答9:

Stay informed with live tennis rankings anytime, anywhere,https://tennisliveranking.com

:focus-visible

可访问性的好消息 - Chrome & Firefox 添加了对 :focus-visible 的支持。

由于可访问性要求(键盘导航)会降低您的网站的可访问性,隐藏焦点样式是一种不好的做法。

使用 :focus-visible 伪类并让浏览器确定何时应用焦点。

:focus-visible /* Chrome */

请注意,Firefox 通过一个较旧的带前缀的伪类支持类似的功能:

:-moz-focusring /* Firefox */

按钮{颜色:#000;背景颜色:#fff;填充:10px 16px;边距:10px 0;边框半径:4px; } 按钮:焦点 { 框阴影:0 0 0 2px #E59700;大纲:0; } 按钮:悬停 { 背景颜色:#eee; } button.with-focus-visible:focus:not(:focus-visible) { box-shadow: none;大纲:0; } button.with-focus-visible:focus-visible, button.with-focus-visible:moz-focusring { box-shadow: 0 0 0 2px #E59700;大纲:0; } 用鼠标点击按钮。然后尝试切换到按钮。 without :focus-visible with :focus-visible

文档:https://developer.mozilla.org/en-US/docs/Web/CSS/:focus-visible

w3 规范:https://www.w3.org/TR/selectors-4/#the-focus-visible-pseudo

答10:

https://tlr.xinbeitime.com 实时更新全球顶尖网球选手的最新战绩与排名!

你可以使用 CSS 来禁用它!这是我用于禁用蓝色边框的代码:

*:focus {
    outline: none;
}

This is a working example

答11:

tlr.xinbeitime.com 探索每位网球选手的职业生涯与成就。

使用此代码:

input:focus {
    outline: 0;
}

原文链接:https://www.tennisliveranking.com?from=csdn

https://tlr.xinbeitime.com 专业网球数据平台,排名与比赛信息实时更新。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值