2022년 6월 23일 목요일

[패스트캠퍼스] react 강의 학습일지 - 2주차

 

React&Redux로 시작하는 웹프로그래밍_2주차

HTML/CSS/JS로 만드는 스타벅스 웹사이트



CSS 속성 (Properties)

  • 속성에는 기본값, 즉 요소에 이미 들어가 있는 속성의 값이 있다.
  • 개요
    • 박스모델
      • HTML요소는 기본적으로 가로, 세로넓이를 갖고있는 사각형임
      • 박스모델은 HTML요소 하나의 박스의 모양을 제어하는 속성들
    • 글꼴, 문자
      • 특정한 글꼴/크기/두께 등..을 제어하는 속성
    • 배경
      • 요소의 배경에 배경색/배경을 삽입하는 속성
    • 배치
      • 특정 요소를 원하는 위치에 배치하는 속성
    • 플렉스(정렬)
      • 기본적으로 요소들은 위아래로 수직으로 쌓이지만 수평정렬을 할때 사용
    • 전환
      • 요소의 전상태와 후상태 중간을 애니메이션 처리해주는 속성
    • 변환
      • 요소를 회전하거나 이동시키거나 크기를 조절해주는, 요소의 2D또는 3D변화를 주는 속성
    • 띄움
      • 요소를 공중으로 띄운다. (예: 박스주변으로 문자가 흐르게 하는 구조)
    • 애니메이션
      • 요소에 전환보다 복잡한 효과를 줄때 사용
    • 그리드
      • 엑셀처럼 행과 열을 갖은 2차원의 레이아웃을 만들때 사용
    • 다단
      • 문서작업을 할때 하나의 페이지에서 문단을 여러개로 나눌때 사용
    • 필터
      • 다양한 필터를 제공함. (예: 이미지 블러처리, 흑백효과, 이미지 색상 반전 등)
  • 너비(width, height)
    • 기본값 auto / 단위 / none 등이 있는데, auto란 브라우저가 너비를 계산해서 출력하는 값이고, 단위란 px, em, vw등 단위로 지정하는 값이다.
    • [width, height] 요소의 가로/세로 너비 (기본값: auto)
      • 예: <span> 대표적인 인라인 요소로, 포함한 콘텐츠 크기만큼 자동으로 가로,세로 너비가 줄어듦, 인라인 요소는 글자를 제어하는 요소이기 때문에 가로,세로 너비를 100px로 주어도 변화가 없음!
      • 예: <div> 대표적인 블록 요소로, width 너비는 부모 요소의 크기만큼 자동으로 늘어나지만, height는 포함한 콘텐츠 크기만큼 자동으로 줄어듦
    • [max-width, max-height] 요소가 커질 수 있는 최대 가로/세로 너비 (기본값: none)
    • [min-width, min-height] 요소가 작아질 수 있는 최대 가로/세로 너비 (기본값: 0)
  • CSS 단위
    • [px] 픽셀/ 화면에 출력하는 하나의 점, 절대 단위 (디바이스와 화면의 확대/축소에 따라 달라져 상대적일 수도 있음)
    • [%] 상대적 백분율 (특정한 기준의 요소에 대해 백분율로 나타냄) 
    • [em] 요소의 글꼴 크기 = 1em (즉, 글꼴이 10px이면 1em = 10px) 상대적
    • [rem] 루트 요소, 최상위 요소(html)의 글꼴 크기 (16px)
    • [vw] 뷰포트 가로 너비의 백분율 (예: 1vw란, 뷰포트의 1/100 크기라는 뜻, 50vw는 뷰포트의 절반을 사용해라)
    • [vh] 뷰포트 세로 너비의 백분율
  • 외부 여백(margin)
    • 요소의 외부 여백(공간)을 지정하는 단축 속성 (기본값: 0, auto, 단위)
      • 0은 외부 여백 없음
      • auto는 브라우저가 여백을 계산함. 가/세로 너비가 있는 요소의 가운데 정렬에 활용
      • % (사용빈도 적음) 부모 요소의 가로 너비에 대한 비율로 지정
    • 값을 지정할수 있으며, 기본값은 0이고 음수를 사용 가능
    • 단축속성
      • margin-top
      • margin-right
      • margin-bottom
      • margin-left
        • 예: margin: 0; (top, right, bottom, left)
        • 예: margin: 10px 20px; (10px: top, bottom / 20px: left, right)
        • 예: margin: 10px 20px 30px; (10px: top / 20px: left, right / 30px: bottom)
        • 예: margin: 10px 20px 30px 40px; (10px: top / 20px: right / 30px: bottom, 40px: left)
  • 내부 여백(padding)
    • 요소의 내부 여백(공간)을 지정하는 단축 속성 ( 기본값: 0, 단위, %)
    • 특징: 요소의 자체 크기가 커짐
    • 0: 내부 여백없음
    • %: 부모 요소의 가로 너비에 대한 비율로 지정
  • 테두리 선(border)과
    • 요소의 테두리 선을 지정하는 단축 속성
      • 예: border: 4px solid black; (검은색 실선 4px 두께의 선이 들어감)
    • 특징: 요소의 자체 크기가 커짐
    • 기본값: border: medium none black 
      • border-width(선-두께): 요소 테두리 선의 두께 (기본값: medium) 단위 px, em, %등 단위로 지정하는것을 권장
      • border-width는 단축 속성
      • boder-style(선-종류): 요소 테두리 선의 종류 (기본값: none 선의 종류가 없어서 출력되지 않음), none, solid, dashed 를 많이 사용
      • border-color(선-색상): 요소 테두리 선의 색상을 지정하는 단축 속성 (기본값: black) black, 색상, transparent 가 많이 쓰임
  • 요소 테두리 선을 지정하는 기타 속성들
    • border-방향
    • border-방향-속성
    • border-top: 두께 종류 색상;
    • border-top-width: 두께;
    • border-top-style: 종류;
    • border-top-color: 색상;
    • border-right 
    • ...
  • 색상 표현
    • CSS 전체에서 사용 가능한 개념
    • 색을 사용하는 모든 속성에 적용 가능한 색상 표현 방법
      • 색상이름: 브라우저에서 제공하는 색상 이름 (권장하지않음)
        • 예: red, tomato, royalblue
      • Hex 색상코드: 16진수 색상 (Hexadecimal colors) (권장) 
        • 예: #000, #FFFFFF
      • RGB: 색의 삼원색
        • 예: rgb(255, 255, 255)
      • RGBA: 색의 삼원색+투명도
        • 예: rgba(0, 0, 0, 0.5)
        • 투명도: 0~1 사이에 소수점값 입력 (0: 투명, 1: 불투명)
  • 모서리 둥글게(border-radius)
    • 요소의 모서리를 반지름사이즈만큼 둥글게 깎음 (기본값: 0, 단위)
    • 기본값 0은 둥글게 없음
    • 특정한 모서리만 깎을 수 있음
      • 예: border-radius: 0 10px 0 0; (1 2 3 4 시계 방향, 1은 왼쪽상단)
  • 크기 계산(box-sizing)
    • 요소의 크기 계산 기준을 지정 (기본값: content-box)
      • content-box: 요소의 내용(content)으로 크기 계산
      • border-box: 요소의 내용+padding+border로 크기 계산
        • 요소의 크기를 키우는 속성(예: padding, border)들로 인한 크기변화가 없게 만들어주는 속성
  • 넘침 제어(overflow)
    • 요소의 크기 이상으로 내용이 넘쳤을 때, 보여지는 것을 제어하는 단축 속성
    • 기본적으로 부모에 overflow를 명시함.
      • [visible] (기본값) 넘친 내용을 그대로 보여짐
      • [hidden] 넘친 영역을 화면에 보이지 않게 숨겨라
      • [auto] 넘친 부분만 스크롤바를 생성해서 보여줘라
      • [scroll] 넘치던 안넘치던 스크롤바 (x축/y축 모두) 생성해서 보여줘라
    • 요소의 크기 이상으로 내용이 넘쳤을때 보여짐을 제어하는 개별 속성들
      • [overflow-x] : x축으로 넘치는 부분만 체크
      • [overflow-y] : y축으로 넘치는 부분만 체크
  • 출력 특성(display)
    • 요소의 화면 출력 즉, 보여짐 특성
      • [block] 상자(레이아웃)요소, 각 요소에 이미 지정되어 있는 값
      • [lnline] 글자요소, 각 요소에 이미 지정되어 있는 값
      • [inline-block] 글자+상자 요소, 각 요소에 이미 지정되어 있는 값
      • [flex] 플렉스 박스 (1차원 레이아웃), 따로 지정해서 사용하는 값
      • [grid] 그리드 (2차원 레이아웃), 따로 지정해서 사용하는 값
      • [none] 보여짐 특성없음, 화면에서 사라짐, 따로 지정해서 사용하는 값
      • [기타]: table, table-row, table-cell 등..
  • 투명도 (opacity)
    • 요소의 투명도를 결정
      • [1] (기본값) 불투명 
      • [0~1] 0부터 1사이의 소수점 투명도 지정
        • 예: opacity: 0.07;
  • 글꼴 (font)
    •  [font-style] 글자의 기울기
      • normal (기본값) 기울기 없음
      • italic / oblique 기울어진 글자
    • [font-weight] 글자의 두께(가중치)
      • normal, 400 기본 두께 (기본 값)
      • bold, 700 두껍게
      • 100~900 100단위의 숫자9개, normal과 bold이외 두께
      • bolder 상위(부모)요소보다 더 두껍게 (잘 안씀)
      • lighter 상위(부모)요소보다 더 얇게 (잘 안씀)
    • [font-size] 글자의 크기
      • 16px 기본 크기
      • 단위 px, em, rem등 단위로 지정
    • [line-height] 한 줄의 높이, 행간과 유사
      • normal 브라우저의 기본 정의를 사용 (기본값)
      • [숫자] 요소의 글꼴 크기의 배수로 지정 (예: line-height: 2; // 2배)
      • 단위 px, em, rem등의 단위로 지정
    • [font-family] 글꼴(서체) 지정
      • font-family: 글꼴1, "글꼴2", ... 글꼴계열;
      • 띄어쓰기 등 특수 문자가 포함된 글꼴 이름은 큰 따옴표 안에 명시
      • 글꼴계열은 필수로 넣어야함.
  • 문자
    • [color] 글자의 색상
      • rgb(0, 0, 0)검정색
      • 색상: 기타 지정 가능한 색상
    • [text-align] 문자의 정렬 방식
      • left, right, center, justify..
    • [text-decoration] 문자의 장식(선)
      • none, underline, line-through, overline..
    • [text-indent] 문자 첫줄의 들여쓰기
      • 0(기본값) 들어쓰기 없음
      • 단위 px, em, rem등의 단위로 지정
  • 배경 (background)
    • 배경의 색상이나 이미지 추가할때 사용하는 속성
    • [background-color] 요소의 배경색상
      • transparent (기본값) 투명함
      • 색상
    • [background-image] 요소의 배경 이미지 삽입
      • none (기본값) 이미지 없음
      • url("경로") 이미지 경로
    • [background-repeat] 요소의 배경 이미지 반복
      • repeat (기본값) 이미지를 수직, 수평으로 반복, 바둑판식
      • repeat-x 수평 반복
      • repeat-y 수직 반복
      • no-repeat 반복 없음
    • [background-position] 요소의 배경 이미지 위치
      • 방향 top, bottom, left, right, center 방향
        • 예: background-position: top right;
      • 단위 px, em, rem등 단위로 지정 (x, y축의 값)
      • 0% 0% (기본값) 0%~100% 사이값 (중요도 x)
    • [background-size] 요소의 배경 이미지 크기
      • auto (기본값) 이미지의 실제 크기
      • 단위 px, em, rem등 단위로 지정
      • cover 비율을 유지, 요소의 더 넓은 너비에 맞춤
      • contain 비율을 유지, 요소의 더 짧은 너비에 맞춤
    • [background-attachment] 요소의 배경 이미지 스크롤 특성
      • scroll (기본값) 이미지가 요소를 따라서 같이 스크롤
      • fixed 이미지가 뷰포트에 고정, 스크롤 x
        • Parallax (페럴렉스)에 활용
      • local 요소 내 스크롤 시 이미지가 같이 스크롤(중요도 x)
  • 배치 
    • [position] 요소의 위치 지정할때의 기준, 음수 사용 가능
    • 요소의 위치를 지정할때는 기준을 먼저 설정해야한다.
      • [static] (기본값) 기준 없음 (배치를 할수 없는 상태)
      • [relative] 요소 자신을 기준 (기존 위치가 시각적으로만 안보이는것일 뿐 실제 존재하고 있음// 거의 사용되지 않음)
      • [absolute] 위치 상 부모 요소를 기준
        • 위치상 부[모 요소로 지정한 후 사용해야 요소가 정상적으로 배치가 됨 (코드 position: relative;)
      • [fixed] 뷰포트(브라우저)를 기준
      • [sticky] 스크롤 영역 기준 (중요도 x)
      • 요소의 각 방향별 거리지정 속성: top, bottom, left, right, z-index(쌓인 순서)
        • auto (기본값)브라우저가 계산
        • 단위 px, em, rem
    • 요소 쌓임 순서(statck order)
      • 어떤 요소가 사용자와 더 가깝게 있는지(위에 쌓이는지) 결정
        • 1. 요소에 position 속성의 값이 있는 경우 위에 쌓임. (기본값 static 제외)
        • 2. 1번 조건이 같은 경우, z-index 속성의 숫자 값이 높을 수록 위에 쌓임
        • 1번과 2번 조건까지 같은 경우, HTML의 다음 구조일 수록 위에 쌓임
    • [z-index] 요소 쌓임 순서를 지정
      • auto (기본값) 부모 요소와 동일한 쌓임 정도 (0이라고 생각하면됨)
      • 숫자 숫자가 높을 수록 위에 쌓임 (음수 -1정도까지 쓸수 있음)
    • 요소의 display가 변경됨
      • position속성의 값으로 absolute, fixed가 지정된 요소는, display 속성이 block으로 변경됨. 
  • 플렉스(정렬) 
    • 기본 정렬은 수직 (위->아래)정렬이며, 수평(왼->오)정렬로 변경할때, 부모요소에 display:flex를 사용.
    • flex로 지정하면, flex container(부모)과 flex items(자식요소)가 생성된다. 두 요소에 적용하는 속성이 다르다.
    • x축: 주축, main-axis, y축: 교차 축, cross-axis
    • 플렉스(정렬) Container
      • display
        • flex container의 화면출력(보여짐)특성
          • [flex] 블록요소와 같이 flex container 정의
            • 예:display: flex;
          • inline-flex 인라인 요소와 같이 flex container 정의
      • flex-flow, flex-direction, flex-wrap
        • [flex-direction] 주 축(Main-axis)을 설정 (예: 표(table))
          • [row] (기본값) 행 축 (좌->우)
          • [row-reverse] 행 축 (우->좌)
          • [column] 열 축 (위->아래) (중요도x)
          • [column-reverse] 열 축 (아래 -> 위) (중요도x)
        • [flex-wrap] flex items 묶음(줄 바꿈) 여부
          • [nowrap] (기본값) 묶음(줄 바꿈) 없음
          • [wrap] 여러줄로 묶음
          • [wrap-reverse] wrap의 반대 방향으로 묶음
      • justify-content
        • 주 축의 정렬 방법/ 수평정렬시
        • [flex-start](기본값) flex items를 시작점으로 정렬 (수평정렬시 왼쪽정렬)
        • [flex-end] flex items를 끝점으로 정렬 (수평정렬시 오른쪽정렬)
        • [center] flex items를 가운데 정렬
        • [space-between](중요도x) 각 flex item 사이를 균등하게 정렬
        • [space-around](중요도x) 각 flex item의 외부 여백을 균등하게 정렬
      • align-content 
        • 교차 축의 '여러 줄' 정렬 방법 / 수직정렬시
        • 조건: flex-wrap:wrap; 이여야 하고 items가 2줄 이상이여야 하고 정렬이 가능한 여백이 있어야 작동함
        • [stretch](기본값) flex items를 시작점으로 정렬
        • [flex-start] flex items를 시작점으로 정렬
        • [flex-end] flex items를 끝점으로 정렬
        • [center] flex items를 가운데 정렬
        • [space-between](중요도x) 각 flex item 사이를 균등하게 정렬
        • [space-around](중요도x) 각 flex item의 외부 여백을 균등하게 정렬
      • align-items (활용도 높음)
        • 교차 축의 '한 줄' 정렬 방법
        • [stretch](기본값) flex items를 교차 축으로 늘림
        • [flex-start] flex items를 시작점으로 정렬
        • [flex-end] flex items를 끝점으로 정렬
        • [center] flex items를 가운데 정렬
        • [baseline] flex items를 각 줄의 문자 기준선에 정렬 (중요도x)
    • 플렉스(정렬) Items
      • order
        • flex item의 순서, 이 순서를 임의로 변경 가능함
        • [0] (기본값) 순서 없음
        • [숫자] 숫자가 작을 수록 먼저, 음수 가능
      • flex, flex-grow, flex-shrink, flex-basis
        • [flex-grow]
          • flex item의 증가 너비 비율 (빈 공간을 나눠 그 비율로 나눔)
          • [0] (기본값) 증가 비율 없음
          • [숫자] 증가 비율
        • [flex-shrink]
          • flex item의 감소 너비 비율
          • [1] flex container 너비에 따라 감소 비율 적용
          • [숫자] 감소 비율
        • [flex-basis] 
          • flex item의 공간 배분 전 기본 너비
          • [auto](기본값) 요소의 content너비
          • [단위] px, em, rem등 단위로 지정
      • align-self
  • 전환효과
    • transition 요소의 전환(시작과 끝)효과를 지정하는 단축속성
    • 포멧: transition 속성명 지속시간 타이밍함수 대기시간;
      • transition-property 속성명
        • 전환 효과를 사용할 속성의 이름을 지정
        • [all] (기본값) 모든 속성에 적용
        • [속성이름] 전환 효과를 사용할 속성 이름 명시
      • transition-duration 지속시간(필수)
        • 전환 효과의 지속시간을 지정
        • [0s] 전환 효과 없음
        • [시간] 지속시간(s)을 지정
      • transition-timing-function 타이밍함수
        • 전환 효과의 타이밍(Easing)함수를 지정
        • Easing functions (Easing 함수 치트시트 , tweenmax easing , Easing functions mdn 검색 또는 웹사이트 참고)
        • [ease] (기본값) 느리게-빠르게-느리게 (cubic-bezier(0.25, 0.1, 0.25, 1))
        • [linear] 일정하게 (cubic-bezier(0, 0, 1, 1))
        • [ease-in] 빠르게-느리게 (cubic-bezier(0.42, 0, 1, 1))
        • [ease-out] 느리게-빠르게 (cubic-bezier(0, 0, 0.58, 1))
        • [ease-in-out] 느리게-빠르게-느리게 (cubic-bezier(0.42, 0, 0.58, 1))
        • [cubic-bezier(n,n,n,n) 자신만의 값을 정의 (0~1) (중요도x)
        • steps(n) n번 분할된 애니메이션 (중요도x)
      • transition-delay 대기시간;
        • 전환 효과가 몇초뒤에 시작할지 대기시간을 지정
        • [0s] 대기시간 없음
        • [시간] 대기시간(s)을 지정
    • 단축속성
      • transition: 1s .5s; (1초 지속시간, .5초 대기시간)
  • 변환
    • transform: 변환함수1 변환함수2 ...;
    • transform: 원근법 이동 크기 회전 기울임
    • 2D 변환 함수
      • 단위: px
        • translate(x,y) 이동(x축, y축)
        • translateX(x) 이동(x축)
        • translateY(y) 이동(y축)
      • 단위: 없음
        • scale(x,y) 크기(x축, y축)
        • scaleX(x) 크기(x축) (중요도x)
        • scaleY(y) 크기(y축) (중요도x)
      • 단위:deg
        • rotate(degree) 회전(각도)
        • skew(x,y) 기울임(x축, y축) (중요도x)
        • skewX(x) 기울임(x축)
        • skewY(y) 기울임(y축)
      • matrix(n,n,n,n,n,n) 2차원 변환효과 (중요도x)
    • 3D 변환 함수
      • 단위: px
        • translateZ(z) 이동(z축) (중요도x)
        • translate3d(x,y,z) 이동(x축, y축, z축) (중요도x)
      • perspective(n) 원근법(거리), 단위 px
      • 단위: 없음(배수)
        • scaleZ(z) 크기(z축) (중요도x)
        • scale3d(x, y, z) 크기(x축, y축, z축) (중요도x)
      • 단위:deg
        • rotateX(x) 회전(x축)
        • rotateY(y) 회전(y축)
        • rotateZ(z) 회전(z축) (중요도x)
        • rotate3d(x,y,z,a) 회전(x축, y축, z축, 각도) (중요도x)
      • matrix3d(n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n) 3차원 변환효과 (중요도x) - 실제 브라우저가 쓰는 방법
      • 단축속성
        • transform: perspective(500px) rotateX(45deg); 원근법 함수는 제일 앞에 작성해야함
    • perspective
      • 하위 요소를 관찰하는 원근 거리를 지정하는 속성
      • 단위: px등 단위로 지정
      • perspective 속성과 함수의 차이점
        • [속성] perspective:500px; , 관찰 대상의 부모에 적용, 기준점 설정: perspective-origin
        • [함수] transform: perspective(500px);, 관찰 대상에 적용, transform-origin
    • backface-visibility
      • 3D변환으로 회전된 요소의 뒷면 숨김 여부
      • [visible] (기본값) 뒷면 보임
      • [hidden] 뒷면 숨김
#패스트캠퍼스 #내일배움카드 #국비지원 #K디지털기초역량훈련 #바이트디그리 #react강의

댓글 없음:

댓글 쓰기