And*_*ore 382

:focus并且:active是两个不同的州.

  • :focus 表示当前选择元素以接收输入的状态
  • :active 表示用户当前正在激活元素的状态.

例如,假设我们有一个<button>.该<button>不会有开始与任何国家.它只是存在.如果我们使用Tab"焦点"给它<button>,它现在进入它的:focus状态.如果然后单击(或按space),则使按钮进入其(:active)状态.

关于这一点,当你点击一个元素,你给它重点,这也培养了幻觉,:focus:active是相同的.他们不一样.单击时按钮处于:focus:active状态.

一个例子:

<style type="text/css">
  button { font-weight: normal; color: black; }
  button:focus { color: red; }
  button:active { font-weight: bold; }
</style>

<button>
  When clicked, my text turns red AND bold!<br />
  But not when focused, where my text just turns red
</button>
Run Code Online (Sandbox Code Playgroud)

编辑:jsfiddle

  • 我在这里创建了一个你的例子的JSFiddle:http://jsfiddle.net/NCwvj/用chrome测试(v24)我注意到点击按钮只会调用`:active`状态 (5认同)
  • Nit:焦点和活动的顺序会影响HTML按钮的状态,如果没有:active:focus state - Putting:active state after:focus,当我点击tab并点击空格时,我得到主动更改.如果:焦点是最后一次,我永远不会看到活跃状态. (3认同)
  • 另请注意,您可以使用容易混淆的`document.activeElement`属性来获取焦点元素,尽管它需要在try catch中,因为IE8可以抛出异常.请注意,旧版本的浏览器可能会对待:主动和:重点不同.`function activeElement(){try {return document.activeElement;/*可以在IE8中获取exe**/} catch(e){}}` (2认同)

Rub*_*ias 55

:active       Adds a style to an element that is activated
:focus        Adds a style to an element that has keyboard input focus
:hover        Adds a style to an element when you mouse over it
:lang         Adds a style to an element with a specific lang attribute
:link         Adds a style to an unvisited link
:visited      Adds a style to a visited link
Run Code Online (Sandbox Code Playgroud)

来源:CSS伪类

  • 虽然相关,但这并没有回答这个问题 (7认同)
  • @GregorWeber通过显示定义来揭示差异 (5认同)

Jam*_*son 20

有四种情况.

  1. 默认情况下,活动和焦点都关闭.
  2. 标签可循环可聚焦元素,他们将进入:focus(不活跃).
  3. 当你点击一个在非聚焦元素,它进入:active(无焦点).
  4. 当您单击它进入的可聚焦元素:active:focus(活动并同时聚焦).

例:

<div>
  I cannot be focused.
</div>

<div tabindex="0">
  I am focusable.
</div>
Run Code Online (Sandbox Code Playgroud)
div:focus {
  background: green;
}

div:active {
  color: orange;
}

div:focus:active {
  font-weight: bold;
}
Run Code Online (Sandbox Code Playgroud)

当页面加载两者都是大小写1.当您按Tab键时,您将聚焦第二个div并看到它展示案例2.当您单击第一个div时,您会看到案例3.当您单击第二个div时,您会看到案例4 .


元素是否可聚焦是另一个问题.大多数都不是默认的.但是,它是安全的假设<a>,<input>,<textarea>在默认情况下可获得焦点.


Emi*_*ily 5

:focus是指元素能够接受输入 - 光标位于输入框或已选中的链接.

:active是指用户激活元素的时间 - 用户按下鼠标按钮然后释放它之间的时间.

  • 嗨!是否有"当前点击"状态?可以说导航菜单中有三个链接,如何在当前"链接"链接时保持某种颜色?向用户显示他目前所在的位置.as:active仅在单击链接(在本例中)时才起作用,但在鼠标按钮释放时更改. (2认同)