프로그래밍 언어/HTML&CSS(Programming Language X)

[HTML&CSS Basic] 6. CSS Selector, Inheritance

DigIT_JHB 2022. 11. 15. 21:28

[CSS]CSS selector

1. CSS selector(추가 내용)

기존의 태그 선택자,클래스 선택자,ID 선택자를 제외하고

전체 선택자와 복합 선택자, 그룹 선택자, 가상 클래스 선택자, 가상 요소 선택자 등이 존재

 

1-1. 전체 선택자(Universal Selector)(*)

→모든 요소를 선택 가능

*{
color: blue;
}

 

1-2. 복합 선택자(Combinators)

 

1-2-1. 후손 결합자(Descendant Combinator)(공백 사용)

특정 요소의 모든 후손 요소에 적용

<!--selects all <p> elements inside <div> elements-->
div p {
  background-color: yellow;
}

 

1-2-2. 자식 결합자(Child Combinator)(>)

모든 후손 요소가 아닌 직계 자식 요소만 선택(중간에 Wrapper 요소가 있으면 스타일 적용 X)

div > p {
  background-color: yellow;
}

 

1-2-3.일반 형제 결합자(General Sibling combinator)(~)

첫번째 요소의 뒤에 위치하며 같은 부모를 공유하는 모든 요소 선택

<style>
h3 ~ p {
  text-indent: 1em;
}
</style>


<body>
<h3></h3>
<p>여기는 들여쓰기 가능</p>
<p>여기도 들여쓰기 가능</p>
</body>

 

1-2-4.인접 형제 결합자(Adjacent Sibling combinator)(+)

첫번째 요소의 바로 뒤에 위치하며 같은 부모를 공유하는 두번째 요소만 선택

<style>
h3 + p {
  text-indent: 1em;
}
</style>


<body>
<h3></h3>
<p>여기는 들여쓰기 가능</p>
<p>여기는 안된다.</p>
</body>

 

1-3. 그룹 선택자(,)

→여러 selector에 동일한 스타일을 적용

.whatIsBlockquote, span {
  color: green;
}

 

1-4. 가상 클래스 선택자(Pseudo-Class)(:)

→선택자 뒤에 ':' 를 붙이면 특정 이벤트마다 적용할 스타일 설정 가능(가상 요소 선택자와 달리 특정 상태에 스타일을 적용할 때 사용)

  • :link - 방문한 적이 없는 링크
  • :visited - 방문한 적이 있는 링크
  • :hover - 마우스를 호버링 했을 때
  • :active - 마우스를 클릭했을 때
  • :focus - 포커스 되었을 때 (input 태그 등)
  • :first - 첫번째 요소
  • :last - 마지막 요소
  • :first-child - 첫번째 자식
  • :last-child - 마지막 자식
  • :nth-child(2n+1) - 홀수 번째 자식
.hover-box:hover{
		background-color: orange;
	}
.focus-input:focus{
		background: red;
	}

 

1-5. 가상 요소 선택자(Pseudo-Element)(::)

→선택자 뒤에 '::'를 붙이면 선택한 요소의 일부분에 스타일 설정 가능(가상 클래스 선택자와 달리 특정 부분에 스타일 적용할 때 사용)

 

선택자 설명
::before 블록 요소 앞에 내용을 삽입
::after 블록 요소 뒤에 내용을 삽입
::first-letter 블록의 첫 번째 문자를 선택
::first-line 블록의 첫 줄을 선택
::selection 사용자가 드래그로 선택한 블록 전체, 또는 일부를 선택
<style>
.ex::first-letter{
font-size:2.5em;
color:red;
</style>
<p class="ex">동해물과 백두산이 마르고 닳도록 하느님이 보우하사 우리나라 만세 무궁화 삼천리 화려강산 대한 사람 대한으로 길이 보전하세<p>

동해물과 백두산이 마르고 닳도록 하느님이 보우하사 우리나라 만세 무궁화 삼천리 화려강산 대한 사람 대한으로 길이 보전하세

<style>
.ex2::first-line{
font-size:2.5em;
color:red;
</style>
<p class="ex2">동해물과 백두산이 마르고 닳도록 하느님이 보우하사 우리나라 만세 무궁화 삼천리 화려강산 대한 사람 대한으로 길이 보전하세<p>

동해물과 백두산이 마르고 닳도록 하느님이 보우하사 우리나라 만세 무궁화 삼천리 화려강산 대한 사람 대한으로 길이 보전하세

 

2. CSS Specificity(Selector의 우선순위)

우선순위는 쉽게 점수 계산(tag <<<<< class <<<< id <<<<<< inline css)

  • inline styling: 1000점
  • id: 100점
  • class: 10점
  • tag: 1점
<style>
Example{
font-size:30px;
}
Example.ex3{
font-size:100px;
}
</style>
<Example class="ex3">p and class ex3</Example>
p and class ex3

Example태그에 적용된 30px은 1점

1점(Exampe) + 10점(.ex3) = 11점 이기 때문에 해당 요소는 100px이 적용

 

 


 

[CSS] 상속

1. 상속(Inheritance)

스타일이 상속되어 자식에게도 같은 스타일이 적용

 

<style>
Example2{
color:red;
font-size:14px;
}

Example4{
color:blue;
font-size:10px;
}

</style>

<Example2>


   <Example3>Example3는 Example2의 자식이므로 당연히 빨간색</Example3><br>
   <Example4>Example3의 자식이지만 얘는 파란색</Example4>


</Example2>
Example3는 Example2의 자식이므로 당연히 빨간색
Example3의 자식이지만 얘는 파란색

 

→Example3 태그는 부모 Example2의 영향을 받아서 빨간색과 14px로 변경

But, 본인의 요소가 해당속성을 갖고 있다면 본인의 스타일 적용 like Example4

 

반응형