찾다
웹 프론트엔드CSS 튜토리얼CSS에서 의사 클래스, 의사 요소 및 인접 요소 선택기를 사용하는 몇 가지 기술

며칠 전 다음과 같은 페이지 요구사항을 만났습니다.

CSS에서 의사 클래스, 의사 요소 및 인접 요소 선택기를 사용하는 몇 가지 기술

댓글 상자 뒤에 있는 버튼에는 좋아요 또는 댓글 보내기라는 두 가지 상태가 있습니다. 보내기 버튼은 입력 상자에 단어가 있는지 여부에 따라 클릭 가능한 상태와 클릭 불가능한 상태로 구분됩니다.

요구 사항:
텍스트 없음, 포커스 없음 - 유사
텍스트 없음, 포커스 - 회색으로 보내기
텍스트 포함 - 빨간색으로 보내기

JS로 구현하는 경우 입력 상자의 변경 및 초점 이벤트를 모니터링해야 하는데 이는 매우 번거로운 작업입니다. 그러나 CSS의 의사 클래스를 사용하면 유사한 효과를 얻을 수 있습니다.

<input type="text" class="input" required>
<div class="like">点赞</div>
<div class="send">发送</div>
.send {
  display: none;
}

.input:focus ~ .send {
  display: block;
}

.input:valid ~ .send {
  display: block;
  color: red;
}


.input:focus ~ .like, .input:valid ~ .like {
  display: none;
}

(댓글 상자가 contenteditable 속성을 가진 div 요소로 구현된 경우 :valid 대신 :empty 의사 클래스를 사용할 수 있습니다.)

그래서 CSS3에는 의사 클래스와 의사 요소가 많이 있으며, 그 중 일부는 현명하게 사용하면 원래 JS가 필요한 많은 효과를 얻을 수 있습니다.

contenteditable 속성이 있는 div의 자리 표시자

어떤 이유로 입력 상자로 입력 또는 텍스트 영역 대신 contenteditable 속성이 있는 div를 사용하는 경우가 있습니다. 예를 들어 div는 콘텐츠에 따라 높이를 자동으로 조정할 수 있습니다. 그러나 div 요소는 자리 표시자 속성을 지원하지 않습니다. div 콘텐츠가 비어 있을 때 기본 텍스트를 표시하는 방법은 무엇입니까? :empty 의사 클래스를 사용할 수 있습니다.

  <div class="input" contenteditable placeholder="请输入文字"></div>
.input:empty::before {
  content: attr(placeholder);
}

그리드 그리기

Meituan 모바일 페이지에서 본 내용입니다:

CSS에서 의사 클래스, 의사 요소 및 인접 요소 선택기를 사용하는 몇 가지 기술

우리는 도시 목록의 이 영역에 그리드를 표시합니다. 물론 우리의 첫 번째 생각은 테두리 속성을 사용하는 것이지만 디자이너는 마지막 행에 도시가 한두 개만 있을 경우 아름다움을 위해 그 뒤에 빈 그리드가 있어야 한다는 요구 사항이 있습니다. 이렇게:

CSS에서 의사 클래스, 의사 요소 및 인접 요소 선택기를 사용하는 몇 가지 기술

Meituan 페이지에서 그리드의 수직선을 그리는 방법은 무엇입니까? ::after 및 ::before 요소를 사용하여 그려집니다.

.table:before {
  content: &#39;&#39;;
  position: absolute;
  width: 25%;
  left: 25%;
  height: 100%;
  border-left: 1px solid #ddd8ce;
  border-right: 1px solid #ddd8ce;
}

.table:after {
  content: &#39;&#39;;
  position: absolute;
  width: 10%;
  left: 75%;
  height: 100%;
  border-left: 1px solid #ddd8ce;
  border-right: none;
}

높이가 100%인 두 개의 의사 요소를 만들고 해당 테두리를 테이블의 수직선으로 사용합니다. 이 솔루션은 빈 페이지 요소를 추가하거나 의미 체계를 파괴하지 않고도 디자이너의 요구 사항을 충족할 수 있습니다. 하지만 최대 4개의 수직선만 그릴 수 있다는 한계가 있습니다. 즉, 테이블은 최대 5개의 열을 가질 수 있습니다.

탭 전환

순수한 CSS를 사용하여 탭 전환을 구현하는 것도 가능합니다. 주로 :checked 의사 클래스와 라디오 버튼 요소의 인접 선택기를 사용합니다. 라디오 버튼이기 때문에 동시에 하나의 탭만 활성화되는 것이 보장됩니다. 더 복잡한 효과가 필요하지 않은 경우 순수 CSS로 얻은 탭 전환 효과는 JS보다 훨씬 간단하고 안정적입니다.

  <input id="tab1" type="radio" name="tabs" checked>
  <label for="tab1">TAB1</label>
  <input id="tab2" type="radio" name="tabs">
  <label for="tab2">TAB2</label>

  <div id="content1" class="tab-content">CONTENT1<div>  
  <div id="content2" class="tab-content">CONTENT2</div>
  input, .tab-content{
    display: none;
  }
  #tab1:checked ~ #content1,
  #tab2:checked ~ #content2 {
    display: block;
  }

또한 양식 요소의 의사 클래스를 사용하면 라벨 요소를 사용하여 라디오 상자나 체크 상자 같은 양식 요소 자체를 대체할 수 있습니다. 양식 요소 자체.

하위 요소 수에 대한 인식

