sass를 사용한 미디어쿼리 - 반응형

sass의 장점인 변수 및 모듈 import를 통해 좀 더 쉬운 미디어쿼리작성하기

https://leonkong.cc/posts/scss-media-query.html 참조한 블로그

변수와 mixin, 그리고 미디어쿼리를 이용해서 desktop에 해당하는 틀과 모바일에 해당하는 틀을 만들어 놓는 방법에 대해 설명해 줍니다.

변수는 값을 저장하는 기능을

mixin은 css를 묶어서 모듈화(재사용)하는 기능을 가집니다.

먼저 결과물은 아래와 같습니다.

@import "./mixin";

@include desktop {
 //들어갈 scss
}
@include mobile {
 //들어갈 scss
}

variables.scss (파일명 앞에 언더바(””)가 붙으면 컴파일이 안됩니다.)

$breakpoint-mobile: 335px; //미디어쿼리에서 min-width가 되는 부분 모바일로서의 최소 크기
$breakpoint-desktop: 758px;//미디어쿼리에서 min-width가 되는 부분 데스크탑으로서의 최소 크기 

_mixin.scss mixin을 사용하여 mobile 모듈, desktop모듈을 만들었습니다.

@import "./variables";

@mixin mobile {
  @media (min-width: #{$breakpoint-mobile}) and (max-width: #{$breakpoint-tablet - 1px}) {
    @content;
  }
}

@mixin desktop {
  @media (min-width: #{$breakpoint-desktop}) {
    @content;
  }
}

장점

미디어쿼리 안에 scss 문법을 사용할 수 있다. 말고는 사실 크게 없는 듯 하다. 하지만 scss 문법을 사용할 수 있다는 것은 엄청난 장점이다.

단점

없음

live sass compiler - vscode remote ssh 이슈 및 해결

live sass compiler가 ssh 상에서 안되는 이슈가 있었습니다. 구글링을 하면서 vscode-server를 지웠다가 다시 설치, ssh 설정을 다시 설치 및 설정, extension 재설치 등의 시도를 해봤으나 Cannot reconnect Please reload window.라는 문구만 나왔습니다. ssh에서 이 extension을 사용하면 live이기 떄문에 포트를 열어서 서버를 하나 만들게 되는데 그러다보니 그 포트에 해당하는 페이지를 ssh 내에서 열 수 없었기 떄문이 아닐까? 생각합니다. 아니면 방화벽이나 보안 문제라고 생각합니다.

꼭 live 서버를 사용할 필요가 없습니다. 그리고 sass를 컴파일 하는 것이 목표 였습니다. ssh용 live sass compiler가 아니라 그냥 live sass compiler로도 컴파일하여 사용할 수 있기 때문에 이를 선택했습니다. 원인을 찾아서 해결하지는 못하였지만 다른 방법을 찾아서 해결할 수 있었습니다.

 

*소소한 팁

{
position: absolute; //일 때 중앙 정렬하는 방법
// 박스가 중앙을 기점으로 움직이지 않고 꼭짓점을 기준으로 움직이기 때문에 transform으로 다시 돌려준다.
top:50%;
left:50%;
transform:translate(-50%,-50%) 
}

SCSS

css를 편하게 사용할 수 있는 스타일 시트

css에 해당하는 변수를 만들 수도 있고 부모와 자식을 관계가 돋보이도록 작성할 수도 있습니다.

반복을 줄여줍니다. 깔끔한 코드를 작성할 수 있습니다. 직관적이고 이해하기 쉽습니다.

scss 파일을 컴파일하여 css파일을 만들게 됩니다.

VSCODE Extension Live sass compiler

php를 쓰고 있던 node를 쓰고 있던 이 익스텐션을 통해 scss파일을 css파일로 컴파일하여 html에 style시트로 붙여 넣을 수 있습니다.

Extension을 설치하고 sass폴더 및 scss파일을 만들고 그 파일로 들어가서 하단 바에서 아래와 같은 버튼을 찾은 뒤에 눌러주기만 하면 css파일을 생성합니다.

map파일과 css파일이 sass폴더 안에 생성되는 것이 싫어서 몇 가지 설정만 바꿔주었습니다.

vscode setting.json에서 다른 세팅 안에 넣는 것을 주의하며 제일 바깥 중괄호 안에 넣어줍니다.

{
	"liveSassCompile.settings.generateMap": false, // Map을 안 만드는 것
    "liveSassCompile.settings.formats": [ 
        {
            "format": "expanded",
            "extensionName": ".css",
            "savePath": "~/../css" // css경로 지정
        }
    ],
}

극 장점

css를 하다보면 element를 찾는 것 또는 부모 요소를 찾는 것에 시간이 다 뺏기는 경우가 있다.

scss 파일은 부모와 자식 요소를 한 곳에 몰아넣을 수 있고 직관적이다. json파일을 보는 느낌?

아직 많지 않아서 그럴 수도 있지만 변수로 만들어서 중복을 제거할 수도 있고 이게 말로만 이렇게 들을 때는 몰랐는데 직접 써보니까 왜 좋다는지 알겠다.

+ Recent posts