ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 🍾 React 학습 기록 - 스타일링 ✨
    SOJU 2기 🍾 2023. 5. 30. 22:04

    클릭 시 학습한 사이트로 이동합니다.

     

     

    Sass?

    Syntactically Awesome Style Sheets.

    ✍️ 복잡한 작업을 쉽게, 코드 재활용성 높이고, 코드의 가독성을 높여준다!

    ✍️ 두 가지 확장자 .sass / .scss 를 사용한다. (.scss 문법이 더 많이 사용된다.)

     

     

    Sass -> CSS

    Sass를 CSS 파일로 변환하는 라이브러리 node-sass를 설치한다.

    npm install node-sass

     

    변수 선언

    $변수명: 값;

    마찬가지로 $변수명을 사용하여 적용할 수 있다.

     

    lighten() / darken()

    색상을 더 밝게 / 더 어둡게 만드는 유틸함수.

    lighten(색상, 숫자%)
    darken(색상, 숫자%)

     

    가상선택자

    CSS에서는 밖으로 빠져나와 새로 설정해주어야 하지만 Scss 문법에서는 그렇지 않다.

    .container {
    	color: #000;
    	
        &:hover {
        	color: #fff;
        }
    }

     

    조건부 className

    조건부 className을 더 쉽게 만들어주는 라이브러리 classnames.

    npm install classnames
    classNames('foo', 'bar'); // => 'foo bar'
    classNames('foo', { bar: true }); // => 'foo bar'
    classNames({ 'foo-bar': true }); // => 'foo-bar'
    classNames({ 'foo-bar': false }); // => ''
    classNames({ foo: true }, { bar: true }); // => 'foo bar'
    classNames({ foo: true, bar: true }); // => 'foo bar'
    classNames(['foo', 'bar']); // => 'foo bar'

     

    어떻게 만들까?

    .container {
    
    	&.center {
        }
    }

    즉, .container.center container와 center가 함께 적용되어 있는 요소에 적용된다. 

     

    & + &

    같은 요소가 붙어있을 때 원하는 스타일이 적용된다.

     

     

    mixin

    반복이 되는 코드를 재사용 가능하게 하는 Sass 기능이다.

    // mixin
    @mixin container-color($color) {
      background: $color;
    }
    
    // 사용
    .container {
    	...
    	&.green {
        	@include container-color(색상);
        }
    }

     

     


     

     

    CSS module

    컴포넌트 스타일링 시 사용하면 클래스 중첩을 방지할 수 있다.

    CSS 확장자명을 .module.css 로 사용한다.

     

    컴포넌트 파일에서 해당 .module.css 파일을 불러오면 파일 안에서 선언된 클래스이름이 모두 고유해진다.

    import styles from "./Box.module.css";
    
    function Box() {
      return <div className={styles.Box}>{styles.Box}</div>;
    }

    ✍️ 기존 프로젝트에 있던 CSS클래스와 이름이 중복되어도 스타일이 꼬이지 않으므로 리액트를 도입할 때 사용.

    ✍️ CSS 클래스 네이밍 규칙을 따르기 힘들 때 사용.

     

     

    CSS Module Sass에서 사용하기

    node-sass를 설치했다는 전제 하에 .module.scss로 확장명을 변경하고 Sass 문법에 맞게 작성한다.

     

     

     


     

     

    CSS in JS

    JS 안에 CSS를 작성한다.

    ✍️ 해당 기술을 사용하는 라이브러리 : styled-components (그밖에 emotion, styled-jsx 가 있다)

    $ npm install styled-components
    import styled from 'styled-components';
    
    const Circle = styled.div`
      width: 5rem;
      height: 5rem;
      background: ${props => props.color || 'black'};
      border-radius: 50%;
    `;
    
    function App() {
      return <Circle color="blue" />;
    }

     

    유틸함수

    lighten()과 같은 유틸함수를 CSS in JS 환경에서 사용하고 싶다면 polished 라이브러리를 사용한다.

    $ npm install polished
    import { darken, lighten } from 'polished';

     

     

     

     

     


     

     

     

     

     

     

    새삼 리액트를 사용할 때는 정말 많은 라이브러리, 도구들이 존재하고

    어떤 걸 선택해서 어떻게 사용할 것인지가 중요한 쟁점 중 하나인 듯하다.

    JS와 마찬가지로 계속해서 만져보고 또 만져봐야겠다 🧑‍💻

     

     

    댓글

Designed by Tistory.