찾다
웹 프론트엔드CSS 튜토리얼focus-within 사용법에 대한 자세한 설명

이번에는 focus-within 사용에 대한 자세한 설명을 가져오겠습니다. focus-within 사용 시 주의사항은 무엇인가요?

CSS의 세계는 정말 마법의 세계입니다. 많은 프런트 엔드 개발자는 :focus에 대해 들어봤지만 :focus-within에 대해서는 들어본 적이 없을 것입니다. 그럼 도대체 :focus-within이 뭐죠? 이번 글에서는 :focus-within에 대해 이야기하겠습니다.

:focus-within

CSS에서: focus-within은 이제 CSS 선택기(CSS 레벨 4 선택기)에 포함된 의사 클래스입니다. :focus 또는 :hover 와 같습니다. :focus-within은 포커스 상태를 처리하는 데 매우 편리합니다. :focus-within 의사 클래스가 있는 요소는 요소 자체 또는 해당 하위 항목 중 하나에 포커스가 있을 때 효과적입니다.

텍스트가 이해하기 어렵다면 먼저 간단한 예를 살펴보겠습니다.

<p>
    <label>
        Your email:
    </label>
    <input>
</p>

위는 입력 양식 컨트롤이 포함된 간단한 양식입니다.

.form-group *:focus {
    background: yellow;
    color: #000;
}
.form-group {
    padding: 10px;
    border: 3px solid transparent
}
.form-group:focus-within {
    border-color: #000;
}

위 예시에서 .form-group이 포커스를 받으면 테두리 색상이 #000으로 변경됩니다. 그러나 이것이 키보드 포커스를 받는다는 의미는 아닙니다. 왜냐하면

가 반드시 키보드 포커스를 가져오는 것은 아니며 tabindex가 설정되지 않기 때문입니다. 또는 p의 링크나 입력 요소가 포커스를 받으면 .form-group 요소가 테두리 색상을 변경합니다.

위 예시를 보니 정말 놀랍지 않나요? 과거에도 비슷한 효과를 얻으려면 JavaScript 스크립트를 사용해야 했습니다. .form-group의 하위 요소의 마우스나 키보드 이벤트를 통해 상위 요소(또는 상위 요소)에 해당 스타일을 추가합니다.

:focus-within의 사용 시나리오

:focus-within은 매우 강력합니다. 주로 해당 요소 중 하나라도 포커스를 받으면 의사 클래스가 활성화되기 때문입니다. 요소에 많은 하위 구성 요소가 포함된 경우 이 의사 클래스를 주의해서 사용하세요.

:focus-within을 사용하면 일부 일반적인 대화형 동작이 매우 단순해졌습니다. 특히 이전에 JavaScript 키보드 이벤트가 필요했던 대화형 동작은 대신 :focus-within을 사용할 수 있습니다.

다음으로 :focus-within의 일반적인 예를 살펴보겠습니다.

테이블 행 강조 표시

일반적인 예는 테이블 행 강조 동작입니다. 즉, 마우스를 테이블 행 위로 가져가면 색상이 강조 표시됩니다. 이 대화형 스타일은 시각 장애가 있는 사용자가 복잡한 표나 긴 표를 더 잘 읽을 수 있도록 도와줍니다. 강조 표시로 인해 이러한 사용자는 현재 읽고 있는 테이블 행을 더 쉽게 추적할 수 있습니다. 이전에 자주 구현되었던 방식은 :hover를 사용하여 테이블 행의 스타일을 변경하는 것이었습니다. 이 솔루션은 일반 사용자에게는 쉬운 작업이지만 사용자가 마우스 조작에 어려움을 겪는 경우 :hover가 약간 고통스럽습니다. 완벽함을 찾고 있다면 JavaScript 키보드 이벤트를 통해 테이블 ​​행에 스타일을 추가할 수 있습니다.

그래서 :focus-within을 사용하면 JavaScript와 작별할 수 있습니다. 다음과 같이 스타일을 지정할 수 있습니다:

위의 예는 :focus-within을 사용하여 테이블의 전체 행을 강조 표시하는 방법을 보여줍니다. 특정 테이블 행에 포커스를 얻을 수 있는 요소가 있는 경우 이는 키보드를 통해 포커스를 얻는 것을 의미합니다. 예를 들어 위의 예에는 테이블에 요소가 있습니다. a 요소는 키보드를 통해 포커스를 얻을 수 있습니다.

현재 다음 스타일만 추가하면 됩니다.

tbody tr:focus-within,
tbody tr:hover {
    background: rgba(lightBlue, .4);
}

드롭다운 메뉴

드롭다운 메뉴는 가장 일반적인 웹 구성 요소 중 하나입니다. :focus-within pseudo-class를 처음 봤을 때 가장 먼저 떠오른 사용 사례는 드롭다운 메뉴였습니다.

위의 예에서 JavaScript는 탐색 드롭다운 메뉴에서 사용자의 키보드 포커스를 추적하는 데 사용됩니다. JavaScript가 키보드 포커스가 링크에 있음을 감지하면 .navlist_drop에 .has-focus 클래스를 추가합니다. li에 .has-focus 클래스가 있으면 하위 요소가 표시됩니다. 즉, 드롭다운 메뉴가 표시됩니다.

이 효과를 위해 :focus-within을 통해 JavaScript 스크립트의 기능을 직접 대체할 수 있습니다. .navlistdrop.has-focus 대신 .navlistdrop:focus-within을 사용하세요. 드롭다운 메뉴 항목에 초점을 맞추기 위해 키보드를 조작하면 드롭다운 메뉴가 나타납니다.

.navlist a:focus + .navlistdrop,
.has-drop:hover .navlistdrop,
.navlistdrop:focus-within {
    opacity: 1;
    transform: translateY(0px);
    height: auto;
    z-index: 1;
}

