ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • SASS 문법
    CODING/HTML & CSS 2019. 3. 11. 11:19

    1) Variables ($)

    변수선언은 '$'으로 시작.

    변수의 값으로는 문자, 숫자, 컬러가 올 수 있다.

    $변수명 : 속성값;

    $font-stack:    Helvetica, sans-serif;
    $primary-color: #333;
    
    body {
      font: 100% $font-stack;
      color: $primary-color;
    }

    2) Nesting

    부모자손 선언 - tree구조, 포함관계, 중첩적 선언

    꺾쇠 선택자를 통해 직접선택도 가능( ul > a)

    & : 상위요소(자기자신)을 뜻함 = this

    nav {
      ul {
        margin: 0;
        padding: 0;
        list-style: none;
      }
    
      li { display: inline-block; }
    
      a {
        display: block;
        padding: 6px 12px;
        text-decoration: none;
      }
    }

    nav {

    & > ul { /* 이곳의 &은 nav */

    margin:0;

    padding:0;

    list-style:none;

    & > li{ /* 이곳의 &은 ul */

    width:100%;

    }

    }

    }

    클래스명에도 &을 활용할 수 있다.

     

    #box {

    &-tit { /* #box-tit */

    padding:0;

    }

    }


    -> 코드의 반복을 줄일수있다.

    **미디어쿼리 사용시 아래의 두가지 방법으로 사용가능

      

     @media screen and(max-width:500px){

       #box{

          font-size:16px;

       }  

     }


     @media screen and(min-width:501px;) and(max-width:720px){

       #box{

          font-size:24px;

       }  

     }


       #box{

          @media screen and(max-width:500px){

        font-size:16px;

     }

          @media screen and(min-width:501px;) and(max-width:720px){

          font-size:24px;

     }

       }  

     


    3) Mixins

    반복되는 속성을 묶어서 함수로 만들어 재사용할 수 있다.

    @mixin linkStyle($textColor, $textDeco:none) {
    color:$textColor;
    text-decoration:$textDeco;
    }


    정의한 mixin은 @include를 통해 사용할수있다.

     

     @mixin 함수명(인자1, 인자2, … ) {

                 재사용하길 원하는 속성 : 인자;   

      }



    mixin 사용법


      @include 함수명(값); /* 값이 빈값일때 정의된 함수의 기본값이 적용됨 */



    vendor prefix를 전부 일일히 쓰지않고 함수를 만들어 쓸수있다..!!!


    @mixin transform($property) {

     -webkit-transform:$property;

     -ms-transform:$property;

     -moz-transform:$property;

     -o-transform:$property;

     transform:$property;

     }



      .wrap { @include transform(rotate(30deg)); }




    4) Extend

    똑같은 코드를 묶어서 재사용할수있음. 단, 속성과 값이 같을 때

    %로 정의한다.


    %boxShape {

        border-radius: 20px;

        border: 3px solid #f00;

        box-shadow: 0px 3px 11px 0px rgba(0, 0, 0, 0.75); 

    }

     

     

       

         #box1 {    

                @extend %boxShape;

         }



    5) Partials

    sass 파일을 reset.css나 common.css처럼 그루핑하여 사용하는 법.

    파일을 나누어 저장한 후 import하여 사용한다.

    * scss파일을 만들때 파일명에 '_'로 시작해서 이름을 짓지 말 것, 컴파일이 안됨

    -> 단, 변수나 믹스인등을  분리할 파일은 "_파일명.scss"로 저장한다(컴파일 안해도 되는 부분을 따로 떼내기 때문)

    * colorhighlight와 컴파일 충동이 나니까 vscode에서는 사용중지 시키고 사용할것 -> colorize 확장으로 재설치!


        @import "common"; 



    6) if

     

     @mixin txtBg($color) {

        background-color:$color;    

      }


      @mixin theme($mood) {

          @if $mood == 'light' {

             @include txtBg(red);

          }

          @else if $mood == 'dark' {

             @include txtBg(black);

          }

          @else {

            @include txtBg(blue);   

          }

      }


         

           /* 사용 */

     #box1 {

        @include theme('light');

      }

      #box2 {

        @include theme('dark');  

      } 

      #box3 {

        @include theme('mood1');  

      }



    참고문서 : 

    인프런 -  CSS에 날개를 달아주는 Sass (SCSS)

    http://sass-lang.com/guide

    https://designmeme.github.io/ko/blog/sass-awesome-docs/


    출처 : https://estar.tistory.com/83?category=662266

    댓글

Designed by Tistory.