CSS 선택기 구문 분석에 대한 심층적인 이해: 공급업체 접두사 의사 클래스 조합의 함정
CSS 선택기 조합에 대한 일반적인 오해
CSS 스타일을 작성할 때 코드 단순성을 위해 개발자는 종종 쉼표를 통해 동일한 스타일 선언과 다른 선택기를 결합하려고 시도합니다. 예를 들어, 읽기 전용 입력 상자에 대한 테두리 스타일을 설정하고 싶을 수 있으며, 다양한 브라우저에서 공급업체 접두사가 붙은 의사 클래스가 필요할 수 있다는 점을 고려하여 다음과 유사한 CSS 코드를 작성할 수 있습니다.
입력:읽기 전용, 입력:-moz-읽기 전용 { 테두리: 1px 단색 빨간색; }
그러나 이 겉으로는 합리적으로 보이는 코드는 일부 브라우저(예: Google Chrome)에서는 예상대로 작동하지 않을 수 있습니다. 구체적인 표현은 input:read-only가 Chrome에서 지원하는 표준 의사 클래스임에도 불구하고 input:-moz-read-only가 Firefox의 고유한 제조업체 접두사 의사 클래스이기 때문에 Chrome에서 이를 인식할 수 없으며 이로 인해 결국 전체 스타일 규칙이 무시되고 테두리 스타일이 적용되지 않는다는 것입니다.
CSS 선택기 구문 분석 메커니즘에 대한 심층 분석
위 문제가 발생하는 이유를 이해하려면 CSS 선택기의 구문 분석 메커니즘을 깊이 이해해야 합니다. CSS 사양은 쉼표로 구분된 선택기 목록에 대해 명확합니다.
핵심 원칙: 브라우저가 쉼표로 구분된 CSS 선택기 목록을 구문 분석할 때 목록의 선택기 가 유효하지 않거나 구문 오류가 있거나 현재 브라우저에서 인식되지 않는 경우(예: 공급업체 접두사가 붙은 의사 클래스가 해당하지 않는 브라우저에 있는 경우) 전체 규칙 세트(즉, {} 내의 모든 스타일 선언)가 유효하지 않은 것으로 간주됩니다. 브라우저에서는 무시됩니다.
구체적인 사례 분석:
- input:read-only : 읽기 전용 상태인 또는
- input:-moz-read-only : 이는 Mozilla Firefox 브라우저와 관련된 공급업체 접두사 의사 클래스로, Firefox에서 읽기 전용 상태의 요소를 일치시키는 데 사용됩니다. 다른 브라우저(예: Chrome)는 이 의사 클래스를 인식하지 못합니다.
Google Chrome은 input:read-only, input:-moz-read-only 규칙을 발견하면 목록의 선택기를 순서대로 구문 분석합니다. input:read-only를 인식하지만 input:-moz-read-only로 해석되면 이는 Firefox 전용 접두사이므로 Chrome은 이를 유효하지 않거나 인식할 수 없는 선택기로 처리합니다. CSS 구문 분석 규칙에 따라 인식할 수 없는 선택기가 목록에 존재하면 Chrome은 즉시 전체 { border: 1px solid red; } 스타일 선언 블록으로 인해 input:read-only 자체가 유효하더라도 해당 스타일이 적용되지 않습니다.
두 개의 별도 규칙으로 작성하면 다음과 같습니다.
입력:읽기 전용 { 테두리: 1px 단색 빨간색; } 입력:-moz-읽기 전용 { 테두리: 1px 단색 빨간색; }
이 경우 Chrome은 첫 번째 규칙을 성공적으로 구문 분석하고 적용합니다. input:read-only { border: 1px solid red; } 이 선택기를 완전히 이해하기 때문입니다. 두 번째 규칙 input:-moz-read-only { border: 1px solid red; }는 선택기를 인식하지 못하기 때문에 Chrome에서 무시되지만 첫 번째 규칙의 효과에는 영향을 미치지 않습니다. 마찬가지로 Firefox는 두 규칙을 모두 인식하고 적용합니다(표준 읽기 전용을 지원하는 경우).
올바른 연습 방법 및 예시
위의 구문 분석 메커니즘을 기반으로 하는 올바른 접근 방식은 표준 선택기와 공급업체 접두사 선택기(또는 다른 공급업체의 접두사 선택기)를 동일한 쉼표로 구분된 규칙으로 병합하지 않는 것입니다.
해결 방법: 각 표준 선택기 또는 각 공급업체 접두사 선택기(및 해당 스타일)를 CSS 규칙으로 독립적으로 작성합니다.
샘플 코드:
/* 잘못된 예: :-moz-read-only가 인식되지 않아 Chrome에서 유효하지 않아 전체 규칙이 삭제됩니다 */ /* 입력:읽기 전용, 입력:-moz-읽기 전용 { 테두리: 1px 단색 빨간색; } */ /* 올바른 방법: 다양한 브라우저에서 예상대로 작동합니다*/ /* 읽기 전용을 지원하는 브라우저에 적용 가능(예: Chrome, Firefox, Edge, Safari) */ 입력:읽기 전용 { 테두리: 1px 단색 빨간색; } /* Firefox 브라우저에만 적용 가능하며 다른 브라우저는 이 규칙을 무시합니다*/ 입력:-moz-읽기 전용 { 테두리: 1px 단색 빨간색; }
HTML 예:
위의 CSS 규칙을 테스트하기 위해 다음 HTML 구조를 사용할 수 있습니다.
<meta charset="UTF-8"> <meta name="viewport" content="width=device-width,initial-scale=1.0"> <title>읽기 전용 입력 상자 스타일 테스트</title> /* 위의 올바른 CSS 코드를 여기에 입력하세요 */ 입력:읽기 전용 { 테두리: 1px 단색 빨간색; } 입력:-moz-읽기 전용 { 테두리: 1px 단색 빨간색; } 입력 { 여백: 10px; 패딩: 5px; 너비: 200px; } <p>이것은 읽기 전용 입력 상자이며 빨간색 테두리가 있어야 합니다:</p> <input type="text" value="읽기 전용 텍스트"> <p>이것은 일반적인 입력 상자이며 빨간색 테두리가 없어야 합니다:</p> <input type="text" value="일반 텍스트">
위 내용은 CSS 선택기 구문 분석에 대한 심층적인 이해: 공급업체 접두사 의사 클래스 조합의 함정의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

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

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

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

