CSS :has() 의사 클래스: 동적 스타일링을 위한 강력한 선택기
CSS는 개발자가 동적이고 직관적이며 시각적으로 매력적인 웹페이지를 쉽게 구축할 수 있도록 지속적으로 발전하고 있습니다. 이러한 개선 사항 중 하나는 최신 CSS에 도입된 :has() 의사 클래스입니다. 이 의사 클래스는 상위 인식 선택 기능을 제공하므로 하위 또는 형제 요소의 존재 또는 상태에 따라 조건부로 스타일을 적용할 수 있습니다.
이 기사에서는 :has() 가상 클래스의 유연성과 강력함을 보여주는 예를 들어 설명합니다.
:has() 의사 클래스란 무엇입니까?
:has() 의사 클래스는 자식, 형제 또는 자손을 기준으로 요소의 스타일을 지정할 수 있기 때문에 종종 "상위 선택자"라고도 합니다.
selector:has(selectorList)
- 선택자는 규칙이 적용되는 주요 요소입니다.
- selectorList는 하위 요소, 형제 자매 또는 기본 요소와 관련된 기타 요소를 포함할 수 있는 조건입니다.
주요 기능
- 상위 인식: 스타일은 하위 항목이나 형제 항목을 기준으로 요소에 적용됩니다.
- 유연한 조건: , ~ 및 >와 같은 결합자와 함께 작동합니다. 형제자매 관계를 위한
- 향상된 상호작용성: JavaScript에 의존하지 않고 동적 레이아웃이나 효과를 만드는 데 유용합니다.
실제 예: :has()를 사용하여 형제를 기반으로 상자 스타일 지정
body { font-family: sans-serif; } .box { width: 50px; height: 40px; background-color: red; margin: 5px; } .border { border: 2px solid black; } .circle { width: 40px; height: 40px; background-color: blue; border-radius: 25px; } /* Highlighting boxes that are followed by a circle */ .box:has(+ .circle) { width: 80px; height: 80px; }
<!DOCTYPE html> <html> <head> <title>CSS :has() Example</title> <meta charset="UTF-8" /> <link rel="stylesheet" href="./styles.css" /> </head> <body> <div> <p><strong>Explanation</strong></p> <p><em>Basic Styles</em><br> The .box class defines small red rectangles with a margin.<br> The .circle class creates blue circular elements.</p> <p>Dynamic Sizing Using :has():<br> The rule .box:has(+ .circle) applies styles to any .box element that is immediately followed by a .circle.<br> This rule changes the dimensions of such .box elements to 80px by 80px, making them stand out.</p> <p><em>Visual Output</em></p> <p>Initially, the boxes are uniform in size.<br> The .box element immediately preceding a .circle grows larger due to the :has() rule.</p> <p><img src="/static/imghw/default1.png" data-src="https://img.php.cn/upload/article/000/000/000/173495132393104.jpg" class="lazy" alt="CSS :has() Pseudo-Class: A Powerful Selector for Dynamic Styling" /></p> <h2> Use Cases for :has() </h2> <p>The :has() pseudo-class is versatile and can be applied in numerous scenarios:</p> <h3> 1. <strong>Interactive Layouts</strong> </h3> <p>Style a parent element based on the presence of a specific child or sibling element, e.g., highlighting a card if it contains a button.<br> </p> <pre class="brush:php;toolbar:false">.card:has(button) { border: 2px solid green; }
2. 동적 탐색 메뉴
상위 항목에 스타일 적용
li:has(ul) { font-weight: bold; }
3. 양식 확인
형제 또는 상위 요소를 기반으로 유효하지 않은 입력 필드를 강조표시합니다.
.form-group:has(input:invalid) { border-color: red; }
4. 사용자 정의 형제 관계
인접한 형제 요소를 기준으로 요소의 스타일을 지정합니다.
h1:has(+ p) { margin-bottom: 10px; }
:has()의 장점
-
가독성 향상:
- DOM을 감지하고 조작하기 위한 복잡한 JavaScript의 필요성을 줄입니다.
-
성능 향상:
- 유사한 효과를 내는 JavaScript 솔루션에 비해 가볍고 효율적입니다.
-
CSS 단순화:
- 복잡한 관계에 대한 선언적 스타일을 활성화하여 추가 클래스나 속성을 최소화합니다.
브라우저 지원
현재 :has() 의사 클래스는 다음을 포함한 대부분의 최신 브라우저에서 지원됩니다.
- 크롬: 105
- 엣지: 105
- 사파리: 15.4
- Firefox: 지원을 검토 중입니다.
이전 브라우저의 경우 대체 또는 폴리필이 필요할 수 있습니다.
결론
:has() 의사 클래스는 현대 CSS의 판도를 바꿔 오랫동안 기다려온 상위 선택기 기능을 제공합니다. 관계에 따라 요소의 스타일을 조건부로 지정할 수 있는 기능을 통해 CSS 코드를 단순화하고, 동적 스타일을 향상시키며, DOM 조작 시 JavaScript에 대한 의존도를 줄입니다.
프로젝트에서 :has() 의사 클래스를 탐색하고 창의적이고 효율적인 웹 디자인을 위한 새로운 가능성을 열어보세요!
위 내용은 CSS :has() 의사 클래스: 동적 스타일링을 위한 강력한 선택기의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

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

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

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

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

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

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

뜨거운 주제











다른 날, 나는 Corey Ginnivan의 웹 사이트에서 스크롤 할 때 카드 모음이 서로 쌓이는 것을 발견했습니다.

Google Fonts가 새로운 디자인 (트윗)을 출시 한 것을 볼 수 있습니다. 마지막 큰 재 설계와 비교할 때 이것은 훨씬 더 반복적 인 느낌이 듭니다. 차이를 간신히 말할 수 있습니다

프로젝트에 카운트 다운 타이머가 필요한 적이 있습니까? 그런 것은 플러그인에 도달하는 것이 당연하지만 실제로는 훨씬 더 많습니다.

플렉스 레이아웃의 보라색 슬래시 영역에 대한 질문 플렉스 레이아웃을 사용할 때 개발자 도구 (d ...)와 같은 혼란스러운 현상이 발생할 수 있습니다.

요소 수가 고정되지 않은 경우 CSS를 통해 지정된 클래스 이름의 첫 번째 자식 요소를 선택하는 방법. HTML 구조를 처리 할 때 종종 다른 요소를 만듭니다 ...

새로운 프로젝트가 시작될 때, Sass 컴파일은 눈을 깜박이게합니다. 특히 BrowserSync와 짝을 이루는 경우 기분이 좋습니다.

프론트 엔드 개발에서 Windows와 같은 구현 방법 ...
