当焦点不起作用时,您可以使用JavaScript检查这些HTML属性和某些情况。
焦点不起作用:
- 标签不专注于模式(示例:
div
) - 带有负值的koud1属性标签
- 标签
<input type="hidden" />
- 标记
input
或koud4带有koud5属性 - 标签
<a>
sem o attributohref
- 隐藏元素或隐藏元素中
- 在没有预防违规() 的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的解释。如果您仍然对此效果了解甚少,那么阅读会很酷。
写这篇文章,我总是以两种方式测试焦点:
- 使用
tab
键,您可以到达元素 - 和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属性禁用一个元素。
它可以禁用正式元素的所有功能,例如inputs
和buttons
。
<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;
}
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
做tipohidden
- tag
input
com atributodisabled
- tag kouude4 com kude5属性
- tag
a
似乎是atributohref
7 - 该元素是隐藏的或隐藏的元素
- 焦点是在没有Koud46的
mousedown
事件中应用的
另一方面,Focus可以正常工作并混淆用户。享受查看opacity
属性不可见的焦点量的元素,或单击和访问的元素。
当焦点不适用于某些元素时,koud8“跳”键并专注于下一个元素。已经在JavaScript中,集中元素仍然是最后一个。
您始终可以找出通过document.activeElement
属性焦点的元素。
感谢您的阅读。
,专注于研究!