[CSS] 기초 지식 총 정리

김태희·2023년 5월 28일
0

[HTML+CSS+JS] 시리즈

목록 보기
3/17
post-thumbnail
post-custom-banner
<!DOCTYPE html>
<html>

<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
  <style>
    /* div {
      box-sizing: border-box;
      width: 500px;
      height: 500px;
      border: 1px solid red;
      background-image: url("https://cdn.travie.com/news/photo/first/201710/img_19975_1.jpg");
      background-repeat: no-repeat;
      background-position: left top;
    } */
    body {
      height: 1000px;
    }

    .container {
      display: flex;
      width: 300px;
      height: 300px;
      border: 2px solid black;
      justify-content: space-between;
    }

    .item {
      width: 60px;
      height: 60px;
      background-color: teal;
    }

    ul li {
      text-align: center;

      width: 50px;

      background-color: red;
      list-style: none;
    }

    .main_container {
      display: flex;
      justify-content: center;
      /* x */
      height: 300px;
      align-items: center;
      /* y */


    }
  </style>
</head>

<body>
  <!-- <div class="container">
    <div class="item">1</div>
    <div class="item">2</div>
    <div class="item">3</div>
  </div> -->

  <!--
  
  div ul li << 이런 구조라면 컨테이너 - 부모 - 자식 
  
  div div ul li << 이런 구조라면 컨테이너 - 박스 - 부모 - 자식 
    
  flex 실무처럼 쓰기!
    
  div box를 하나 더 감싸줘서 최상위 부모에게 flex를 줄 것!
    
  기존 div ul li 의 구조였다면
    
  정렬하고 싶은 요소들을 한 뭉텅이에 묶고 그 부모요소(즉 컨테이너)에게 display flex를 줄 것!
  
  justify-contents : x축 가운데 정렬 
  
  align-items : y축 가운데 정렬 
  
  원하는대로 안움직인다? 싶으면 플렉스 걸어준 컨테이너 기점으로 높이 설정후 align-item center 쓰기 ! 
  
  이것도 안되면 리스트나 유엘이나 높이설정에 방해가 있는요소 하이트 제거하기

  특성 선택자

  - 컨셉 : [class], [class="item"] -> 클래스가 존재하면 선택
  - 값 확인 
  [class *="it"] -> 클래스 값에 it가 포함되는 요소 
  [class ^="it"] -> 클래스 값에 it로 시작되는 요소
  [class $="it"] -> 클래스 값에 it로 끝나는 요소

  결합 선택자

  1. 자손 결합자
  div p -> div 요소 안에 위치하는 모든 p요소 선택하기
  div > p -> div 요소 바로 아래에 위치하는 모든 p 요소를 선택하기

  2. 형제 결합자
  h1 ~ p -> h1 요소의 뒤에 오는 형제 중 모든 p 요소를 선택하기
  h1 + p -> h1 요소의 바로 뒤에 오는 형제 p 요소를 선택하기

  형제 요소란 ? -> 같은 부모를 가지고있는 요소

  의사 클래스 : 선택자에 추가하는 키워드로 요소가 특정한 상태가 되었을 때 요소를 선택하겠다는 의미 

  ex : [type="button"]:hover{}

  hover : 마우스 포인터가 요소 위에 위치
  
  active : 사용자가 요소를 활성화(마우스 클릭 등)

  focus : 요소가 포커스를 받고 있다 ex:text input 창 클릭

  disabled : 비활성 상태의 요소

  nth-child() : 형제 사이에서의 순서에 따라 요소를 선택


  의사요소

  ex : 선택자 :: 의사요소 / li::first-letter

  after : 요소의 뒤에 추가

  before : 요소의 앞에 추가

  first-line : 블록 레벨 요소의 첫 번째 줄

  marker : 목록 기호의 스타일을 적용 ex : list의 점

  placeholder : 입력 요소의 자리표시자 스타일을 적용(input 칸의 글자)


  상속의 가능여부

  상속이 되는 속성
  color, font, text, cursor 등

  상속이 되지않는 속성
  background, display, border 등



  공용 키워드 (모든 css 속성에 사용이 가능함)
  inherit : 상위 요소로부터 해당 속성의 값을 받아 사용

  initial : 해당 속성의 기본값을 요소에 적용

  unset : 상속 속성에 대해서는 inherit 처럼 상속되지 않는 속성에 대해서는 initial처럼 적용



  z-index 

  요소가 겹치면 x,y 뿐만아닌 화면 앞 즉 z축으로 요소가 쌓임
  이때 쌓이는 순서를 결정할 수 있는 것이 z-index 
  기본값은 auto 이며 정수값으로 정의함

  값이 클수록 전면에 표시된다
  -->
  <div class="main_container">
    <div class="list_box1">
      <ul>
        <li>1</li>
        <li>2</li>
        <li>3</li>
        <li>4</li>
      </ul>
    </div>
    <div class="list_box2">
      <ul>
        <li>5</li>
        <li>6</li>
        <li>7</li>
        <li>8</li>
      </ul>
    </div>
  </div>