오프스크린 Nav

오프스크린 내비게이션은 모바일 단말기에서 흔히 나타나는 효과입니다. 그런 다음 :focus-within을 통해 이 효과를 얻을 수도 있습니다. 자세한 코드는 다음 예를 참조하세요.

브라우저 호환성

:focus-within 매우 흥미롭지만 많은 학생들이 호환성에 대해 걱정하고 있습니다. Caniuse를 통해 브라우저의 지원을 확인할 수 있습니다.

Summary

:focus에 익숙하다면 놀라운 일이 아니지만, :focus-within을 알고 있다면 이는 새로운 CSS에 지속적으로 관심을 기울이고 있다는 의미입니다. 관련 특성. 물론 이 속성은 CSS의 세계를 다시 새롭게 바꾸었는데 정말 이상합니다. 관심이 있으시면 직접 데모를 작성해 보십시오. 당신은 이 숙소를 좋아할 것입니다.

이 기사의 사례를 읽은 후 방법을 마스터했다고 생각합니다. 더 흥미로운 정보를 보려면 PHP 중국어 웹사이트의 다른 관련 기사를 주목하세요!

추천 도서:

css3 텍스트 그라데이션 애니메이션

css3 반원호 만들기

CSS에서 스티커 바닥글 레이아웃을 사용하는 방법

위 내용은 focus-within 사용법에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
CSS 그리드는 무엇입니까?CSS 그리드는 무엇입니까?Apr 30, 2025 pm 03:21 PM

CSS 그리드는 복잡하고 반응이 좋은 웹 레이아웃을 만드는 강력한 도구입니다. 디자인을 단순화하고 접근성을 향상 시키며 이전 방법보다 더 많은 제어를 제공합니다.

CSS Flexbox 란 무엇입니까?CSS Flexbox 란 무엇입니까?Apr 30, 2025 pm 03:20 PM

기사는 반응 형 설계에서 공간의 효율적인 정렬 및 분포를위한 레이아웃 방법 인 CSS Flexbox에 대해 설명합니다. Flexbox 사용을 설명하고 CSS 그리드와 비교하고 브라우저 지원 세부 사항을 설명합니다.

CSS를 사용하여 웹 사이트를 반응하게 만드는 방법은 무엇입니까?CSS를 사용하여 웹 사이트를 반응하게 만드는 방법은 무엇입니까?Apr 30, 2025 pm 03:19 PM

이 기사는 Viewport Meta 태그, 유연한 그리드, 유체 미디어, 미디어 쿼리 및 상대 장치를 포함하여 CSS를 사용하여 반응 형 웹 사이트를 만드는 기술에 대해 설명합니다. 또한 CSS 그리드 및 Flexbox를 함께 사용하여 CSS 프레임 워크를 권장합니다.

CSS 박스 크기 부동산은 무엇을합니까?CSS 박스 크기 부동산은 무엇을합니까?Apr 30, 2025 pm 03:18 PM

이 기사는 요소 치수 계산 방법을 제어하는 ​​CSS 박스 크기 속성에 대해 설명합니다. Content-Box, Border-Box 및 Padding-Box와 같은 값과 레이아웃 설계 및 형태 정렬에 미치는 영향을 설명합니다.

CSS를 사용하여 어떻게 애니메이션 할 수 있습니까?CSS를 사용하여 어떻게 애니메이션 할 수 있습니까?Apr 30, 2025 pm 03:17 PM

기사는 CSS, 주요 특성 및 JavaScript와 결합 된 애니메이션 작성에 대해 논의합니다. 주요 문제는 브라우저 호환성입니다.

CSS를 사용하여 프로젝트에 3D 변환을 추가 할 수 있습니까?CSS를 사용하여 프로젝트에 3D 변환을 추가 할 수 있습니까?Apr 30, 2025 pm 03:16 PM

기사는 3D 변환, 주요 속성, 브라우저 호환성 및 웹 프로젝트에 대한 성능 고려 사항에 대한 CSS 사용에 대해 논의합니다. (문자 수 : 159)

CSS에 기울기를 추가 할 수있는 방법은 무엇입니까?CSS에 기울기를 추가 할 수있는 방법은 무엇입니까?Apr 30, 2025 pm 03:15 PM

이 기사는 CSS 그라디언트 (선형, 방사형, 반복)를 사용하여 웹 사이트 비주얼을 향상시키고 깊이, 초점 및 현대적인 미학을 추가합니다.

CSS의 의사 요소는 무엇입니까?CSS의 의사 요소는 무엇입니까?Apr 30, 2025 pm 03:14 PM

기사는 CSS의 의사 요소, HTML 스타일을 향상시키는 데 사용 및 의사 급의 차이점에 대해 설명합니다. 실제 사례를 제공합니다.

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

SublimeText3 영어 버전

SublimeText3 영어 버전

권장 사항: Win 버전, 코드 프롬프트 지원!

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

SecList

SecList

SecLists는 최고의 보안 테스터의 동반자입니다. 보안 평가 시 자주 사용되는 다양한 유형의 목록을 한 곳에 모아 놓은 것입니다. SecLists는 보안 테스터에게 필요할 수 있는 모든 목록을 편리하게 제공하여 보안 테스트를 더욱 효율적이고 생산적으로 만드는 데 도움이 됩니다. 목록 유형에는 사용자 이름, 비밀번호, URL, 퍼징 페이로드, 민감한 데이터 패턴, 웹 셸 등이 포함됩니다. 테스터는 이 저장소를 새로운 테스트 시스템으로 간단히 가져올 수 있으며 필요한 모든 유형의 목록에 액세스할 수 있습니다.

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.