[React] sass


👉🏼 設定

npm install sass --save
  • をインストールすると、node-modulesフォルダにsassフォルダが作成されます.(package source code)
  • --save: package.jsonにインストールされているパッケージの名前とバージョン情報
  • を更新します.
    // package.json
    {
      "name": "westagram-react",
      "version": "0.1.0",
      "private": true,
      "dependencies": {
        "@testing-library/jest-dom": "^4.2.4",
        "@testing-library/react": "^9.3.2",
        "@testing-library/user-event": "^7.1.2",
        "node-sass": "^4.14.1",
        "react": "^16.13.1",
        "react-dom": "^16.13.1",
        "react-scripts": "3.4.3"
      }
    }

    👉🏻 .cssファイルの拡張子。scssに置換

  • Jsファイルimport構文
  • も変更する必要があります.

    👉🏾 Nestingの適用


    Nestingは
  • Sassの最も基本的な機能であり、JSXの最上位要素のクラス名を構成部品名と同じに設定します.scssファイルでは、最上位要素にサブ要素のスタイルも設定されます.
    ex)
  • //css
    nav ul {
      margin: 0;
      padding: 0;
      list-style: none;
    }
    
    nav li {
      display: inline-block;
    }
    
    nav a {
      display: block;
      padding: 6px 12px;
      text-decoration: none;
    }
    
    //sass
    nav {
      ul {
        margin: 0;
        padding: 0;
        list-style: none;
    		li {
    			display: inline-block;
    		}
      }
    
      a {
        display: block;
        padding: 6px 12px;
        text-decoration: none;
      }
    }

    👉🏽 変数、&演算子、mixinなどの基本機能の使用

  • sassはNestingのほかにも多くの機能があります.公式ファイルを通じて他の機能もあります.
  • //css
    login-container {
    	display: flex;
    	justify-content: center;
      align-items: center
    }
    
    button {
      width: 200px;
    	height: 100px;
    	background-color: blue;
    }
    
    button:hover {
    	background-color: red;
    	cursor: pointer; 
    }
     
    input {
    	background-color: blue;
    }
    
    input:focus {
      background-color: red;
    }
    
    //sass의 변수, @mixin, @include 활용
    $theme-color: blue;
    $border-style: 1px black solid;
    
    @mixin flex-center {
    	display: flex;
    	justify-content: center;
      align-items: center
    }
    
    login-container {
      @include flex-center;
    
    	button {
    	  width: 200px;
    		height: 100px;
    		background-color: $theme-color;
    
    		&:hover {
    			background-color: red;
    			cursor: pointer;
    		}
    	}
    
    	input {
    		background-color: $theme-color;
    
    		&:focus {
    		  background-color: red;
    		}
    	}
    }