</body>

<!--
전체 선택자, 태그 선택자, 클래스 선택자, 아이디 선택자, 그룹선택자

  선택자 겹치는 경우 우선순위
  아이디 > 클래스 > 태그

  인라인 요소 -> width height 조절 불가능
  inline - block 로 변경하여 조절 가능함

  박스모델 - 바깥쪽 여백(margin) - 경계선(border-width) - 안쪽 여백(padding) - 콘텐츠 영역(width, height)

  하위속성 정의하기 padding-left, padding-right, padding-top, padding-bottom
  
  margin도 마찬가지로 가능

  각각 정의하면 귀찮으니 한번에 정의하기

  ex : margin : 10px 20px 30px 40px;
  두 개 수치 지정 -> 상하 좌우 순서
  세 개 수치 지정 -> 상 좌우 하 순서
  네 개 수치 지정 -> 상 우 하 좌 순서 (시계방향)


  box-sizing

  - content-box : 기본값, 너비와 높이가 콘텐츠 영역만을 포함한다 -> 여백이 커지면 박스가 커진다
  - border-box : 너비와 높이가 안쪽 여백과 테두리까지 포함한다 -> 여백이 커지면 콘텐츠 영역이 줄어든다

  ex : box-sizing : border-box;


  background : 콘텐츠의 배경을 정의한다

  하위속성
  - color : 배경 색

  - image : 배경 이미지 -> url() 키워드를 통해 삽입 가능

  - position : 배경 이미지의 초기 위치 -> left right top center bottom 두개 섞어서 사용 가능 'left bottom'

  - size : 배경 이미지의 크기 -> 가로, 세로 순서로 지정 가능
  cover -> 이미지가 찌그러지지 않는 선에서 최대한 채운다
  contain -> 이미지가 찌그러지거나 잘리지 않는 선에서 최대한 채운다
  
  - repeat : 배경 이미지의 반복 방법 -> 기본값이 사진이 배경보다 작을경우 반복하는것으로 되어있음 -> ': no-repeat'를 통해 하나만 삽입 가능

  background는 하위속성 굳이 안적고 바로 사용 가능함 순서도 상관없음
  ex : background: no-repeat url() red ~~


  position 

  -relative 속성 : 일반적인 문서의 흐름에 따라 배치하지만 상하좌우 값에 따른 오프셋(띄우는 정도)를 적용해 위치를 조절한다 /문서의 흐름에 포함되며 다른 요소들이 오프셋이 적용되기전의 위치로 영향을 받음

  -absolute 속성 : 상위요소 중 가장 가까운 포지션 요소를 기준으로 오프셋을 적용하여 위치를 조절 / 문서의 흐름에서 제외되어 다른 요소들이 영향받지 않음 

  -fixed 속성 : 문서 흐름에서 제외되고 위치가 고정됌(스크롤 내려도 그대로 있음)

  -sticky 속성 : 일반적인 문서 흐름에 따라 배치하고, 스크롤되는 가장 가까운 상위 요소에 대해 오프셋을 적용하기(문서흐름대로 가다가 스크롤 이동할때 정해진 위치가 있으면 그곳으로 감)

  flexbox : 요소의 진행방향을 가로로 바꿀 수 있음

  display : flex;

  flex-direction : flexbox의 진행방향 바꿀 수 있음

  : row(기본값) = 행

  : column = 열

  : row-reverse = 오른쪽으로 데칼코마니

  : column-reverse = 진행방향 뒤바뀐 열
  
  
  -->

