ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • SCSS 문법 알아보기 1
    CSS/SCSS 2021. 6. 26. 12:42

     

    주석

     

    1. /* 내용 */ - 여러 줄 주석, 컴파일 되었을때 CSS 변환 되었을때 CSS 코드에 나타남

    2. // - 한 줄 주석, 컴파일 되었을때 CSS 변환 되었을때 CSS 코드에 나타나지 않음

     

    중첩

     

    /* SCSS */
    
    .container {
      ul {
        li {
          font-size: 40px;
          .name {
            color: royalblue;
          }
          .age {
            color: orange;
          }
        }
      } 
    }
    
    /* CSS */
    
    .container ul li {
      font-size: 40px;
    }
    .container ul li .name {
      color: royalblue;
    }
    .container ul li .age {
      color: orange;
    }

     

    상위(부모) 선택자 참조

     

    /* SCSS */
    // & - 상위 선택자 참조
    
    .btn {
        position: absolute;
        &.active {
            color: red;
        }
    }
    
    .list {
        li {
            &:last-child {
                margin-right: 0;
            }
        }
    }
    
    /* CSS */
    
    .btn {
      position: absolute;
    }
    .btn.active {
      color: red;
    }
    
    .list li:last-child {
      margin-right: 0;
    }

     

    /* SCSS */
    // & - 상위 선택자 참조
    
    .fs {
        &-small { font-size: 12px; }
        &-medium { font-size: 14px; }
        &-large { font-size: 16px; }
    }
    
    /* CSS */
    
    .fs-small {
      font-size: 12px;
    }
    .fs-medium {
      font-size: 14px;
    }
    .fs-large {
      font-size: 16px;
    }

     

    중첩된 속성

     

    /* SCSS */
    // 중첩된 속성
    
    .box {
        font: {
            weight: bold;
            size: 10px;
            family: sans-serif;
        };
        margin: {
            top: 10px;
            left: 20px;
        };
        padding: {
            top: 10px;
            bottom: 40px;
            left: 20px;
            right: 30px;
        };
    }
    
    /* CSS */
    
    .box {
      font-weight: bold;
      font-size: 10px;
      font-family: sans-serif;
      margin-top: 10px;
      margin-left: 20px;
      padding-top: 10px;
      padding-bottom: 40px;
      padding-left: 20px;
      padding-right: 30px;
    }

     

    변수

     

    /* SCSS */
    // 변수 (Variables)
    // 변수는 유효범위를 가지고 있다
    // 값을 재할당 가능하다
    
    // $변수명: 값;
    $size: 200px;
    
    .container {
        position: fixed;
        top: $size;
        .item {
            $size: 100px;
            width: $size;
            height: $size;
            transform: translateX($size);
        }
    }
    
    /* CSS */
    
    .container {
      position: fixed;
      top: 200px;
    }
    .container .item {
      width: 100px;
      height: 100px;
      transform: translateX(100px);
    }

     

    산술연산

     

    /* SCSS */
    
    // 같은 단위의 산술 연산만 가능하다
    // 다른 단위의 산술 연산은 calc() 사용
    
    div {
        $size: 30px;
        width: 20px + 20px;
        height: 40px - 10px;
        font-size: 10px * 2;
        
        // 나누기는 2가지 방법
        margin: (30px / 2);
        margin: $size / 2;
        
        padding: 20px % 7;
    }
    
    /* CSS */
    
    div {
      width: 40px;
      height: 30px;
      font-size: 20px;
      margin: 15px;
      margin: 15px;
      padding: 6px;
    }

     

    재활용

     

    /* SCSS */
    
    /*
    -재사용할 CSS 선언 그룹 정의-
    @mixin 믹스인이름 {
        스타일;
    }
    
    -선언된 Mixin을 사용-
    @include 믹스인이름;
    */
    
    @mixin center {
        display: flex;
        justify-content: center;
        align-items: center;
    }
    .container {
        @include center;
        .item {
            @include center;
        }
    }
    .box {
        @include center;
    }
    
    /* CSS */
    
    .container {
      display: flex;
      justify-content: center;
      align-items: center;
    }
    .container .item {
      display: flex;
      justify-content: center;
      align-items: center;
    }
    
    .box {
      display: flex;
      justify-content: center;
      align-items: center;
    }

     

    /* SCSS */
    
    // Mixin은 함수(Functions)처럼 인수(Arguments)를 가질 수 있다
    @mixin box($size) {
        width: $size;
        height: $size;
        background-color: tomato;
    }
    .container {
        @include box(200px);
        .item {
            @include box(100px);
        }
    }
    .box {
        @include box(100px);
    }
    
    /* CSS */
    
    .container {
      width: 200px;
      height: 200px;
      background-color: tomato;
    }
    .container .item {
      width: 100px;
      height: 100px;
      background-color: tomato;
    }
    
    .box {
      width: 100px;
      height: 100px;
      background-color: tomato;
    }

     

    /* SCSS */
    
    // 기본값 지정
    @mixin box($size: 100px) {
        width: $size;
        height: $size;
        background-color: tomato;
    }
    .container {
        @include box(200px);
        .item {
            @include box;
        }
    }
    .box {
        @include box;
    }
    
    /* CSS */
    
    .container {
      width: 200px;
      height: 200px;
      background-color: tomato;
    }
    .container .item {
      width: 100px;
      height: 100px;
      background-color: tomato;
    }
    
    .box {
      width: 100px;
      height: 100px;
      background-color: tomato;
    }

     

    /* SCSS */
    
    @mixin box($size: 80px, $color: tomato) {
        width: $size;
        height: $size;
        background-color: $color;
    }
    .container {
        @include box(200px, red);
        .item {
            // 키워드 인수
            @include box($color: green);
        }
    }
    .box {
        @include box;
    }
    
    /* CSS */
    
    .container {
      width: 200px;
      height: 200px;
      background-color: red;
    }
    .container .item {
      width: 80px;
      height: 80px;
      background-color: green;
    }
    
    .box {
      width: 80px;
      height: 80px;
      background-color: tomato;
    }

    'CSS > SCSS' 카테고리의 다른 글

    SCSS 문법 알아보기 2  (0) 2021.06.27
    SCSS  (0) 2021.06.26

    댓글

Designed by Tistory.