[ 코드잇 스프린트 ] 교육기간 1일차 TIL

2024. 11. 7. 23:39·교육/코드잇 스프린트 : 단기심화 5기


강의 목표

Tailwind CSS의 기초에 대해 학습하고 실습을 진행합니다.

 

강의 내용 정리

강의시간에 학습한 내용을 정리합니다.

 

TailwindCSS의 특징

  • CSS 속성을 타이핑하지 않아도 된다.
  • CSS 속성에 어떤 값을 사용할지 크게 고민하지 않아도 된다.
  • CSS 클래스 이름을 짓느라 고민하지 않아도 된다.
  • 더 이상 사용하지 않는 CSS 클래스들을 정리하는데 시간을 쓰지 않아도 된다.

→ 더 빨리 구현할 수 있고, 더 적은 시간으로 유지 보수할 수 있다.

 

Utility First 접근법의 정의

  • 어떤 스타일을 구현할 때 유틸리티 클래스들을 최대한 이용해 구현한다.
  • 모든 CSS 들을 속성들에 대해서 유틸리티 클래스들이 촘촘하게 정의되어있다.
  • 웬만한 경우에는 이 유틸리티 클래스들을 조합하는 것 만으로도 원하는 스타일을 구현할 수 있다.

 

Utility First 접근법은 인라인 스타일의 차이점

유틸리티 클래스 인라인 스타일링
미리 정의된 값 사용 아무 값이나 지정
반응형 디자인 가능 반응형 디자인 불가능
hover, focus등 상태 변경 대응 가능 hover, focus등 상태 변경 대응 불가능

 

 

Tailwind 학습, 실습

글자 크기 변경

  • 목표 : 특정 부분의 텍스트 크기를 키우기
  • 실습 내용
    • 키워야하는 테스트의 범위를 알려주셨는데 그 부분을 감싸는 상위 태그가 뭔지 먼저 찾아보았다.
    • 배경색을 입혀서 해당 태그가 어느 범위를 감싸는지 확인했고 text-base로 되어있던 부분을 text-lg로 수정하여 크기를 변경해주었다.

 

테두리 둥글기 변경

  • 목표 : 테두리의 둥글기를 변경하기
  • 실습 내용
    • rounded가 사용된 코드가 있는지 먼저 찾아보았고 이미 사용되어있었다.
    • 미리 부여된 rounded의 코드를 변경하여 둥글기를 변경했다.

 

마진값 조정하기

  • 목표 : 마진값을 조정해보기
  • 실습 내용
    • margin에 해당하는 속성인 m이 사용된 코드를 먼저 찾아보았다.
    • m 혹은 mt, mb와 같이 margin을 조정한 코드가 이미 존재했다.
    • 존재하는 값을 조정하여 값을 조정했다.
  • 새로 알게된 내용
    • 역마진이라는 것이 존재한다.
    • 보통 m-4 와 같이 마진을 부여하곤하는데 -m-4 와 같이 값을 부여하게되면 역마진으로 부여된다

 

Hover, Foucs 등의 상태 처리

  • 목표 : Hover, Foucs를 적용해보기
  • 실습 내용
    • hover action이 있었을 때 적용될 스타일링에 대한 실습을 진행했다.
    • hover하였을 때 스타일을 적용하려면 hover:bg-indigo-300과 같이 코드를 작성해주면 된다.
    • 추가로 적용해본 것
      • duration : hover로 인해 스타일이 변경되는 시간을 조정하는 것이다.

 

Pseudo Class

  • 목표 : Psedo Class를 활용하여 스타일링하기
    • first: 와 last:를 활용하여 특정한 요소에만 스타일링을 해보았다.
    • odd: even:을 활용하여 특정한 요소에만 스타일링을 해보았다.
    • from states
      • required
      • invaild
      • disabled실습 내용
    • 부모의 상태에 따라 스타일을 적용해보았다. ( group )

 

