본문 바로가기

개발공부/Front-end

[HTML, CSS] CSS 기본 개념, 셀렉터

CSS 개념

CSS는 Cascading Style Sheets의 약자로 HTML이나 XML같은 마크업 언어로 작성된 문서가 어떻게 표현되어야 하는지를 나타내는 스타일 시트(Style Sheets) 언어이다. HTML이 웹 페이지의 전체적인 구조와 내용을 나타내는 반면에, CSS는 각 HTML의 요소를 꾸미는 역할을 담당한다. 

 

 

1. CSS 기본 문법과 구조

 

CSS 는 규칙 기반 언어이다. 웹 페이지의 특정 요소나 요소 그룹에 적용할 스타일 그룹을 지정하는 규칙을 정의할 수 있다.

ex) " h1 요소의 텍스트 색상은 빨간색으로 하고 글자 크기는 크게 표시하고 싶은 경우, 다음과 같은 코드로 나타낼 수 있다.

Source: hoole.onl

먼저 스타일을 지정할 HTML 요소를 선택한 뒤에 중괄호 { }를 사용해서 그 안에 속성과 값 쌍의 형태를 취하는 선언을 한다. 각 쌍은 내가 선택한 요소의 속성을 지정하고 속성에 부여할 값을 지정하는 것을 의미한다. 콜론(;) 앞에는 속성이 있고 콜론 뒤에는 값이 있다. 위의 예시에서는 color와 font-size라는 속성이 사용되었다.

 

 

2. CSS 를 문서에 적용하는 3가지 방법

 

2.1 외부(external) 스타일 시트를 페이지에 연결하는 방법

외부 스타일 시트는 CSS 확장자가 .css 인 별도의 파일로 작성되고, HTML <link> 요소에서 참조하는 경우이다. CSS 를 여러 페이지에 연결할 수 있기때문에, CSS 를 문서에 첨부하는 가장 일반적이고 유용한 방법이다. <link> 라는 빈 태그에 속성값로 rel = "stylesheet" 와 href = "주소명.css" 주소를 적어야 한다.

 <head>
	<link rel="stylesheet" href="styles.css">
 </head>
   <body>
     <h1>외부 스타일 시트 삽입 예시</h1>
   </body>
h1 {
  color: blue;
  background-color: yellow;
  border: 1px solid black;
}

 

2.2 내부(internal) 스타일 시트

내부 스타일 시트는 외부 CSS 파일이 없는 대신, CSS 선택자를 HTML <head> 안에 포함된 <style> 요소 내부에 CSS를 배치한다. <head> 태그에 삽입된 대신, 대량 수정 기능에 유리하다는 장점이 있다. 

<head>
    <style>
      h1 {
        color: blue;
        background-color: yellow;
        border: 1px solid black;
      }

      p {
        color: red;
      }
    </style>
  </head>

 

2.3 인라인 스타일(Inline)

인라인 스타일은 CSS 효과를 <body> 태그에 위치한 HTML 태그 뒤에 style 속성과 속성값을 직접 삽입하는 방법이다. 개별적으로 태그에 CSS 효과를 줘야할 때 사용할 수 있다. 이 방법은 나중에 대량 수정에 불리하기 때문에 권하는 권장하는 방법은 아니다. 그러나 다른 위치에 비해서 적용 우선순위가 높다.

 <body>
    <h1 style="color: blue;background-color: yellow;border: 1px solid black;">인라인 스타일</h1>
    <p style="color:red;">인라인 스타일 예시</p>
  </body>

 

 

3. Selector(셀렉터) = 선택자

CSS 에서 셀렉터는 스타일을 지정할 웹 페이지의 HTML 요소를 대상으로 선택하는데 사용된다. CSS 선택자는 CSS 규칙의 첫 부분이며, 규칙 내의 CSS 속성값을 적용하기 위해 어떤 HTML 요소를 선택해야 하는지 브라우저에 알려주는 역할을 한다.

 

전체 선택자: HTML 문서 내부의 모든 요소를 선택하고 똑같은 CSS 속성을 적용한다. 보통 margin, padding 값 같은 기본값을 정해둘 때 사용한다. *를 사용해서 작성한다.

/*CSS*/
* {margin: 0; background-color: grey;}

 

태그 선택자(Type Selector): HTML 요소를 직접 지정하는 간단한 선택자이다. HTML 태그에서 <>를 제거하고 작성한다.

/*CSS*/
p {background: black; color: white;}

/*HTML*/
<p>태그 선택자 예시</p>


클래스 (class) 선택자: 주어진 값을  class 속성값으로 가진 모든 HTML 요소를 선택한다. 속성값 앞에 .(마침표)를 추가해서 작성한다. 한 페이지 내에서 여러 번 반복될 필요가 있는 스타일은 클래스 선택자를 사용한다. 특정 분류 안에 포함된 요소의 특성을 정의하는데 사용된다.

/*CSS*/
.content01 {background: black; color: white;}

/*HTML*/
<p class="content01">클래스 선택자 예시</p>
<div class="content02">클래스 선택자 예시</div>

 


ID 선택자: HTML 문서 내에서 어떤 요소에 대해 유일한 특성을 정의한다. HTML 문서 내에는 주어진 ID 속성값은 오직 하나만 존재해야 한다. 속성값 앞에 #를 추가해서 작성한다.

/*CSS*/
#userinfo {background: black; color: white;}

/*HTML*/
<div id="userinfo">ID 선택자 예시</div>
<div id="itemInfo">ID 선택자 예시</div>

 

하위 선택자(자손 선택자) & 자식 선택자

하위 선택자 (좌) 자식 선택자 (우)

태그들 간에 포함 관계를 가질 때, 포함하는 요소를 부모 요소, 포함되는 요소를 자식 요소라고 한다. 위의 그림에서 하위 선택자는 부모 요소(section)에 포함된 모든 하위 요소에 스타일 을 적용한다. 그러나 자식 선택자는 부모(section)의 바로 아래 자식 요소(ul)에만 적용한다.