Stock Market GPT
더 현명한 결정을 위한 AI 기반 투자 연구

인기 기사

뜨거운 도구

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

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

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

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

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

이 튜토리얼은 CSS를 사용하여 HTML 페이지의 특정 텍스트 내용을 정확하게 숨기는 방법에 대해 자세히 설명합니다. 대상 텍스트의 랩핑 요소에 독점 CSS 클래스를 추가하고 디스플레이를 사용하여 다음과 같습니다. 속성, 개발자는 페이지 요소의 세련된 제어를 달성하여 필요한 부품 만 숨겨 지도록 페이지 레이아웃 및 사용자 경험을 최적화 할 수 있습니다.

이 기사는 크로스 도메인 iframes를 포함하는 부모 div에서 마우스 딩 이벤트를 포착하는 과제를 탐구합니다. 핵심 문제는 브라우저 보안 정책 (동일한 오리핀 정책)이 크로스 도메인 iframe 컨텐츠에서 직접 DOM 이벤트를 듣지 않는다는 것입니다. iframe 소스 도메인 이름이 제어되고 CORS가 구성되지 않는 한 이러한 유형의 이벤트 캡처를 달성 할 수 없습니다. 이 기사는 이러한 보안 메커니즘을 자세히 설명하고 이벤트 상호 작용에 대한 한계를 설명하고 가능한 대안을 제공합니다.

usecssfloatpropertytowraptaroundanimage : floatleftfortextontheright, floatrightfortextontheleft, addmarginforspacing 및 clearfloattopreventlayoutissues.

웹 페이지 레이아웃에 부트 스트랩을 사용하는 경우 개발자는 종종 기본적으로 수직으로 쌓이는 대신 나란히 표시되는 요소 문제가 발생합니다. 이 기사는이 일반적인 레이아웃 챌린지를 깊이있는 깊이로 탐색하고 솔루션을 제공합니다. Flex 컨테이너의 Flex 방향 속성을 컬럼으로 조정하여 Bootstrap의 Flex-Column Tool 클래스를 사용하여 H1 태그의 올바른 수직 배열 및 양식과 같은 컨텐츠 블록을 달성하여 페이지 구조가 기대에 부응합니다.

UseMailto : inhreftocreateemaillinks.startwithbasiclinks, add? subject = 및 & body = forpre-filledcontent, andincludemultipleaddressesorcc =, bcc = foradvancedoptions.

setthelangattributeinthehtmltagtospecypagelanguage, 예를 들어, forenglish; 2.useocodes "es"forspanishor "fr"forfrench; 3. includeregionalvariantswithcodeslite "en-us"또는 "zh-cn"; 4. ApplylangtespecificelementmelementmelementeMelemente

이 기사는 HTML에서 외부 JavaScript 함수를 호출 할 때 두 가지 일반적인 문제를 탐구합니다. 부적절한 스크립트로드 시간으로 인해 DOM 요소가 준비되지 않으며 기능 이름 지정은 브라우저 내장 이벤트 또는 키워드와 충돌 할 수 있습니다. 이 기사는 스크립트 참조 위치를 조정하고 JavaScript 코드가 올바르게 실행되도록하기 위해 우수한 기능 이름 지정 사양을 포함한 자세한 솔루션을 제공합니다.

USETHETITLEATTRIBITFORSIMPLETOOLTIPSORCSSFORCUSTOM-StyledOnes.1.AddTitle = "Text"TOANYELENMENTFORDEFAULTTOOLTIPS.2. FORSTYLEDTOOLTIPS, WRAPTHEELEMENTINICONTAINER, 사용 .TOOLTIPAND.TOOLTIPAND.TOOLTIPTEXTCLASSSSSSPOTIVICIONITINITINING, PSEUDOINUTE, 및 VSEUDOINGIONC