Pseudo Elements

  • 목표 : Psedo Elements를 활용하여 스타일링하기
  • 실습 내용
    • ::before , ::after
    • file, selection
    • placeholder
    • portrait, landscape
    • print
    • Attribute Selector

 

ARIA

  • Accessible Rich Internet Applications
  • 장애를 가진 분들이 웹 애플리케이션을 더 쉽게 이용할 수 있도록 도와주는 HTML 보조규칙

 

data 속성

  • 어떤 html요소에든 자유롭게 임의의 데이터를 추가할 수 있게 해주는 메커니즘
  • 조건부 스타일링에 사용된다.
  • data- 까지가 규칙이고 이후 이름은 자유롭게 설정해줄 수 있으며, 값도 자유롭게 부여할 수 있다 단, 값은 string타입으로 지정된다.
  • 참고자료

 

반응형 디자인

  • 특정화면 크기 이상에만 적용하는 스타일링
  • prefix를 사용하여 적용 ( sm, md, lg … )
  • 아래와 같이 정해져있는 breakpoint를 사용해도되고 tailwind.config.js에서 이를 커스텀 할 수도 있다.
    • sm : 640px
    • md : 768px
    • lg : 1024px
  • 어떻게 사용해서 적용하는가?
    • 더 큰 화면크기에 적용할 스타일 규칙을 프리픽스를 붙여 덮어씌우는 방식
    • 모바일의 스타일을 적용하려면 → 프리픽스를 붙이지않음 ( sm을 붙이지 않음 )

 

다크모드

  • dark: 수식어를 붙여 어두운 테마로 보일때의 스타일을 지정할 수 있음
  • OS에 지정한 사용자의 화면 테마값에 따라 적용된다.

 

스타일 재사용

  • 리액트 컴포넌트 단위로 재사용

 

커스텀 스타일

  • 스타일을 커스텀해서 지정가능
    • bg-[#bada55] , text-[#333333] , font-[22px]
  • 색상 정의, 간격 스케일 등
  • 자주 사용되는 스타일 설정같은 경우는 Tailwind 설정 파일에서 지정가능
    • ex) 브랜드 컬러
    • 참고자료
  • 기본 스타일 지정하기
  • 페이지 전체 : <html> 이나 <body>에 스타일 추가
  • 특정요소 : @layer 지시어 사용

 

지시어와 함수

  • 지시어
    • @import와 같은 CSS 명령문으로서 Tailwind에서 커스텀하게 정의한 명령문
    • @tailwind @layer @apply 등..
    • @tailwind지시어는 Tailwind의 여러 스타일 그룹 ( base, component 등 ) 을 추가하는 명령어
    • Tailwind가 프로젝트에 로딩되는 구조
      • index.tsx에서 global.css 파일을 import
      • global.css에서는 테일윈드에서 미리 정의해놓은 클래스들을 import
      • ( @tailwind base , @tailwind components @tailwind utilities )
  • 함수
    • theme() , screen()
    • 빌드타임에 계산되어서 최종 CSS에는 상수값으로 추가됨

 

Tailwind 레이아웃

    • container
      • 화면을 좌우로 꽉 채우는 방식이 아닌 분기점을 넘길때마다 최대 너비를 고정하는 방식
      • mx-auto를 추가해서 컨테이너 안 내용들을 가운데 정렬
      • 참고 자료

 

  • display
    • block
    • inline-block
    • inline
    • flex
    • grid
    • hidden vs invisible
      • hidden : 아예 없어짐 , 자리도 차지하지 않음
      • invisible : 자리는 차지하지만 안보임
  • overflow
    • overflow-auto, overflow-x-auto
  • position
    • static
    • fixed
    • absolute
    • relative
    • sticky

 

Tailwind 플렉스박스 & 그리드

  • flex direction
    • flex-row, flex-row-reverse
    • flex-column, flex-column-reverse
  • grid-cols-*
    • grid-col-1 , grid-col-2, …
  • grid-rows-*
    • grid-row-1 , grid-row-2, …
  • gap
    • gap-1, gap-2 , …
    • gap-x-1, gap-y-2 , …
  • justify content
    • justify -start, justify-center, …
  • align items
    • items-start , items-center , …

 

