관리 메뉴

사과하는 제라스

9장. 컴포넌트 스타일링 본문

코테이토 동아리/[코테이토]React 스터디 5기

9장. 컴포넌트 스타일링

Xerath(제라스) 2023. 1. 27. 13:34

목차

    728x90
    반응형

    1. CSS

    2. Sass, Scss

    3. CSS Module

    4. Styled-component

    <Box color="black">{...}</Box>
    import styled, { css } from "styled-components";
    
    const Box = styled.div`
      background: ${(props) => props.color || "blue"};  -> props로 값을 전달해주어서 적용시킬 수가 있음.
      padding: 1rem;
      display: flex;
      width: 1024px;
      margin: 0 auto;
      @media (max-width: 1024px) {
        width: 768px;
      }
      @media (max-width: 768px) {
        width: 100%;
      }
    `;
    
    const Button = styled.button`
      background: white;
      color: black;
      border-radius: 4px;
      padding: 0.5rem;
      display: flex;
      align-items: center;
      justify-content: center;
      box-sizing: border-box;
      font-size: 1rem;
      font-weight: 600;
      &:hover {
        background: rgba(255, 255, 255, 0.9);
      }
      // props에 따른 조건부 스타일링
      ${(props) =>
        props.inverted &&
        css`
          background: none;
          border: 2px solid white;
          color: white;
          &:hover {
            background: white;
            color: black;
          }
        `};
      & + button {
        margin-left: 1rem;
      }
    `;
    
    const StyledComponent = () => (
      <Box color="black">
        <Button>안녕하세요</Button>
        <Button inverted={true}>테두리만</Button>
      </Box>
    );
    
    export default StyledComponent;

    - Tagged Template Literal

    참고: https://velog.io/@kdo0129/Tagged-Template-Literal

     

    Tagged Template Literal

    ES6가 많이 사용되며 템플릿 문자열은 많이 쓰고있다. 하지만 태그가 붙어있는 템플릿 리터럴은 거의 사용해보지 않았을 것이다. 단, styled-components를 사용해 봤다면 자기도 모르게 사용해 봤을

    velog.io

    - 브라우저의 가로 크기에 따라 다른 스타일을 적용하기 위해서는 일반 CSS를 사용할 때와 똑같이 media 쿼리를 사용하면 된다!

    728x90
    반응형