: focus와 : active의 차이점은 무엇입니까?


답변:


413

: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 only,<br />
 where my text just turns red
</button>

편집 : jsfiddle


2
또한 document.activeElementIE8이 예외를 던질 수 있기 때문에 시도하기가 쉽지만 혼란스럽게 명명 된 속성 을 사용하여 초점을 맞춘 요소를 얻을 수 있습니다. 또한 이전 버전의 브라우저는 : active 및 : focus를 다르게 처리 할 수 ​​있습니다. function activeElement() { try { return document.activeElement; /* can get exeption in IE8 */ } catch(e) { } }
robocat

6
: 여기 당신의 예제의 JSFiddle 만든 jsfiddle.net/NCwvj 내가 버튼을 클릭하면만을 호출하는 것으로 나타났습니다 크롬 (V24)에 테스트를 :active상태
자키 아지즈을

3
Nit : : active : focus 상태가 없으면 : focus 및 active의 순서가 HTML 버튼의 상태에 영향을 미칩니다. : focus가 마지막이면 활성 상태가 표시되지 않습니다.
매트 건트

@GauntFace, 어떤 브라우저를 사용하고 있습니까? Chrome에서 귀하 focusactive선언 의 순서는 중요하지 않습니다. 그들은 서로 예를 들면 모순되는 경우에만 중요 color:red하고 color:blue(다음 마지막 승리를).
Pacerier

이 질문에 기반한 관련 질문 및 답변 : stackoverflow.com/a/48597351/5587480 . 내 관점에서, 이해하기 매우 쉽다
john cj

59
: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 의사 클래스


10
관련이 있지만, 이것은 질문에 대답하지 않습니다
Gregor Weber

6
@GregorWeber 그것은 정의를 보여줌으로써 차이를 드러냅니다
Kamil Kiełczewski

1
당신은 아마 이것을 알고 있지만, 당신이 그 순서로 그것들을 정의한다면 visited링크는 "방문"이 다른 의사 클래스를 무시하기 때문에 호버링하거나 클릭했을 때 스타일을 바꾸지 않을 것입니다. LVHFA 는 대부분의 사람들이 사용하고자하는 순서입니다. 왜 당신이 포함했는지 잘 모르겠습니다 lang.
Mentalist

22

네 가지 경우가 있습니다.

  1. 기본적으로 활성 및 초점은 모두 꺼져 있습니다.
  2. 포커스 가능한 요소 를 순환하기 위해 하면 요소:focus활성화되지 않고 입력됩니다 .
  3. 이 때 클릭 A의 포커스 불가능한 요소 , 그것은 입력 :active(초점없이).
  4. 언제 클릭 A의 포커스 요소 가 들어갑니다 :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입니다. 탭을 누르면 두 번째 div에 초점을 맞추고 사례 2를 표시합니다. 첫 번째 div를 클릭하면 사례 3이 표시됩니다. 두 번째 div를 클릭하면 사례 4가 표시됩니다. .


요소가 초점을 맞출 수 있는지 여부는 또 다른 질문 입니다. 대부분은 기본적으로 아닙니다. 그러나, 그것은 가정 안전 <a>, <input>, <textarea>기본적으로 포커스입니다.


요소가 가질 수 :active있지만 가질 수없는 방법을 지적 해 주셔서 감사합니다 :focus. 그것은 다른 답변이 해결하지 못했다는 것에 대해 혼란 스 러웠습니다.
B-Stewart

6

: focus는 요소가 입력을 받아 들일 수있는 경우-입력 상자의 커서 또는 탭된 링크입니다.

: active는 사용자가 요소를 활성화 할 때입니다. 사용자가 마우스 버튼을 눌렀다 놓을 때까지의 시간입니다.


2
안녕하세요! "현재 클릭"상태가 있습니까? 탐색 메뉴에 세 개의 링크가 있다고 가정 해 보겠습니다. 현재 "링크"상태 일 때 특정 색상을 유지하려면 어떻게합니까? 현재 위치를 사용자에게 표시합니다. as : active는 링크 (이 경우)를 클릭하는 동안에 만 작동하지만 마우스 버튼을 놓으면 다시 변경됩니다.
키저 야쿠자

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

-3

포커스는 키보드 입력으로 만 제공 할 수 있지만 마우스 나 키보드로 요소를 활성화 할 수 있습니다.

링크에 : focus를 사용하면 키보드에서 버튼을 누르면 스타일 규칙이 적용됩니다.


1
:focus그런 식으로 작동하지 않습니다. 버튼을 클릭했기 때문에 현재 입력하고있는 텍스트 영역에 포커스가 있습니다. 또한 클릭 한 다음 다시 클릭하여 초점을 잃고 복원 할 수 있습니다. 잠시 후 오른쪽의 댓글 추가 버튼을 클릭하여 초점을 맞 춥니 다. 키보드 입력없이 초점을 맞추는이 모든 것.
Joel Mellon

링크에 초점을 맞출 수없는 경우 링크를 앵커에 놓거나 tabindex 속성을 추가하지 않으면 링크에 초점을 맞출 수 없기 때문입니다. 그러나 div 또는 입력과 같은 DOM 요소에 집중할 수 있습니다.
Alex

-5

"포커스"를 사용하면 키보드 사용자가 마우스로 마우스를 가져갈 때와 동일한 효과를 얻을 수 있습니다. Internet Explorer에서 동일한 효과를 얻으려면 "활성"이 필요합니다.

실제로 이러한 상태는 모든 사용자에게 필요한대로 작동하지 않습니다. 세 가지 선택기를 모두 사용하지 않으면 실제로 마우스를 사용할 수없는 많은 키보드 전용 사용자에게 접근성 문제가 발생합니다. #nomouse 챌린지 (nomouse dot org)에 초대합니다.


1
: 호버와 : 초점이 동일하지 않습니다. : 호버는 특정 상태이고 : 초점은 특정 상태입니다. 그것들을 동일시하는 것은 약간 혼란스럽고 오도합니다.
Garry Polley

1
나는 당신의 전문 지식을 의심하지 않습니다. : hover와 : active는 같은 것이 아니라고 지적하려고합니다. 키보드를 사용하는 경우 : hover가 : active와 거의 같으면 웹을 처음 접하는 사람들과 접근성에 혼란을 겪습니다. 나는 대답에 감사하지만 조금 더 깊이가 도움이 될 것입니까?
Garry Polley

물론 그들은 같은 것이 아닙니다! 나는 그들이 거의 같다고 말하지 않았다. (내 게시물을 다시 읽으십시오.) 동일한 작업을 수행하기 위해 마우스를 사용하는 것과 키보드를 사용하는 것의 차이점에 대해 이야기하고 있습니다. 나는 두 사용자 모두에게 동일한 경험을 제공하기 위해 모든 것을 사용해야한다고 말하고 있습니다. 그렇지 않으면 실제로 마우스를 사용할 수없는 키보드 사용자 만 페이지에서 탭된 위치를 확인하기가 어렵습니다. 이로 인해 페이지를 탐색 할 때 이러한 사람들에게 접근성 문제가 발생합니다.
AMG
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.