关注重点不工作的6个原因(有和没有JavaScript)
#html #focus #elemento #标签

当焦点不起作用时,您可以使用JavaScript检查这些HTML属性和某些情况。

焦点不起作用:

  • 标签不专注于模式(示例:div
  • 带有负值的koud1属性标签
  • 标签<input type="hidden" />
  • 标记input或koud4带有koud5属性
  • 标签<a> sem o attributo href
  • 隐藏元素或隐藏元素中
  • 在没有预防违规()
  • 的Mousedown事件中

有时焦点不起作用,这是不好的。

但幸运的是很容易找出原因。

我决定写这篇文章,灵感来自4 razões pelas quais seu z-index não está funcionando (e como corrigi-lo)

我解释了有关o mínimo sobre focus com HTML, CSS e Javascript nesse post的解释。如果您仍然对此效果了解甚少,那么阅读会很酷。

写这篇文章,我总是以两种方式测试焦点:

  1. 使用tab键,您可以到达元素
  2. 和JavaScript Koud9母亲

现在请参见使重点不工作的原因

焦点在元素中不起作用,因为Tabindex不会离开

如果元素具有带负值的tabindex属性,请告别焦点。

这是禁用关注元素的非常常见的资源。部分仅通过tab键来焦点,因为如果您使用element.focus(),您仍然可以进行焦点。

重要的是要清楚,并非所有要素都集中在

例如,div,您无法在标准状态下获得重点

<div>
  <!-- ... -->
</div>
div {
  background-color: white;
}

div:focus {
  background-color: coral;
}

如果您将此koud0集中,则可以看到background-color: coral部分。为此,添加带有0或更高值的tabindex属性:

<div tabindex="0">
  <!-- Meu código -->
</div>
另一方面,tabindex还可以禁用关注某些集中于模式的元素。您可以在其中任何一个中执行此操作,只需为此属性添加负值:

<button tabindex="-1">
  Botão não focalizável
</button>

我谈论了更多关于tabindex nesse outro post

该标签具有类型=“隐藏”

这是幻想。

焦点不起作用,因为它是一个视觉功能,并且此标签被模式隐藏:

<input type="hidden" />

此标签是一个例外,因为所有其他配方字段都集中在。

除了输入中的type="hidden"属性外,还有其他属性可以使焦点不起作用。

存在残疾属性

koud5属性禁用一个元素。

它可以禁用正式元素的所有功能,例如inputsbuttons

<input type="text" disabled />
<button type="submit" disabled>Enviar dados</button>

因此,也有禁用的点击和填充,它们也可以接收到焦点。

HREF属性不存在

<a>标签是另一个由于属性而无法工作的地方。但是在这种情况下,浏览器要求您通过Koude Attribute7:
进入链接的目的地

<a href="my_page">É focalizável</a>
<a href="#">É focalizável</a>
<a href="">É focalizável</a>
<a href>É focalizável</a>
<a>Não é focalizável</a>

在这篇文章中,我教更多有关与botões e links em HTML合作的教学。

聚焦元素是隐藏的或隐藏的元素

由于这个原因,我在工作中失去了一次。

想象一下情况:有一个植物体需要在模态(他的父亲元素)开放后立即接受重点。但是焦点根本没有工作,我已经充满了console.log

我发现为什么,我决定执行此帖子。

JavaScript代码就是这样:

button.focus();
openModal();

也就是说,我在隐藏模态内激活了botan中的焦点。除非我扭转这两行:
这是不起作用的

openModal();
button.focus();

现在是焦点工作,因为它应用于屏幕上的可见元素。

将重点放在元素上时发生:

  • Com display: none
  • com visibility: hidden
  • 在其他koud26的元素中
  • 在另一个元素中,visibility: hidden

最后,在另一种情况下,焦点不起作用,这是您使用JavaScript时。

焦点是在没有预防违规()的Mousedown事件中

深呼吸解释很长。

Segundo o artigo da MDN sobre focus() ,如果您称此母亲为©a ** mousedown ****事件,而无需阻止焦点的行为,则焦点不起作用。**

请参阅现在的部分:

<button id="click">CLICK</button>
<button id="focus">FOCUS</button>

这是两个按钮,第二个主动焦点中的mousedown事件:

document.getElementById('click').onmousedown = event => {
  document.getElementById('focus').focus();
}

但是,焦点将保留在ID click的按钮中,因为这是浏览器的模式行为:专注于单击的按钮。

要解决这个问题,您必须防止标准行为,此后不久,就激活了所需的botan中的焦点:

document.getElementById('click').onmousedown = event => {
  event.preventDefault() // aqui a solução
  document.getElementById('focus').focus();
}

请记住,如果事件是onclick,则不需要添加此行:

document.getElementById('click').onclick = event => {
  // nada
  document.getElementById('focus').focus();
}

,问题不仅是当焦点不起作用时。通常,工作也可能是一个问题

重点工作的原因(但不应该)

让我向我解释。

当我测试了我在这里展示的所有内容时,我发现在某些情况下,焦点有效,但不应该。原因:

  • 常规的意外行为
  • ruim经验
  • 哈利可访问性

第一种情况是未付的元素:

<button class="visible">Botão visível</button>
<button class="invisible">Botão invisível</button>
.visible {
  opacity: 1;
}

.invisible {
  opacity: 0;
}
第二个botan虽然在屏幕上不可见,但专注于屏幕。这可能会混淆通常。

porão©m(注意)如果零畅通按钮确实需要焦点,则不要停止使用伪级切换他的不透明度:

.visible {
  opacity: 1;
}

.invisible {
  opacity: 0;
}

.invisible:focus {
  opacity: 1; /* Mostrando o botão invisível no focus */
}

此应用程序的一个示例是跳到内容植物体。要查看其中一个正在行动,请在Google上搜索任何内容,而Key Koud8。

如果您的聚焦元素在另一个具有零不透明度的元素之内,则会发生同样的事情。

焦点有效的另一种情况,但不应该,它的元素太小。

如果您创建这样的植物体:

button {
  display: block;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: 0;
}

尽管几乎不可能单击它,但仍然可以专注于它。

这里的警告与以前相同:如果元素太小确实需要焦点,那么在发生时不再会阻止您更大。类似:

button:focus {
  display: block;
  min-width: 40px;
  min-height: 16px;
  padding: 1rem;
}

最后,当焦点不以两种测试方式(使用tab键和javaScript)起作用时,行为差异是一种差异。请参阅下面。

当焦点不起作用时会发生什么

想象一个带有3个链接的简单HTML:

<a class="link-1" href="#"> <!-- o focus está aqui -->
  Link 1
</a>

<a class="link-2"> <!-- focus desabilitado -->
  Link 2
</a>

<a class="link-3" href="#">
  Link 3
</a>

假设焦点是链接1,并且在链接2上被禁用。按KOUD8,焦点从链接1跳到链接3。

另一方面,如果您尝试通过JavaScript专注于链接2,则焦点将保留在按钮1中。

打回来

在某些元素中,重点不起作用。其中:

  • 标签input做tipo hidden
  • tag input com atributo disabled
  • tag kouude4 com kude5属性
  • tag a似乎是atributo href7
  • 该元素是隐藏的或隐藏的元素
  • 焦点是在没有Koud46的mousedown事件中应用的

另一方面,Focus可以正常工作并混淆用户。享受查看opacity属性不可见的焦点量的元素,或单击和访问的元素。

当焦点不适用于某些元素时,koud8“跳”键并专注于下一个元素。已经在JavaScript中,集中元素仍然是最后一个。

您始终可以找出通过document.activeElement属性焦点的元素。

感谢您的阅读。

,专注于研究!

Escrita "laugh" em letra neon (risada em inglês)