이것은 내가 본 것 중 가장 복잡한 기술 중 하나입니다. JS를 기반으로 애플리케이션을 구현하는 것은 아닙니다. 다양한 스타일의 하위 요소 수.

예를 들어 다음 CSS:

.list li:nth-last-child(n+4) ~ li,
.list li:nth-last-child(n+4):first-child {
  color: red
}

는 다음 효과를 얻을 수 있습니다. .list의 li 요소 수가 4보다 크거나 같으면 빨간색으로 표시됩니다. .

이것은 어떻게 달성됩니까?

:nth-last-child(n+4) 이 선택자는 마지막에서 네 번째 요소와 이전 요소를 의미하며, 그 뒤에 ~li가 추가됩니다. 이는 이전 조건을 충족하는 요소 다음의 li 요소를 의미합니다.

총 요소 수가 4개 미만인 경우 :nth-last-child(n+4)를 준수하는 요소는 없습니다. (총 4개가 없으므로 밑에서 4번째는 없습니다.) ), li:nth-last- child(n+4) ~ li는 어떤 요소도 선택하지 않습니다.

하지만 ~li만 사용하면 첫 번째 li가 일치하지 않으므로 li:nth-last-child(n+4):first-child가 추가됩니다.

이와 같이 요소의 개수에 따라 다양한 스타일을 적용할 수 있습니다.


성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
Flexbox vs Grid : 둘 다 배워야합니까?Flexbox vs Grid : 둘 다 배워야합니까?May 10, 2025 am 12:01 AM

예, YoushouldLearnbothflexBoxAndgrid.1) FlexBoxisIdealforone-Dimensional, FlexiblelayoutSlikenavigationMenus.2) GridexCelsIntwo-Dimensional, ComplexDesignsSuchasmagazinElayouts.3) 결합 된 BothenSlayoutFlexibility 및 HeartingFortructur

궤도 역학 (또는 CSS 키 프레임 애니메이션을 최적화하는 방법)궤도 역학 (또는 CSS 키 프레임 애니메이션을 최적화하는 방법)May 09, 2025 am 09:57 AM

자신의 코드를 리팩터링하는 것은 어떤 모습입니까? John Rhea는 자신이 쓴 오래된 CSS 애니메이션을 선택하고 최적화하는 사고 과정을 살펴 봅니다.

CSS 애니메이션 : 만들기가 어렵습니까?CSS 애니메이션 : 만들기가 어렵습니까?May 09, 2025 am 12:03 AM

cssanimationsarenherinly에 hardbutreepracticenderstandingofcsspropertiesandtimingflestions.1) startsimpleants withsimpleatslikeScalingabuttononHoverusingKeyframes.2) useAsingfuctionslikecubic-bezierfornateffects, 그러한 분위기, 3)

@keyframes CSS : 가장 많이 사용되는 트릭@keyframes CSS : 가장 많이 사용되는 트릭May 08, 2025 am 12:13 AM

@keyframesispopularduetoitstativerstatility 및 powerincreatingsmoothcssanimations.keytricksinclude : 1) states 사이에 moothtransitionsbettites, 2) 애니메이션 multiplepropertiessimultory, 3) vendorPixesforBrowsercompatibility, 4) 빗질을 사용하여

CSS 카운터 : 자동 번호 매기기에 대한 포괄적 인 안내서CSS 카운터 : 자동 번호 매기기에 대한 포괄적 인 안내서May 07, 2025 pm 03:45 PM

csScounterSearedTomanageAutomaticNumberingInberingInwebDesigns.1) 1) theCanbeusedfortablestoffContents, ListItems 및 CustomNumbering.2) AdvancedUsesInSinestedNumberingsystems.3) CreativeUseNvolvecust를 CreativeSinvolecust.4) CreativeSinvolvecust

스크롤 구동 애니메이션을 사용한 현대 스크롤 그림자스크롤 구동 애니메이션을 사용한 현대 스크롤 그림자May 07, 2025 am 10:34 AM

특히 모바일 장치에 스크롤 그림자를 사용하는 것은 Chris가 이전에 다룬 미묘한 UX입니다. Geoff는 애니메이션 타임 라인 속성을 사용하는 새로운 접근 방식을 다루었습니다. 또 다른 방법이 있습니다.

이미지 맵 재 방문이미지 맵 재 방문May 07, 2025 am 09:40 AM

빠른 새로 고침을 통해 실행합시다. 이미지 맵은 html 3.2로 돌아가는데, 먼저 서버 측 맵과 클라이언트 측지 맵은 맵 및 영역 요소를 사용하여 이미지를 통해 클릭 가능한 영역을 정의했습니다.

DEVS 상태 : 모든 개발자를위한 설문 조사DEVS 상태 : 모든 개발자를위한 설문 조사May 07, 2025 am 09:30 AM

Devs State Survey는 이제 참여에 개방되어 있으며, 이전 설문 조사와 달리 코드, 직장, 건강, 취미 등을 제외한 모든 것을 포함합니다. 

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 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

MinGW - Windows용 미니멀리스트 GNU

MinGW - Windows용 미니멀리스트 GNU

이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.

ZendStudio 13.5.1 맥

ZendStudio 13.5.1 맥

강력한 PHP 통합 개발 환경

SecList

SecList

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

SublimeText3 영어 버전

SublimeText3 영어 버전

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

VSCode Windows 64비트 다운로드

VSCode Windows 64비트 다운로드

Microsoft에서 출시한 강력한 무료 IDE 편집기