Tailwind 간격/크기

  • padding
    • 내부 여백
    • top, bottom, left, right
      • pt-0 , pb-0 , pl-0 , pr-0
    • x축, y축
      • px-0 , py-0
    • 모든 방향
      • p-0
    • 화면 방향에 무관하게
      • start , end
      • ps-0, pe-0
  • margin
    • 외부 여백
    • 역마진 가능
    • top, bottom, left, right
      • mt-0 , mb-0 , ml-0 , mr-0
    • x축, y축
      • mx-0 , my-0
    • 모든 방향
      • m-0
    • 화면 방향에 무관하게
      • start , end
      • ms-0, me-0

 

Tailwind 타이포그래피, 배경, 테두리

  • font size
    • text-xs , text-sm , text-lg
    • 줄간격도 포함됨
  • font weight
    • font-thin , font-light , font-medium , font-semibold , font-bold
  • text align
    • text-left , text-center , text-justify
  • text color
    • text-색상-숫자/[투명도]
    • text-red-300/[10]
  • whitespace
    • normal
    • pre
    • pre line
    • pre wrap
  • border radius
    • rounded-none
    • rounded
    • rounded-sm , rounded-md , …
    • rounded-full
  • border width
    • border-0 , border-2 , …
  • border color
    • border-색상-숫자

 

Tailwind 효과, 필터 등

  • box shadow
    • shadow-sm , shadow , shadow-md
    • shadow-inner
  • box shadow color
    • shadow-${색상명}-${숫자}
  • opacity
    • opacity-0
    • opacity-5
    • opacity-10 , …
  • drop shadow
    • drop-shadow , drop-shadow-sm , drop-shadow-md , …
    • 그냥 shadow와의 차이는?
      • shadow는 일반적인 도형형태에 적용
      • drop-shadow는 텍스트나 svg같이 비정형적인 형태에 적용
  • transition
    • transition-all
    • transition-colors
    • transition-opacity
  • transition 지속 시간
    • duration-0
    • duration-75
    • duration-100 , …
  • transition 시간 함수
    • ease-linear
    • ease-in
    • ease-out
    • ease-in-out
  • transition 딜레이 ( 시작되는 타이밍을 늦춤 )
    • delay-0
    • delay-75
    • delay-100 , …
  • animation
    • animation-spin
    • animation-ping
    • animation-pulse
    • animation-bounce
  • scale
    • scale-0
    • scale-50
  • rotate
    • rotate-0
    • rotate-45
    • rotate-90
  • translate
    • 이동 , 음수가능
    • translate-y-6
    • -translate-y-6
    • translate-x-6
  • skew
    • 뒤틀기
    • skew-x-3
    • skew-y-3
  • 마우스 커서
    • cursor-pointer
    • cursor-text
    • cursor-move
    • …
  • caret color
    • 텍스트 입력창 커서 색상
    • 참고 자료
  • resize
    • resize-x
    • resize-y
    • resize
  • text select
    • select-none
    • select-text
    • select-all
  • screen reader
    • sr-only : 스크린 리더기에서만 표시되고 일반화면에서는 감추기

 

Tailwind 사용시 주의점

  • 클래스 이름을 동적으로 만들지 않기
    • Tailwind는 정규표현식을 이용해 소스파일안에 선언된 유틸클래스들을 추출함
    • 예시
// 잘못된 예시
<div class="text-{{ error ? 'red' : 'grren' }}-600"></div>

// 적절한 예시
<div class=" error ? 'text-red-600' : 'text-green-600' }}"></div>

// 요약
// -> 부분적으로 적을 수 없고 적절한 예시와 같이 한번에 적어줘야한다.

 

