2024.05.29

CSS에 대한 설명

CSS(Cascading Style Sheets)는 HTML로 작성된 웹 페이지의 스타일을 정의하는 언어이다. CSS를 사용하면 웹 페이지의 레이아웃, 색상, 글꼴, 간격, 크기 등을 제어하여 페이지를 더욱 미적으로 꾸밀 수 있다. HTML이 웹 페이지의 구조를 담당한다면, CSS는 해당 구조를 꾸미고 디자인하는 역할을 한다.

CSS의 주요 특징

  1. 스타일 분리
    • CSS는 콘텐츠와 스타일을 분리하여, HTML 문서의 구조와 디자인을 독립적으로 관리할 수 있게 한다. 이를 통해 유지보수가 쉬워지고, 여러 페이지에 공통된 스타일을 적용할 수 있다.
  2. 선택자와 선언
    • CSS는 선택자(selector)선언(declaration)으로 구성된다. 선택자는 스타일을 적용할 HTML 요소를 지정하며, 선언은 특정 스타일 속성과 그 값을 정의한다.
    • 예를 들어, 다음 코드에서 h1은 선택자이고, { color: blue; }는 선언이다.
      h1 {
          color: blue;
      }
      
  3. 다양한 스타일 적용 방식
    • CSS는 인라인(inline), 내부(internal), 외부(external) 스타일시트를 통해 스타일을 적용할 수 있다.
      • 인라인 스타일: HTML 요소에 직접 스타일을 적용 (<h1 style="color: blue;">Hello</h1>)
      • 내부 스타일시트: HTML 문서의 <head> 태그 안에 <style> 요소를 사용해 스타일을 정의
      • 외부 스타일시트: 별도의 .css 파일을 사용해 스타일을 정의하고, <link> 태그를 통해 HTML 문서에 연결
  4. 계단식(Cascading) 우선순위
    • CSS는 여러 개의 스타일 규칙이 동일한 요소에 적용될 때, 계단식 우선순위(cascading priority)를 따르게 된다. 우선순위는 인라인 스타일 > 내부 스타일시트 > 외부 스타일시트 순서로 적용되며, 특정성을 따져 가장 구체적인 규칙이 우선 적용된다.

주요 CSS 속성

  1. 텍스트 관련 속성
    • color: 글자 색상을 지정
    • font-size: 글자 크기를 지정
    • font-weight: 글자의 굵기를 지정
    • text-align: 텍스트 정렬 방식 지정 (왼쪽, 오른쪽, 가운데 등)
    p {
        color: red;
        font-size: 16px;
        font-weight: bold;
        text-align: center;
    }
    
  2. 박스 모델(Box Model)
    • 모든 HTML 요소는 박스 모델로 구성되며, 이는 content, padding, border, margin으로 이루어져 있다.
      • padding : 콘텐츠와 테두리 사이의 내부 여백
      • border : 요소의 테두리
      • margin : 테두리 바깥쪽의 외부 여백
         div {
         width: 200px;
         height: 100px;
         padding: 10px;
         border: 2px solid black;
         margin: 20px;
         }
        
  3. 레이아웃 관련 속성
    • display : 요소의 표시 방식 설정 (block, inline, flex, grid 등)
    • position : 요소의 위치를 제어 (static, relative, absolute, fixed, sticky)
    • float : 요소를 왼쪽 또는 오른쪽으로 띄움 ```css .container { display: flex; justify-content: space-between; align-items: center; }

    .box { position: absolute; top: 50px; left: 100px; } ```

  4. 배경 관련 속성
    • background-color : 배경 색상 지정
    • background-image : 배경 이미지 설정
    • background-size : 배경 이미지 크기 조절
      body {
       background-color: #f0f0f0;
       background-image: url('background.jpg');
       background-size: cover;
      }
      
  5. 애니메이션과 전환 효과
    • CSS 애니메이션 및 전환 효과를 통해 웹 페이지에 동적인 요소를 추가할 수 있다.
    • 버튼을 클릭 또는 hover 될 때 부드러운 애니메이션 효과 ```css .button { background-color: blue; transition: background-color 0.3s; }

    .button:hover { background-color:green; } ```

  6. 반응형 웹 디자인
    • 미디어 쿼리(Media Query)를 사용하여 다양한 화면 크기에 따라 레이아웃을 조정할 수 있다. 이를 통해 데스크톱, 태블릿, 모바일 등 다양한 장치에서 일관된 사용자 경험을 제공한다.
      @media (max-width: 600px) {
       .container {
          flex-direction: column;
       }
      }
      

CSS 수업 내용

      <styletype="text/css">
      /* 이곳은 주석입니다, Ctrl + Shift + C로 자동 주석 가능. 그러나 푸는 것은 안된다. 
         선택자 {스타일 항목 : 스타일 값;...} 
         기본 선택자 : a - a tag, .a - a라는 클래스(여러개), #a - a라는 아이디(한개)
         다수 선택자 : ","로 선택. a, #a : a tag와 a라는 아이디
         상태 선택자 : ":". ":hover" - 마우스가 올라갔을 때. "a:hover" - 앵커 태그 위에 마우스가 올라갔을 때.
         선택의 상속 : a .data - a tag 안에 data class의 태그를 찾는다.
      */
      
      /* box 속성의 객체를 가운데 정렬 시키기 - table */
      table {
         /* table의 여백 주기 - 데이터를 반복적으로 사용 : 시작이 맨 위에서 부터 시계 방향으로(상우하좌)
            길이나 크기를 지정할 때 0 이 아니면 단위를 꼭 써야 한다. (px, pt, cm, mm, m, inch, em ...)*/
         margin: 0 auto;
         width: 800px; /* 테이블의 너비 지정*/
      }
      
      /* 테이블 테두리 */
      th, td {
         /*   border=with : 1px; border-type : solid; border-color : #888
                     - 데이터 특성에 따라서 항목에 찾아 들어간다.
                     - 색상 : #888 
                        -- 색상 이름 : red, blue, black, white, ...
                        -- rgb : 16진수 #FFFFFF - #RGB : R - 0~FF : 256 등급으로 나눔
                                    #FFF - #RGB : R - 0~F : 16등급으로 나눔
                     - 선 타입 : solid - 실선, dotted - 점선, dashed - 긴 점선, double - 이중선
         */
         border: 2px hidden #888; /* 테두리 */
         padding: 5px; /* 테두리와 데이터의 공백 */
      }
      
      th {
         background: #50586C; /* 배경색 */
         color: #DCE2F0;
      }
      
      td {
         background: #DCE2F0; /* 배경색 */
         color: #50586C;
      }
      </style>