DOTY

CSS_4(Combinator, Pseudo-Classes_2) 본문

WEB/HTML & CSS

CSS_4(Combinator, Pseudo-Classes_2)

증식세포 2020. 10. 6. 14:37
728x90
반응형

Combinator

부모 안에 있는 자식을 바꾸고 싶은데 부모 밖에 있는 요소는 바꾸게 하고 싶지 않을때 어떻게 할까!!!! (뭔소리지..)

<span></span>
<p>//대충 뭔가 써있음
    <span>child</span>
</p>

밖의 span 말고 p안의 span만 바꾸고 싶으면 어떻게 할까!!!!

p span {
    // 바꿀 내용
}

위 처럼 부모 안의 자식만 바꿀 수 있다.

그런데 쓰다보면 조금 문제가 생긴다. 예를 들면 다음과 같다.

<div>
    <span>HELLO!!!</span>
    <p>//대충 뭔가 써있음
        <span>child</span>
    </p>
</div>
div span {
    // 바꿀 내용
}

div 바로 아래에 있는 span (HELLO!!!) 만 바꾸고 싶은데 위처럼 쓸 경우에는 <p>의 자식인 span (child) 까지 동시에 바뀌게 된다. 다음과 같이 수정할 수 있다.

div span{
    // 바꿀 내용
}

div p span {
    // 원래대로 고칠 내용
}

그런데 이것보다 더 좋은 방법이 있다.

div > span {
    // 바꿀 내용
}

'>' 기호를 사용하면 부모의 바로 아래에 있는 자식을 가리키게 된다.

또한, '+' 기호를 사용할 수도 있다.

p + span {
    // 바꿀 내용
}

그런데 주의할 점은 <p>다음에 <span>이 와야한다는 것이다. 무슨 말인가 하면

<div>
    <p>//대충 뭔가 써있음
        <span>child</span>
    </p>
    <span>HELLO!!!</span>
</div>

이와 같이 씌여야 한다. 만약 <p> 위에 <span> 이 있으면 적용이 안된다. 그런데 <p> 뒤에 <span> 이 바로 오지 않으면 '+'가 적용이 안된다. 이 때 '~'를 사용한다. <p>의 모든 <span>에 대해서 적용이 된다.

 

Combinator에 대해서 정리 해보자.

  • p span : 부모'p' 밑의 모든 자식 'span'
  • p > span : 부모 'p' 바로 밑의 자식 'span'
  • p + span : 'p'다음에 바로 오는 'span'
  • p ~ span : 'p'다음에 오는 'span' ('+'과는 다르게 p 다음에 어디든 와도 상관 없다. 모든 형제에 적용된다.)

 

Pseudo Classes

attribute의 내용에 따라서도 변화를 줄 수 있다.

다음과 같은 코드가 있다고 해보자.

<input type="text" placeholder="ID" />
<input type="password" placeholder="password" />

간단한 ID와 비밀번호 입력을 만든것이다. 그런데 ID 입력칸에만 변화를 주고 싶을때 다음과 같이 할 수 있다.

input[placeholder="ID"] {
    // 바꿀 내용
}

중괄호 안에 정보를 입력한다.

저 내용을 조금씩 바꾸면서 우너하는 정보들에만 설정을 해 줄수도 있다.

placeholder ~= "ID" 에서 '~=' 는 placeholder의 내용중에 "ID"를 포함하고 있으면 그 요소들은 전부 변경할 수 있다.

<input type="text" placeholder="First Name" />
<input type="text" placeholder="Last Name" />
<input type="password" placeholder="password" />
input[placeholder~="Name"] {
   border-color: darkred;
   // 등등 바꿀 내용
}

이렇게 써져 있으면, Name이 포함된 First Name칸과 Last Name칸만 변경된다.

자세한 내용은 다음 링크를 따라가면 알 수 있다.

https://developer.mozilla.org/ko/docs/Web/CSS/Attribute_selectors

 

특성 선택자

CSS 특성 선택자는 주어진 특성의 존재 여부나 그 값에 따라 요소를 선택합니다.

developer.mozilla.org

 

728x90
반응형

'WEB > HTML & CSS' 카테고리의 다른 글

CSS_6 (Transition <+ ease-in function>)  (0) 2020.10.06
CSS_5 (States, Psudo Elements)  (0) 2020.10.06
CSS_3 (Position, Pseudo-Classes_1)  (0) 2020.10.06
CSS_2 (Border, Flex, Class)  (0) 2020.10.06
CSS (Cascading Style Sheets)  (0) 2020.10.06
Comments