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
반응형