본문 바로가기
html,css

scss 문법 정리

by 냉면돈가스 2022. 1. 24.

1. 변수

변수 저장 및 사용가능

$primary-color: #333;
$font-stack: Helvetica, sans-serif;

body {
  color: $primary-color;
  font-family: $font-stack;
}

 

 

2. 중첩

중첩하여 선택자의 계층 명확하게 표현 가능

이로 인해 가독성 상승, 실수 방지 가능

nav {
  ul {
    margin: 0;
    padding: 0;
    list-style: none;
  }

  li { display: inline-block; }

  a {
    display: block;
    padding: 6px 12px;
    text-decoration: none;
  }
}

 

3. import

필요한 부분을 추출 가능

// _reset.scss
* {
  margin: 0;
  padding: 0;
}

// styles.scss
@import 'reset';
body {
  font: 100% Helvetica, sans-serif;
  background-color: #efefef;
}

 


4. 상속

말그대로 상속

.message {
  border: 1px solid #ccc;
  padding: 10px;
  color: #333;
}

.success {
  @extend .message;
  border-color: green;
}

 

그냥 .success랑 .message룰 둘 다 할당한것과는 조금 다른게,

중첩되는 속성이 있을때지않나 싶음

success에 border가 있으면 덮어씌울거같음

귀찮아서 테스트는 안함

 

5. 믹스인

스타일 규칙을 그룹화하여 재사용 가능

@mixin flex-center {
  display: flex;
  justify-content: center;
  align-items: center;
}

.container {
  @include flex-center;
}

 

위 예시만 보면 그냥 공용적인 클래스 작성후 해당클래스를 상속받으면 되지않나 싶음

하지만 mixin으로 인자를 받을수 있어 유연하게 상속이 가능해진다.

// 패딩을 설정하는 믹스인, 인자로 패딩 값을 받음
@mixin padding($value: 10px) {
  padding: $value;
}

.container {
  @include padding(20px); // 20px 패딩 적용
}

.box {
  @include padding; // 기본값인 10px 패딩 적용
}

 

 

6. 함수

// 함수 정의: rem을 px로 변환
@function rem-to-px($size-in-rem, $base-font-size: 16px) {
  @return $size-in-rem * $base-font-size;
}

// 사용 예
.some-other-class {
  margin: rem-to-px(1.5); // 기본 폰트 사이즈 16px를 사용
  padding: rem-to-px(1, 14px); // 기본 폰트 사이즈를 14px로 설정
}

댓글