구조적으로 CSS 작성

citron03·2022년 2월 5일
0

React

목록 보기
7/39
  • 효율적인 CSS작업을 위해서 구조화된 CSS의 필요성이 대두되었다.
  • 기존의 CSS 작성은 일관된 패턴이 없고, 모바일이나 태블릿같은 다양한 환경에서의 웹사이트가 생겨남에 따라 CSS가 너무 복잡해져, 구조화된 CSS가 필요하게 되었다.

CSS preprocessor

  • CSS 전처리기 (CSS preprocessor)가 등장하여 CSS에 변수, 함수, 상속과 같은 프로그래밍 개념을 탑재하여 구조화할 수 있었다.
  • 하지만, CSS 전처리기는 맞춤 컴파일러에 의해서 컴파일되어 CSS 파일로 변환해야 됐고, 디버깅이 어려웠으며 컴파일된 CSS 파일의 크기가 너무 큰 문제가 있었다.
  • 대표적인 CSS preprocessor로 SASS(Syntactically Awesome Style Sheets) 가 있다.

CSS 방법론

  • CSS 전처리기의 문제를 해결하기 위해서 CSS 방법론이 등장했다.
  • CSS 방법론은 코드의 재사용, 코드의 간결화, 코드의 확장성, 코드의 예측성을 지향하여 만들어졌다.
  • 이를 통해서 클래스 명으로 의미 예측할 수 있고, 유지 보수에 용이하게 CSS를 작성할 수 있다.
  • 같이 일하는 팀에서 CSS 작성 방법을 규칙으로 정하는 것은 중요하다.

대표적인 CSS 방법론 BEM

  • BEM은 Block, Element, Modifier의 줄임말로 Block, Element, Modifier을 기준으로 클래스명을 작성하는 방법이다.
  • 하지만, 클래스명이 너무 길어져 직관적이지 않은 단점이 있다.
  • 클래스명이 너무 길어져 마크업이 불필요하게 커지고, 재사용시 모든 UI 컴포넌트를 명시적으로 확장해야만 했다.
  • CSS 방법론에 진정한 encapsulation은 없었기에 유일한 클래스명을 사용하는 것에 의존했다.

CSS-in JS

  • CSS의 encapsulation을 위해서 CSS를 컴포넌트의 영역으로 불러들인 것이 CSS-in JS이다.
  • 가장 대표적인 CSS-in JS로 Styled-Component가 있다.
  • Styled-Component은 기능, 상태를 가진 컴포넌트로부터 UI를 완전히 분리해 사용할 수 있게 해준다.
  • Styled-Component를 사용하면, CSS를 컴포넌트 내부로 캡슐화 할 수 있고, 클래스 네이밍이나 최적화에 대한 고민을 하지 않아도 된다.
  • 하지만, 페이지 로딩이 느려질 수 있다.

Styled-Component 설치

# npm에서 설치
$ npm install --save styled-components

# yarn에서 설치 
$ yarn add styled-components
  • 위와 같이 Styled-Component를 설치할 수 있다.
  • import styled from "styled-components"; 으로 Styled-Component를 불러와 사용한다.
{
  "resolutions": {
    "styled-components": "^5"
  }
}
  • package.json에 위와 같은 코드를 넣어 여러 버전의 Styled Component가 설치되어 발생하는 문제를 줄여준다. (권장사항)

Styled-Component 문법

  • Styled-Component는 tagged template literals 라는 ES6 문법을 이용한다.
  • 리액트에서 컴포넌트를 만들듯, 변수 안에 CSS 속성과 태그를 넣는다.
  • styled.태그이름 으로 어떤 태그를 사용할지 지정한다.
  • 태그뒤에 백틱을 사용하여 백틱의 내부에 CSS 속성을 설정한다.
const link = styled.a`
  display: inline-block;
  border-radius: 3px;
  padding: 0.5rem 0;
  margin: 0.5rem 1rem;
  width: 11rem;
`;

참고자료 : 코드스테이츠

profile
🙌🙌🙌🙌

0개의 댓글