SASS에서 @media 지시어

SASS에서 @media 지시어는 CSS의 해당 규칙과 동일하게 적용됩니다. 또한 CSS의 모든 규칙 안에 직접 중첩시킬 수 있습니다. 한 가지 주목할 점은 @media 지시어를 CSS 규칙 안에 중첩시킬 경우, 컴파일 후에는 스타일시트 상단으로 올라가고, 지시어가 위치했던 선택자들은 @media 안으로 이동한다는 것입니다. 이를 통해 선택자를 반복하지 않거나 스타일시트의 흐름을 깨지 않고도 @media 지시어에 규칙을 추가할 수 있습니다.

다음 예제를 살펴보겠습니다:

style.scss.navbar {
  width: 400px;
  @media picture and (orientation: portrait) {
    width: 300px;
    height: auto;
  }
}

이제 컴파일 결과를 확인해 봅시다:

style.css.navbar {
  width: 400px; 
}
@media picture and (orientation: portrait) {
  .navbar {
    width: 300px;
    height: auto; 
  } 
}

@media 쿼리를 서로 중첩시킬 수도 있으며, 컴파일 후에는 and 연산자로 연결됩니다:

style.scss@media div {
  .picture {
    @media (orientation: portrait) {
      width: 200px;
    }
  }
}

컴파일 후에는 다음과 같이 표시됩니다:

style.css@media div and (orientation: portrait) {
  .picture {
    width: 200px; 
  } 
}

@media 지시어의 또 다른 특징은 변수, 함수 및 연산자를 전달하는 데 사용할 수 있다는 것입니다:

style.scss$media: style;
$feature: -webkit-max-device;
$value: 3.0;
    
@media #{$media} and ($feature: $value) {
  div {
    color: red;
  }
}

style.css 파일에서 우리는 다음과 같은 코드를 얻습니다:

style.css@media style and (-webkit-max-device: 3) {
    div {
      color: red; 
    } 
}
Задание 1

다음 코드의 컴파일 결과는 어떻게 될지 설명해 보세요:

styles.scss.active-link {
  color: blue;
  @media content {
    font-size: 14px;
    text-decoration: underline;
  }
}
Задание 2

다음 코드의 컴파일 결과는 어떻게 될지 설명해 보세요:

styles.scss@media p {
  #product-card {
    @media (font-family: Arial) {
      font-size: 12px;
    }
  }
  #product-card-title {
    @media (font-family: Arial) {
      font-size: 14px;
      font-weight: bold;
    }
  }
}
Задание 3

다음 코드의 컴파일 결과는 어떻게 될지 설명해 보세요:

styles.scss$var: link;
$font: font-size;
$size: 10px;
    
@media #{$var} and ($font: $size) {
  .block {
    color: red;
  }
}