👩‍💻
Megaptera Frontend
  • 주차별 학습
    • megaptera-front
    • 1. 개발 환경
      • 1. 개발 환경
      • 2. TypeScript
      • 3. React
      • 4. Testing Library
      • 5. Parcel & ESLint
      • 한 주를 마치며
    • 2. JSX
      • 1. JSX
      • 한 주를 마치며
    • 3. React로 사고하기
      • 1. React Component
      • 2. React State
      • 한 주를 마치며
    • 4. React Hooks
      • 1. Express
      • 2. Fetch API & CORS
      • 3. React의 Hook
      • 4. useRef & Custom Hook
      • 5. usehooks-ts
      • 한 주를 마치며
    • 5. 테스트
      • 1. TDD
      • 2. React Testing Library
      • 3. MSW
      • 4. Playwright
      • 한 주를 마치며
    • 6. External Store
      • 1. External Store
      • 2. TSyringe
      • 3. Redux 따라하기
      • 4. usestore-ts
      • 한 주를 마치며
    • 7. React Router
      • 1. Routing
      • 2. Routes
      • 3. Router
      • 4. Navigation
      • 한 주를 마치며
    • 8. CSS in JS
      • 1. Design System
      • 2. Style Basics
      • 3. CSS in JS
      • 4. styled-components
      • 5. props와 attrs
      • 6. Global Style & Theme
      • 한 주를 마치며
    • 9. 쇼핑몰 목록, 상품 페이지
      • 1. 개발하기 전 준비
      • 2. 목록 보기
      • 3. 상품 상세 보기
      • 4. 장바구니 보기
      • 5. 장바구니에 상품 담기
      • 한 주를 마치며
    • 10. 사용자 인증, 인가
      • 1. 로그인
      • 2. 로그아웃
      • 3. 회원가입
      • 4. 주문 목록 & 주문 상세
      • 한 주를 마치며
    • 11. 주문, 결제
      • 1. 배송 정보 입력
      • 2. 포트원 결제 요청
      • 3. 배송 및 결제 정보 전달
      • 한 주를 마치며
    • 12. 어드민
      • 1. 관리자 웹 사이트 개발 시작
      • 2. 로그인, 사용자 목록
      • 3. 카테고리 관리
      • 4. 주문 관리
      • 5. 상품 관리
      • 한 주를 마치며
Powered by GitBook
On this page
  • 1. CSS
  • 2. CSS in JS
  • 라이브러리
  • 참고 레퍼런스
  • 성능 이슈
  • 대안
  1. 주차별 학습
  2. 8. CSS in JS

3. CSS in JS

Previous2. Style BasicsNext4. styled-components

Last updated 2 years ago

1. CSS

Cascading Style Sheets HTML이나 XML(, 포함)로 작성된 문서의 표시 방법을 기술하기 위한 스타일 시트 언어 웹 페이지에 스타일과 레이아웃을 적용할 때 사용

🙋🏻‍♀️️ 주의 사항

CSS 를 잘 사용하기 위해선 CSS 자체에 대해서 잘 알고 있어야 합니다. 레퍼런스를 참고하여 CSS 를 정리해봅시다. 스타일 자체는 굉장히 많기 때문에 자주 사용하는 것들 위주로 찾아서 정리하시면 좋습니다. 특히나 선택자, 박스모델, media query, Flexbox, Grid 정도는 필수적으로 알고 계셔야 합니다.

💡 참고 레퍼런스

2. CSS in JS

자바스크립트를 이용해 스타일 컴포넌트 형태로 사용하는 것이 핵심

import styled from 'styled-components';
// Create a component that renders a <p> element with blue text
const BlueText = styled.p`
 color: blue;
`;

<BlueText>My blue text</BlueText>

라이브러리

참고 레퍼런스

  1. Scoped styles

  2. Critical CSS

  3. Smarter optimisations

  4. Package management

  5. Non-browser styling

  1. Thinking in components ✅ 컴포넌트로 사고할 수 있다는 것이 핵심

  2. CSS-in-JS leverages the full power of the JavaScript ecosystem to enhance CSS.

  3. True rules isolation

  4. Scoped selectors

  5. Vendor Prefixing

  6. Code sharing

  7. Only the styles which are currently in use on your screen are also in the DOM (react-jss).

  8. Dead code elimination

  9. Unit tests for CSS

2023년 4월 기준으로 styled-components > JSS > Emotion 순서

성능 이슈

CSS는 병렬로 로딩할 수 있고 속도가 빠른데, JS를 이용하면 로딩이 다 끝나고 나서야 무언가를 진행할 수 있음

대안

    • Zero-Runtime CSS in JS

    • CSS를 평범한 텍스트로 작성

    • React에 종속적이지 않지만, React Styled Component도 지원함

    • Zero-runtime Stylesheets in TypeScript

    • CSS를 오브젝트 형태로 표현

    • React의 Inline Style과 유사

    • React와 무관하게 사용 가능

→ CSS 파일과 JS 파일 로딩의 차이

CSS - MDN
flexbox - CSS-tricks
Grid - CSS-tricks
CSS in JS
Emotion
Styled Components
JSS
Tailwind CSS
A Unified Styling Language (2017)
All You Need To Know About CSS-in-JS (2017)
Most popular CSS-in-JS libraries
CSS-in-JS와 성능 (2021)
Why We're Breaking Up with CSS-in-JS (2022)
Linaria
vanilla-extract
SVG
XHTML
css-declaration