</html>

선택자의 종류
전체 선택자, 태그 선택자, 클래스 선택자, 아이디 선택자, 그룹 선택자

선택자 겹치는 경우 우선순위

아이디 > 클래스 > 태그

인라인 요소 -> width height 조절 불가능

display를 통해 inline-block 요소로 변경하여 조절 가능함

박스모델의 구조

바깥쪽 여백(margin) > 경계선(border-width) > 안쪽 여백(padding) > 콘텐츠 영역(width, height)

하위속성 정의하기

  • padding-left, padding-right, padding-top, padding-bottom
  • margin도 같은 방법으로 정의

하지만 각각 정의하면 귀찮으니 한번에 정의하는것을 추천 !

ex : margin : 10px 20px 30px 40px;

  • 두 개 수치 지정 -> 상하 좌우 순서
  • 세 개 수치 지정 -> 상 좌우 하 순서
  • 네 개 수치 지정 -> 상 우 하 좌 순서 (시계방향)

box-sizing

  • content-box : 기본값, 너비와 높이가 콘텐츠 영역만을 포함한다 -> 여백이 커지면 박스가 커진다
  • border-box : 너비와 높이가 안쪽 여백과 테두리까지 포함한다 -> 여백이 커지면 콘텐츠 영역이 줄어든다

    ex : box-sizing : border-box;

background : 콘텐츠의 배경을 정의한다

하위속성

  • color : 배경 색
  • image : 배경 이미지 -> url() 키워드를 통해 삽입 가능
  • position : 배경 이미지의 초기 위치 -> left right top center bottom 두개 섞어서 사용 가능 'left bottom'
  • size : 배경 이미지의 크기 -> 가로, 세로 순서로 지정 가능
  1. cover -> 이미지가 찌그러지지 않는 선에서 최대한 채운다 ex : size: cover
  2. contain -> 이미지가 찌그러지거나 잘리지 않는 선에서 최대한 채운다
  • repeat : 배경 이미지의 반복 방법 -> 기본값이 사진이 배경보다 작을경우 반복하는것으로 되어있음 -> ': no-repeat'를 통해 하나만 삽입 가능

background는 하위속성 굳이 따로 안적고 바로 사용 가능함 순서도 상관없음

ex : background: no-repeat url() red ~~

position

  • relative 속성 : 일반적인 문서의 흐름에 따라 배치하지만 상하좌우 값에 따른 오프셋(띄우는 정도)를 적용해 위치를 조절한다 /문서의 흐름에 포함되며 다른 요소들이 오프셋이 적용되기전의 위치로 영향을 받음
  • absolute 속성 : 상위요소 중 가장 가까운 포지션 요소를 기준으로 오프셋을 적용하여 위치를 조절 / 문서의 흐름에서 제외되어 다른 요소들이 영향받지 않음
  • fixed 속성 : 문서 흐름에서 제외되고 위치가 고정됌(스크롤 내려도 그대로 있음)
  • sticky 속성 : 일반적인 문서 흐름에 따라 배치하고, 스크롤되는 가장 가까운 상위 요소에 대해 오프셋을 적용하기(문서흐름대로 가다가 스크롤 이동할때 정해진 위치가 있으면 그곳으로 감)

flexbox : 요소의 진행방향을 바꿀 수 있음(인라인 블록 대체 가능)

  • 사용 방법 : display : flex;

    flex-direction : flexbox의 진행방향 바꿀 수 있음

    : row(기본값) = 행

    : column = 열

    : row-reverse = 오른쪽으로 데칼코마니

    : column-reverse = 진행방향 뒤바뀐 열

