본문 바로가기
Frontend/CSS

CSS3의 기본 문법에 대하여

by 코딩쥐 2024. 7. 1.

 CSS(Cascading Style Sheets)는 HTML 문서의 글꼴이나 색상, 정렬 등 문서의 스타일을 꾸밀 때 사용하는 스타일 시트 언어이다. CSS는 HTML과 함께 웹 문서의 기본 개념으로 디자인과 내용을 분리 목적으로 등장했다.

  • 선택자{
    속성:속성값;
    }

스타일의 기본 형식은 스타일 규칙이 어디에 적용될지를 정하는 선택자(selector)와 어떤 항목을 어떻게 변경할지에 대해 적어놓은 속성:속성값;으로 기본적으로 이루어져 있다. 

 

선택자(selector)의 종류

선택자는 HTML 태그의 모양을 꾸밀 스타일 시트를 선택하는 기능이다. 셀렉터에는 여러 유형이 있다. 

  • *{}
    전체선택자는 웹 페이지 전체에 적용되는 스타일을 설정한다. 각 브라우저에서 제공되는 디자인을 초기화하기 위한 방법으로 사용되는 경우가 많다.
  • .클래스명{}
    선택자 앞에 점(.)을 붙인경우 HTML태그의 class속성으로 스타일을 지정할 수 있다. 
  • #아이디명{}
    선택자 앞에 '#'을 붙인 경우 HTML태그의 id속성으로 스타일을 지정할 수 있다. 
  • 태그이름{}
    선택자에 적힌 태그에 스타일 시트를 적용한다. 여러 개의 태그 이름 선택자를 사용할 때에는 콤마(,)로 분리한다. 
  • input[type=타입명]{}
    HTML 태그의 특정 속성에 대해 값이 일치하는 태그에만 스타일을 적용한다. 
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        *{
            background-color: darkgray;
        }

        h1{
            color:teal;
        }

        .welcome{
            color:darkcyan;    
        }

        #notice{
            font-weight: bold;
        }

        p{
            font-style: italic;
        }

        input[type="text"]{
            font-size: 20px;
        }
    </style>
</head>
<body>
    <h1> 환영합니다. </h1>
    <h2 class="welcome"> OO호텔로 오신 것을 환영합니다. </h2>
    <h3 id="notice">몇 가지 공지사항에 대해 알려드리겠습니다.</h3>
    <p> 입실시간은 14:00 이며 퇴실시간은 10:00 입니다. </p>
    
    <form method="get">
        <label for="name">성함</label><input type="text" name="name" id="name">
    </form>

</body>
</html>

전체 선택자에 background를 설정해서 화면 색이 설정되어있는 것을 볼 수 있다.

 

스타일의 우선순위

이렇게 스타일을 설정하다보면 겹치는 스타일이 발생하기 마련이다. 이런 충돌을 막기위해서 CSS는는 Cascading(계단식)이라는 뜻처럼 위에서 아래로 흐르며 적용되는 방법을 도입했다. 그리고 우선순위는 세 가지 개념에 따라 지정되었다.

 

중요도(importance)

  •  사용자 스타일 시트 > 제작자 스타일 시트 > 기본 브라우저 시트
    사용자 스타일 시트는 저시력자나 색약자 등과 같이 특별한 조건이 필요한 사용자가 그들에 맞게 구성해놓은 스타일 시트를 말한다. 사용자 스타일 시트의 경우 CSS로 변경하려고 해도 변경이 되지 않는다. 

명시도(Specificity)

  • 인라인 스타일 > id 스타일 > class 스타일 > tag 스타일 > 전체 스타일 
    스타일의 적용 범위가 좁을수록, 즉 필요한 요소에만 적용하는 스타일일 수록 우선순위가 높아진다. 

소스에서의 순서(Source Order)

  • 중요도와 명시도가 같을 경우에는 가장 밑에 적혀져있는 스타일이 우선적으로 적용된다. 만약 우선 적용 시킬 대상을 지정하고 싶으면 !important를 사용하면 되지만, 보다 효율적인 유지보스를 위해서는 이 방식을 피하는 것이 좋다. 

 

CSS3 스타일 시트 만드는 방법

스타일 시트를 작성하는 방법은 3가지가 있다. <style>태그를 사용하는 방법, 스타일 정보를 별도 파일로 작성(.css)해서 <link>태그를 사용하여 불러오는 방법, style 속성을 사용하는 방법이 있다. 

 

<style>태그 사용

 내부 스타일 시트로 <head>태그 내에 작성하여 <style>태그와 </style>태그 사이에 스타일을 규칙을 기록하여 웹 페이지 전체에 적용되는 방법이다. 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        p{
            color: palevioletred;
            size: 10px
        }
    </style>
</head>
<body>
    <p> 안녕하세요 </p>
</body>
</html>

 

외부 스타일시트 작성

 CSS3 스타일 시트만 떼어내어 .css확장자를 가진 파일에 저장해놓고 <link>태그나 @import문을 사용하여 불러올 수 있다.

  • <link rel="stylesheet" href="파일명">
  • <style>@import url(파일명);</style>

 

HTML파일

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <link rel="stylesheet" href="css.css">
</head>
<body>
    <p> 안녕하세요 </p>
</body>
</html>

 

CSS파일

/* css.css */
p{
    color: rebeccapurple;
    size: 10px
}

 

<style>속성 사용하기

인라인 스타일시트로, 스타일 시트를 사용하지 않고 스타일 적용할 대상에 직접 작성하는 방법으로 인라인 스타일 시트의 경우 HTML과 CSS가 코드에 뒤섞이게 되어 유지보수를 어렵게 하기 때문에 최대한 사용을 지양한다.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <p style="color:darkgoldenrod"> 안녕하세요 </p>
</body>
</html>