:focus
と:active
擬似クラスの違いは何ですか?
:focus
と:active
は2つの異なる状態です。
: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>
編集: jsfiddle
: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
ソース: CSS擬似クラス
4つのケースがあります。
:focus
(アクティブなし)が入力されます。:active
(フォーカスなし)に入ります。:active:focus
(アクティブとフォーカスを同時に)に入ります。例:
<div>
I cannot be focused.
</div>
<div tabindex="0">
I am focusable.
</div>
div:focus {
background: green;
}
div:active {
color: orange;
}
div:focus:active {
font-weight: bold;
}
ページが読み込まれると、両方がケース1になります。タブを押すと、2番目のdivにフォーカスしてケース2が表示されます。最初のdivをクリックすると、ケース3が表示されます。 。
要素がフォーカス可能かどうかは 別の質問 です。ほとんどはデフォルトではありません。ただし、<a>
、<input>
、<textarea>
はデフォルトでフォーカス可能であると想定しても安全です。
:focusは、要素が入力を受け入れることができる場合です-入力ボックス内のカーソルまたはタブされたリンク。
:activeは、ユーザーが要素をアクティブにするとき-ユーザーがマウスボタンを押してから離すまでの時間です。
アクティブとは、ユーザーがそのポイントをアクティブにしたときです(マウスクリックのように、フィールド間でタブを使用する場合、アクティブなスタイルからのサインはありません。クリックにはもっと時間が必要です。ポイントがアクティブになります。これを試して :
<style type="text/css">
input { font-weight: normal; color: black; }
input:focus { color: green; outline: 1px solid green; }
input:active { color: red; outline: 1px solid red; }
</style>
<input type="text"/>
<input type="text"/>