div - ul - li << 이런 구조라면 컨테이너 - 부모 - 자식

div - div - ul - li << 이런 구조라면 컨테이너 - 박스 - 부모 - 자식

flex 실무처럼 쓰기!

  • div box를 하나 더 감싸줘서 최상위 부모에게 flex를 줄 것!
  • 기존 div ul li 의 구조였다면 정렬하고 싶은 요소들을 한 뭉텅이에 묶고
    그 부모요소(즉 컨테이너)에게 display flex를 주기
  • justify-contents : x축 가운데 정렬
  • align-items : y축 가운데 정렬
  • 원하는대로 안움직인다? 싶으면 플렉스 걸어준 컨테이너 기점으로 높이 설정후 align-item center 사용
  • 이것도 안되면 리스트나 유엘이나 높이설정에 방해가 있는요소 하이트 제거하기

특성 선택자

  • 컨셉 : [class], [class="item"] -> 클래스가 존재하면 선택
  • 값 확인

    [class *="it"] -> 클래스 값에 it가 포함되는 요소

    [class ^="it"] -> 클래스 값에 it로 시작되는 요소

    [class $="it"] -> 클래스 값에 it로 끝나는 요소

결합 선택자

  • 자손 결합자

    div p -> div 요소 안에 위치하는 모든 p요소 선택하기

    div > p -> div 요소 바로 아래에 위치하는 모든 p 요소를 선택하기

  • 형제 결합자

    h1 ~ p -> h1 요소의 뒤에 오는 형제 중 모든 p 요소를 선택하기

    h1 + p -> h1 요소의 바로 뒤에 오는 형제 p 요소를 선택하기

형제 요소란 ? -> 같은 부모를 가지고있는 요소

의사 클래스 : 요소가 특정한 상태가 되었을 때 요소를 선택하겠다는 의미

ex : [type="button"]:hover{}

hover : 마우스 포인터가 요소 위에 위치

active : 사용자가 요소를 활성화(마우스 클릭 등)

focus : 요소가 포커스를 받고 있다 ex:text input 창 클릭

disabled : 비활성 상태의 요소

nth-child() : 형제 사이에서의 순서에 따라 요소를 선택

의사요소

ex : 선택자 :: 의사요소 / li::first-letter

after : 요소의 뒤에 추가

before : 요소의 앞에 추가

first-line : 블록 레벨 요소의 첫 번째 줄

marker : 목록 기호의 스타일을 적용 ex : list의 점

placeholder : 입력 요소의 자리표시자 스타일을 적용(input 칸의 글자)

상속의 가능여부

  • 상속이 되는 속성
    color, font, text, cursor 등

  • 상속이 되지않는 속성
    background, display, border 등

공용 키워드(모든 css 속성에 사용이 가능함)

inherit : 상위 요소로부터 해당 속성의 값을 받아 사용

initial : 해당 속성의 기본값을 요소에 적용

unset : 상속 속성에 대해서는 inherit 처럼 상속되지 않는 속성에 대해서는 initial처럼 적용

z-index

  • 요소가 겹치면 x,y 뿐만아닌 화면 앞 즉 z축으로 요소가 쌓이는데, 이때 쌓이는 순서를 결정할 수 있는 것이 z-index이다
  • 기본값은 auto 이며 정수값으로 정의함
  • 값이 클수록 전면에 표시된다

웹 개발 입문 3일차 CSS 기초 강의를 수강하며 정리한 내용들을 기록한다

이론 학습만으론 아직 직접 사용하기에 부족한 것 같아

내일부터는 JS 기초지식 공부와 함께 HTML+CSS를 복습하며 직접 웹사이트를 내 손으로
만들어보는 응용 실습 시간을 가지며 배운 지식들을 체화시키려고 한다

화이팅

post-custom-banner

0개의 댓글