반응형
snowman95
코딩수련장
snowman95
전체 방문자
오늘
어제
  • 분류 전체보기 (229)
    • 앱테크 (3)
    • 옵시디언 (5)
    • 드라마, 영화 (1)
    • 개발자 이야기 (23)
    • 프로젝트 (10)
      • 프로젝트 방법론 (7)
      • 프로젝트 기록 (2)
      • Github (1)
    • 개발 지식 (0)
      • 디자인 패턴 (0)
    • 프론트엔드 개발 (5)
      • 테크트리 (2)
      • React.js (19)
      • ReactNative (2)
      • Next.js (6)
      • GraphQL (6)
      • 패키지 매니저 (2)
      • 라이브러리 (3)
      • 상태관리 라이브러리 (4)
      • Web 지식 (3)
      • HTML CSS (26)
      • Javascript (16)
      • 도구 (Tool) (3)
      • 성능 최적화 (1)
      • 디자인시스템 (0)
    • Python (53)
      • 모음집 (1)
      • 문법 (12)
      • 라이브러리 (15)
      • 알고리즘 (10)
      • 백준 문제풀이 (9)
      • 코딩테스트 (2)
      • 도구 (Tool) (3)
    • C++ (20)
      • 알고리즘 (6)
      • 삼성SW기출 (6)
      • 삼성 A형 (6)
    • 데이터사이언스 (1)
    • 인프라 (9)
      • 하드웨어 지식 (4)
      • Ansible (2)
      • Database (2)
      • 쉘스크립트 (1)
    • 주식 (0)
    • 취업 준비 (4)
      • 취업 이야기 (0)

블로그 메뉴

  • 홈
  • 태그

공지사항

인기 글

태그

  • A형
  • 티스토리챌린지
  • 삼성SDS
  • nextjs
  • 전공 요약 #네트워크
  • Next.js #graphql #tailwind.css
  • GraphQL
  • 백준
  • 전공 요약 #데이터베이스
  • 알고리즘
  • 삼성SW역량테스트
  • 면접
  • 오블완
  • 언어
  • 공간복잡도
  • 전공요약
  • 전공 요약 #운영체제
  • C++
  • 나의 해방일지
  • 기계식키보드 #nuphy

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
snowman95
프론트엔드 개발/라이브러리

styled components 사용 방법

styled components 사용 방법
프론트엔드 개발/라이브러리

styled components 사용 방법

2021. 11. 20. 12:59
728x90
반응형

소개

css를 컴포넌트 처럼 선언하여 사용할 수 있다.

리액트 컴포넌트 내부에서 작성하여 매우 빠르게 스타일을 적용시킬 수 있다.

Local 하게 사용하는 방법과 Global 하게 사용하는 방법 두가지가 있다.

 

설치

# npm i styled-components

 

사용법

1. Local 하게 사용하는 방식
아래와 같이 CSS 스타일을 컴포넌트 처럼 사용할 수 있다.

// 컴포넌트.js
import styled from "styled-components"
const Header = styled.header``;
const List = styled.ul`
  display: flex;
  &:hover {
    background-color: blue;
  }
`;

const 컴포넌트 = () => {
  return <List> ... </list>
}

 

2. Global 하게 사용하는 방식

별도 파일에 Global하게 적용하고 싶은 스타일을 작성한다.

보통 기본 스타일을 Global하게 싹 날려버리기 위해 styled-reset 이곳에 적용하여 사용한다.

// GlobalStyles.js
import { createGlobalStyle } from "styled-components";
import reset from "styled-reset";
const GlobalStyles = createGlobalStyle`
  ${reset};
  a{
    text-decoration:none;
    color:inherit;
  }
  *{
    box-sizing : border-box;
  }
`;
export default GlobalStyles;

아래와 같이 App에 포함시켜주면 된다.

// App.js
import React, { Component } from "react";
import Router from "Components/Router";
import GlobalStyles from "Components/GlobalStyles";

class App extends Component {
  render() {
    return (
      <>
        <Router />
        <GlobalStyles />
      </>
    );
  }
}
export default App;


themes


ThemeProvider에 theme을 넘겨주면 하위 컴포넌트 어디서든 스타일변수에 접근할 수 있다.

이를 잘 사용하면 재활용성이 높아진다.

 

1. 스타일 파일 생성

theme.js 파일을 만든다. 

// theme.js
const pixelToRem = (size) => `${size / 16}rem`; 

const fontSizes = {
  title: pixelToRem(60),
  subtitle: pixelToRem(30),
  paragraph: pixelToRem(18),
};

const colors = {
  black: "#000000",
  ...
};

const common = {
    flexCenter: `
    display: flex;
    justify-contents: center;
    align-items: center;
  `,
}

const theme = {
  fontSizes,
  colors,
  common,
};

export default theme;


2. ThemeProvider에 등록
index.html 에 아래 내용 작성 해줘야 적용된다.

// index.js
import styled, { ThemeProvider } from "styled-components";
import theme from "styles/theme";

ReactDOM.render(
  <ThemeProvider theme={theme}>
    <App />
  </ThemeProvider>,
  document.getElementById("root")
);


3. theme 변수 접근

styled Component 내부에서 props.theme.변수명 으로 접근한다.
theme 까지만 써도 뭐가 있는지 보여줘서 매우 편리하다.

// 컴포넌트.js
 const 요소명 = style.div`
   color: ${({ theme }) => theme.colors.black};
   color: ${(props) => props.theme.colors.black};
 `

 

+ 타입스크립트로 작성할 시에는 추가 파일을 만들어야 한다.

theme.ts는 사용자의 스타일을 정의하기 위한 파일이고
theme.ts의 스타일 유형을 지정하기 위한 styled.d.ts 파일을 별도로 만들어야 함!

//styled.d.ts
import "styled-components";

declare module "styled-components" {
  export interface DefaultTheme {
    blueColor: string;
  }
}
반응형
저작자표시 비영리 동일조건 (새창열림)

'프론트엔드 개발 > 라이브러리' 카테고리의 다른 글

React 모듈 - react-route-dom (라우터 기능)  (0) 2021.11.02
리액트 라이브러리 gh-pages 깃 페이지 배포하기  (0) 2021.10.02
  • 소개
  • 설치
  •  
  • 사용법
  • themes
'프론트엔드 개발/라이브러리' 카테고리의 다른 글
  • React 모듈 - react-route-dom (라우터 기능)
  • 리액트 라이브러리 gh-pages 깃 페이지 배포하기
snowman95
snowman95
(17~19) Unity/Unreal Engine 게임 프로그래머 (20~21) System Administrator ___________ (22~) React 웹 프론트앤드 개발자 __________ 깃헙 : https://github.com/snowman95

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.