What I Learnd/TIL

TIL - JavaScript에서 바로 꾸며주기! Styled Components로 컬러 변경하기

키싸 2023. 6. 20. 21:00

Css-in-JS

Styled Components 는 가장 꾸준하게 사용되고 있는 Css-in-JS Package

https://npmtrends.com/emotion-vs-styled-components-vs-tailwindcss

 

emotion vs styled-components vs tailwindcss | npm trends

Comparing trends for emotion 11.0.0 which has 716,028 weekly downloads and unknown number of GitHub stars vs. styled-components 6.0.0-rc.3 which has 6,153,254 weekly downloads and 39,135 GitHub stars vs. tailwindcss 3.3.2 which has 5,920,725 weekly downloa

npmtrends.com

 

1. styled-components 설치

yarn add styled-components

 

2. 패키지 import 해주기

import styled from "styled-components";

 

3. Css-in-JS, 아래와 같이 스타일을 상수로 선언해서 적용해줄 수 있다.


background color에 따라 텍스트 컬러가 변경되면 좋겠다.

background 컬러에 맞춰서 텍스트 컬러를 일일히 수정해줘야하는데, 가이드라인을 정해놓고 배경색에 따라 텍스트 색을 변경해주도록 한번에 설정할 수 있을 것 같아서 이어서 만들어봤다.

const StBox = styled.div`
  width: 100px;
  height: 100px;
  border: 1px solid ${(props) => props.borderColor};
  margin: 20px;
  background-color: ${(props) => props.backgroundColor}; 
  color: ${(props) => props.color};
`;
// props를 이용해서 조건부 스타일링을 해주면 "해당 조건을 가진 경우에만" 적용된다

// 박스의 색
const bgColorBoxList = ["pink", "yellow", "grey", "black"];

// bg 색을 넣으면, color를 적용(반환)
const getTextColor = (color) => {
  switch (color) {
    case "pink": // 만약에 color가 pink 이면
      return "red"; // 텍스트 컬러를 red로 반환
    case "yellow":
      return "green";
    case "grey":
      return "white";
    default:
      return "purple";
  }
};

function App() {
  return (
    <>
      {bgColorBoxList.map((color) => {
        return (
          <StBox backgroundColor={color} color={getTextColor(color)}>
            hello
          </StBox>
        );
      })}
    </>
  );
}

props 로 조건부 스타일링을 할 수 있다는 것 기억하자..!