Tailwind 커스텀화하기

  • tailwind.config.js 파일에서 설정변경
  • Theme
    • 색상표, 폰트, 화면분기점, 간격 스케일…
    • 기본 설정값을 덮어쓰거나 → Tailwind에서 제공하는 설정은 무시하고 새로 재정의
    • 기본 설정값에 새로운값을 추가할 수 있다. → 기존 설정은 유지하고 새로운 값만 추가 ( extends ) ex) 브랜드 컬러 추가
  • important
    • Tailwind의 유틸 클래스들이 !important 플래그로 적용할지 여부
    • 모든 유틸 클래스에 대해서 일괄적으로 적용하기
    • 모든 경우에 적용하면 inline스타일보다도 우선순위가 높아지는 문제발생
    • 인라인 스타일 보다는 우선도가 낮으면서 유틸클래스 적용하기
    • 또는 개별적으로 유틸클래스 이름 앞에 느낌표(”!”)를 붙여서 사용하기

 

Tailwind와 UI 라이브러리

  • Tailwind를 UI라이브러리와 같이 사용하기
  • 디자인팀이 있는 경우 → radix UI , HeadlessUI
  • 디자인팀이 없는 경우 → MUI , nextui

 

실습예고

  • nextui의 select 컴포넌트를 이용하여
    • 다음 이미지와 같은 셀렉트 컴포넌트를 만드는데
    • 커스텀 색상을 정의한 뒤(codeit_purple: #6500c3)
    • 컴포넌트가 포커스 됐을 때는 테두리가 codeit_purple로 바뀌고
    • 선택창이 열렸을 때는 아래 두 모서리가 직각이 되며
    • chevron 아이콘 애니메이션은 “ease in out” 타이밍으로 동작하고
    • chevron 아이콘 애니메이션 지속 기간은 250ms 가 되도록

 

반응형
저작자표시 비영리 변경금지 (새창열림)

'교육 > 코드잇 스프린트 : 단기심화 5기' 카테고리의 다른 글

[ 코드잇 스프린트 ] 교육기간 6일차 TIL  (3) 2024.11.15
[ 코드잇 스프린트 ] 교육기간 5일차 TIL  (1) 2024.11.14
[ 코드잇 스프린트 ] 교육기간 4일차 TIL  (3) 2024.11.13
[ 코드잇 스프린트 ] 교육기간 3일차 TIL  (0) 2024.11.12
[ 코드잇 스프린트 ] 교육기간 2일차 TIL  (0) 2024.11.08
'교육/코드잇 스프린트 : 단기심화 5기' 카테고리의 다른 글
  • [ 코드잇 스프린트 ] 교육기간 5일차 TIL
  • [ 코드잇 스프린트 ] 교육기간 4일차 TIL
  • [ 코드잇 스프린트 ] 교육기간 3일차 TIL
  • [ 코드잇 스프린트 ] 교육기간 2일차 TIL
heee1
heee1
FE 개발자를 희망하는 임희원 입니다.
  • heee1
    heee1.blog
    heee1
  • 전체
    오늘
    어제
    • 분류 전체보기 (69)
      • Front-end (1)
        • Javascript (4)
        • Typescript (1)
        • React (0)
        • Next.js (1)
        • Tool (1)
        • Git (1)
        • Prettier (0)
        • Test-Framework (1)
        • Vercel (1)
      • 교육 (28)
        • 항해99 : 웹개발 종합반 18기 (14)
        • 프로젝트 캠프 : React 2기 (5)
        • 코드잇 스프린트 : 단기심화 5기 (9)
      • Algorithm (29)
        • Javascript (24)
        • Python (5)
      • 코드 보관함 (1)
        • 배치스크립트 ( .bat ) (1)
  • 블로그 메뉴

    • 홈
  • 링크

    • github
  • 공지사항

  • 인기 글

  • 태그

    til
    Baekjoon
    티스토리챌린지
    코드잇
    speed insights
    Python
    JavaScript
    자바스크립트
    jest
    tailwindcss
    react-spring
    스프린트
    테스트 프레임워크
    node.js
    오블완
    항해99
    모킹
    css animation
    백준
    next.js
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
heee1
[ 코드잇 스프린트 ] 교육기간 1일차 TIL
상단으로

티스토리툴바