2009-11-05 9 views

答えて

282

:focus:activeは、2つの異なる状態です。

:focusは、要素が入力デバイス(キーボード)から入力を受け取るように現在選択されている要素であるときの状態を表します。 :activeは、要素が現在ユーザーによってアクティブ化されているときの状態を表します。

例をあげてみましょう。たとえば、<button>があるとします。 <button>にはどのような状態もありません。ただ存在するだけです。 タブを使用して<button>に「フォーカス」を付けると、現在は:focusの状態になります。その後、をクリックするか、スペースを押すと、ボタンは(: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

+2

という質問には答えられません。IE8で例外がスローされる可能性があるため、複雑な名前の 'document.activeElement'プロパティを使用してフォーカスを取得できます。 古いバージョンのブラウザでは、「アクティブ」と「フォーカスが異なる」と扱われる可能性があることに注意してください。 'function activeElement(){ \t try { \t \t return document.activeElement; http://jsfiddle.net/NCwvj/ テストで:/ * IE8でexeptionを得ることができます*/ \t}キャッチ(電子){ \t}} ' – robocat

+5

は、私がここにあなたの例のJSFiddleを作成しましたchrome(v24)ボタンをクリックすると ':active'が呼び出されることに気づきました。 – Xecure

+2

Nit:フォーカスとアクティブの順序は、HTMLボタンの状態に影響しません:アクティブ:フォーカス状態 - パッティング:アクティブ状態後:フォーカス、私はタブを押してスペースをヒットしたときにアクティブな変更を取得します。フォーカスが最後の場合、私はアクティブ状態を見ることはありません。 –

5

:フォーカスは、要素が入力を受け入れることができるときです - 入力ボックス内のカーソルまたはタブされたリンク。

:アクティブなのは、ユーザーが要素をアクティブにしているときです。ユーザーがマウスボタンを押してから離すまでの時間です。

+2

こんにちは! 「現在クリック済み」の状態はありますか? navメニューに3つのリンクがあるとしましょう。現在リンク上にあるときにどのように特定の色を維持するにはどうしますか?彼が現在どこにいるかをユーザーに示す。 as:activeは、リンク(この場合)がクリックされている間のみ動作し、マウスボタンのリリース時には元の状態に戻ります。 –

39
: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 Pseudo-classes

+2

これは関連していますが、 –

-2

フォーカスのみキーボード入力によって与えられることができるが、要素が両方の、マウスやキーボードによって活性化することができます。

リンク上でフォーカスを使用する場合、スタイルルールはキーボードのボタンを押すだけで適用されます。

+1

':focus'はそのようには動作しません。私がボタンをクリックしたので、現在入力しているテキストエリアにフォーカスがあります。また、それをクリックすることでフォーカスを失って復元することができます。ほんの1秒後に、右のAdd Commentボタンにフォーカスを当ててクリックします。これにより、キーボード入力がなくてもフォーカスが得られます。 –

+0

リンクにフォーカスを当てることができないのは、リンクをアンカーに置くか、tabindex属性を追加しない限り、リンクがフォーカスできないからです。しかしdivや入力のようなDOM要素に焦点を当てることができます。 – Alex

0

アクティブなのは、ポイントをアクティブにするときです(マウスクリックのように、フィールド間のタブを使用するとアクティブなスタイルからのサインはありません)。ポイントがアクティブ化された後でフォーカスが行われます。これを試してみてください:「フォーカス」を使用して

<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"/> 
-4

は、キーボードのユーザーに、彼らはマウスで置くと、マウスのユーザーが得る同じ効果が得られます。 Internet Explorerで同じ効果を得るには、「アクティブ」が必要です。

実際には、これらの状態はすべてのユーザーにとって必要なように機能しません。 3つのセレクタをすべて使用すると、物理的にマウスを使用できないキーボードのみの多くのユーザーにとって、アクセシビリティの問題が生じます。私はあなたに#nomouseチャレンジ(nomouse dot org)を取るように勧めます。

+1

:ホバーと:focusは同じものではありません。 :ホバーは特定の状態であり、フォーカスは特定の状態です。それらを同一視するのはちょっと混乱して誤解を招きます。 –

+1

私はあなたの専門知識を疑うことはありません。私はそれを指摘しようとしています:ホバーと:アクティブは同じものではありません。また、hoverはキーボードの使用法とほぼ同じです:Webとアクセシビリティの新しい方が混乱します。私は答えに感謝しますが、もう少し深みが助けになるでしょうか? –

+0

もちろん、彼らは同じものではありません!私は彼らがほぼ同じであるとは言いませんでした。 (私の記事をもう一度読んでください)私は、マウスを使ってキーボードを使って同じ作業をすることの違いについて話しています。私は両方のユーザーに同じ経験を与えるためにそれらのすべてを使用しなければならないと言っています。そうでなければ、物理的にマウスを使用することができないキーボードのみのユーザは、ページ上でタブのある場所を見るのが難しくなります。これにより、これらの人々がページをナビゲートする際のアクセシビリティの問題が生じます。 – AMG

11

4つのケースがあります。

  1. デフォルトでは、アクティブとフォーカスは両方ともオフです。
  2. タブからにフォーカスを当てる要素を循環させると、:focus(アクティブなし)と入力されます。
  3. のフォーカス不可要素のをクリックすると、フォーカスがない状態で:activeと入力されます。
  4. フォーカス可能な要素にあるをクリックすると、:active:focusと入力されます(アクティブとフォーカスが同時に発生します)。

例:

div:focus { background: green; } div:active { color: orange; } div:focus:active { font-weight: bold; } 

あなたは第二のdivを集中し、それがケース2を示す表示されます]タブを押すとページがロードの両方がケース1である


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

<div tabindex="0"> 
    I am focusable. 
</div> 
。最初のdivをクリックすると、ケース3が表示されます。2番目のdivをクリックすると、ケース4が表示されます。


要素がフォーカス可能かどうかはanother questionです。ほとんどはデフォルトではありません。しかし、<a>,<input><textarea>がデフォルトでフォーカス可能であると仮定することは安全です。

+0

要素がどのように ':active'を持っていて、':focus'はできないのかを指摘してくれてありがとう。それは、私が他の答えが取り組まなかったことについて混乱していたことの一つです。 –

関連する問題