CSS3에서 *-of-type과 *-child의 차이성과 적용 장면
6251 단어 css3
https://xboxyan.codelabo.cn/p...
https://blog.codelabo.cn/arti...
CSS3에는 원소의 번호를 나타내는 선택기가 많은데 다음과 같은 몇 가지가 있다
:first-child
、 :first-of-type
、 :last-of-type
、 :only-of-type
、 :only-child
、 :nth-child(n)
、 :nth-last-child(n)
、 :nth-of-type(n)
、 :nth-last-of-type(n)
、 :last-child
초보자는 비교적 헷갈릴 수 있으니, 여기에는 분류를 나눌 수 있다.
*-of-type
*-child
:first-of-type
:first-child
:last-of-type
:last-child
:nth-of-type(n)
:nth-child(n)
:nth-last-of-type(n)
:nth-last-child(n)
:only-of-type
:only-child
이를 통해 알 수 있듯이 CSS 개발자들은 모두 이러한 선택기의 기능에 대해 대체적인 인상을 가지고 있다고 믿는다. 예를 들어
first-*
는 첫 번째, nth-*
는 몇 번째, nth-last-*
는 밑에서 몇 번째...-of-type 및 -child
그렇다면 -of-type과 -child는 도대체 어떤 차이가 있을까?
글자 그대로 보면
type
와child
의 차이다.type
는 유형을 나타낸다. 예를 들어 모두 p
원소 또는 div
원소이다.child
서브원소를 나타내며 아무런 제한이 없다이렇게 묘사하면 직관적이지 않을 수 있으니, 아래에 실례를 하나 열거하여 설명하자.
: first-of-type 및: first-child
1
2
1
2
여기에 상호작용 실례를 써서 수시로 각 선택기의 결과를 비교할 수 있다
https://codepen.io/xboxyan/pe...
다음은 여러 가지 선택의 결과입니다.
div :first-of-type
머리글 1 및 단락 1 div h1:first-of-type
헤더 1div p:first-of-type
단락 1 div .h1:first-of-type
헤더 1div .h2:first-of-type
불일치div :first-child
헤더 1div p:first-child
불일치div h1:first-child
`제목 1div .h1:first-child
`제목 1div .h2:first-child
불일치div .h2:first-of-type
많은 사람들이 첫 번째class가.h2
인 요소를 선택할 줄 알았는데 사실은 그렇지 않다. 여기서 이렇게 이해할 수 있다.우선
div .h2:first-of-type
은 .h2
클래스에 대응하는 원소를 찾을 것이다. 여기는 h1
원소이기 때문에 :first-of-type
는 첫 번째 h1
원소와 일치한다. 즉, 여기의class클래스는 대응하는 원소 유형의 작용만 찾을 뿐이다.다음에 결합해 보면 첫 번째h1
의 원소의class는.h2
가 아니기 때문에 일치할 수 없다.마찬가지로
div p:first-child
도 같은 이치이다. :first-child
첫 번째 원소를 먼저 찾은 다음에 첫 번째 원소가 p
원소가 아니기 때문에 일치하지 않는다.이를 통해 알 수 있듯이 우리가
:first-of-type
를 사용할 때 사실 표지 서명만 하면 된다. 예를 들어 div p:first-of-type
클래스 이름을 붙일 필요가 없다. 만약에 표지 서명을 하지 않으면 각 유형의 요소의 첫 번째 것을 선택한다(예 1).:first-child
를 사용할 때 어떤 표지도 휴대할 필요가 없다. 왜냐하면 첫 번째 요소와 항상 일치하지 않기 때문이다. 그렇지 않으면 다른 조건을 더하면 일치하지 않는다(물론 특수 수요 제외).그렇다면 상술한 첫 번째
.h2
를 실현하려면 어떻게 실현해야 합니까? 안타깝게도 이러한 방식이 만족하지 못하면 다른 방식으로만 완성할 수 있습니다. 예를 들어~
선택기
1
2
2
1
2
이런 상황에서 어떻게 첫 번째
h1.h2
를 선택합니까?생각 좀 해봐..
바로 답을 드리도록 하겠습니다.
.h2{
outline:2px solid red;
}
.h2~.h2{
outline:0;
}
먼저 모든
.h2
를 선택한 다음에 형제 노드의 기타.h2
를 배제한다는 뜻이다.https://codepen.io/xboxyan/pe...
위의 몇 가지 선택기의 규칙을 이해하면 아래의 몇 가지는 모두 같다
: last-of-type 및: last-child
이것은
:first-of-type
와:first-child
용법과 완전히 일치하여 마지막을 나타낸다.한 가지 주의해야 할 것은
:first-child
는 CSS2의 범주로 IE8에서도 사용할 수 있다는 것을 의미하고last-child
는 CSS3의 규범으로 동시에 수요를 충족시킬 수 있을 때 더 좋은 호환성이 필요하다면 사용하기를 권장한다:first-child
.매우 흔히 볼 수 있는 장면, 예를 들어 하나의 목록, 목록의 모든 항목이 하나의 분할선이다. 우리는
border
를 사용하여 시뮬레이션할 수 있다. 그러면 위쪽 경계선이냐 아래쪽 경계선이냐 모두 수요를 만족시킬 수 있다.li{
***
border-top:1px solid;
}
li:first-child{
border-top:0;
}
분명히 상단 테두리 결합
:first-child
을 사용하면 호환성이 더욱 좋다.: nth-of-type(n) 및: nth-child(n)
이런 선택기는 주로 n번째 원소를 선택하는데 원소 번호와 관련이 있기 때문에 여기의 시작 번호는 1(js와 약간 다르다)
n
는 숫자, 키워드 또는 공식일 수 있다.예를 들어
p:nth-of-type(1)
는 각 부급 아래 첫 번째p
원소를 나타내는데 p:first-of-type
와 같다.키워드는
odd
와 even
를 선택할 수 있는데 각각 홀수와 짝수를 나타낸다. 흔히 볼 수 있는 장면은 표이다.tr:nth-child(odd){
background:#ff0000;
}
tr:nth-child(even){
background:#0000ff;
}
n
공식an + b
도 사용할 수 있는데 흔히 볼 수 있는 장면은 주기적인 요소를 선택하는 것이다.p:nth-child(3n+0){
background:#ff0000;
}
:nth-last-of-type(n)
및 :nth-last-child(n)
:nth-of-type(n)
및 :nth-child(n)
와 거의 일치하며, 뒤에서 계산하기만 합니다.결합
:nth-last-child(n)
과 :first-child
는 목록의 서로 다른 원소 수량의 서로 다른 양식을 일치시킬 수 있다예를 들어
:nth-last-child(3):first-child
는 뒤에서 앞쪽으로 세 번째 요소를 선택한 것을 의미하고 첫 번째 요소이기도 하다. 그러면 리스트에 모두 세 개의 요소가 있다고 판단할 수 있다. 형제선택기+
와 ~
를 결합하면 서로 다른 수량의 요소를 각각 양식을 지정할 수 있다.li:only-child {
height: 100%;
}
/* 2 */
li:first-child:nth-last-child(2),
li:first-child:nth-last-child(2) + li {
width: 50%; height: 50%;
}
li:first-child:nth-last-child(2) + li {
margin-left: auto;
}
/* 3 */
li:first-child:nth-last-child(3),
li:first-child:nth-last-child(3) ~ li {
width: 50%; height: 50%;
}
여러분은 장신욱의 이 문장을 보시면 비교적 실용적인 장면이라고 할 수 있습니다
:only-of-type :only-child
이것은 원소가 하나밖에 없거나 같은 유형의 원소가 하나일 때 사용하는 것을 나타낸다
1
2
2
1
div :only-of-type
머리글 2 텍스트 선택div p:only-of-type
헤더 2div :only-child
요소와 일치하지 않음사실 여러분은
*-of-type
가 같은 유형의 원소를 선택하고, *-child
는 하위 노드를 선택하면 됩니다.미래에 더욱 전면적인 선택기가 나타날 수 있다고 믿습니다. 예를 들어
nth-of-class
(class에 따라 선택)nth-of-*
(임의의 선택기에 따라 선택)입니다. 기대해 보세요.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
초보자를 위한 간단한 카드 호버 애니메이션html과 css만 사용하여 만든 매우 간단한 카드 호버 애니메이션을 살펴보겠습니다. css 속성을 알고 있다면 이해할 수 있지만 완전히 초보자라면 css의 기초를 배우는 것이 좋습니다. 1단계: 마크업 즉, HTM...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.