목차
오류가 발생했습니다
해결책
왜?
웹 프론트엔드 CSS 튜토리얼 Sass와 새로운 CSS 기능이 충돌 할 때

Sass와 새로운 CSS 기능이 충돌 할 때

Apr 04, 2025 am 10:21 AM

Sass와 새로운 CSS 기능이 충돌 할 때

CSS는 최근 사용자 정의 속성 및 새로운 기능과 같은 많은 멋진 기능을 추가했습니다. 이러한 기능은 우리의 작업을 단순화 할 수 있지만 SASS와 같은 사전 처리기와 흥미로운 상호 작용 문제를 일으킬 수도 있습니다.

이 기사는 내가 직면 한 문제, 해결책, 그리고 Sass가 여전히 필수적이라고 생각하는 이유를 탐구 할 것입니다.

오류가 발생했습니다

새로운 min()max() 함수를 사용한 경우 다른 장치를 처리 할 때 이와 같은 오류 메시지가 발생할 수 있습니다 : "비 호환 장치 : VH 및 EM".

SASS는 고유 한 min() 함수를 가지고 있으며 CSS의 min() 함수를 무시하기 때문입니다. 또한 SASS는 두 단위간에 고정 관계가없는 값을 사용하여 계산을 수행 할 수 없습니다.

예를 들어 CM과 단위 사이에 고정 된 관계가 있으므로 SASS는 min(20in, 50cm) 의 결과를 계산할 수 있으며 코드에 사용될 때 오류를보고하지 않습니다.

다른 유닛에 대해서도 마찬가지입니다. 예를 들어, 각도 단위간에 고정 된 관계가 있습니다 : 1 턴, 1Rad 또는 1 grad는 항상 동일한 DEG 값으로 계산됩니다. 마찬가지로, 1은 항상 1000ms이고 1khz는 항상 1000Hz, 1dppx는 항상 96dpi이고 1in은 항상 96px입니다. 그렇기 때문에 Sass가 그들 사이에서 변환하고 계산 및 함수 (예 : 자체 min() 함수)에서 혼합 할 수있는 이유입니다.

그러나 이러한 단위 (예 : 이전 EM 및 VH 단위의 예) 사이에 고정 된 관계가 없으면 문제가 발생합니다.

그것은 단지 다른 단위가 아닙니다. min() calc() ()를 사용하려고하면 오류가 발생합니다. calc(20em 7px) 과 같은 코드를 시도하면 " calc(20em 7px) min 의 숫자가 아님"이라는 오류가 발생합니다.

또 다른 문제는 CSS 필터 (예 : invert() )에서 CSS 변수 또는 calc() , min() 또는 max() )과 같은 수학적 CSS 함수의 결과를 사용하려고 할 때 발생합니다.

이 경우 "`$ color : 'var (-p, 0.85)'가 반전에 유효한 색상이 아니라는 프롬프트를받습니다.

grayscale() : " $color: 'calc(.2 var(--d, .3))' 에서도 같은 문제가 발생합니다. 그레이 스케일에는 유효한 색상이 아닙니다."

opacity() 도 같은 문제를 일으 킵니다. " $color: 'var(--p, 0.8)' 불투명도에 유효한 색상이 아닙니다."

그러나 sepia() , blur() , drop-shadow() , brightness() , contrast()hue-rotate() 포함하여 다른 필터 함수는 모두 CSS 변수에서 올바르게 작동합니다!

결과적으로, 발생한 일은 min()max() 문제와 유사합니다. SASS에는 내장 된 sepia() , blur() , drop-shadow() , brightness() , contrast() , hue-rotate() 함수가 없지만 자체 grayscale() , invert()opacity() 함수가 있으며 첫 번째 인수는 $color 값입니다. 매개 변수를 찾을 수 없으므로 오류가 발생합니다.

같은 이유로, 우리는 최소한 두 개의 hsl() 또는 hsla() 값을 나열하는 CSS 변수를 사용하려고 할 때 문제가 있습니다.

반면, color: hsl(9, var(--sl, 95%, 65%)) 은 완전히 유효한 CSS이며 SASS 없이는 잘 작동합니다.

rgb()rgba() 함수에서도 동일한 일이 발생합니다.

또한 Compass를 가져 와서 linear-gradient() 또는 radial-gradient() 내부에서 CSS 변수를 사용하려고하면 conic-gradient() 내부에 변수를 사용하더라도 (브라우저가 지원하는 경우) 다른 오류도 얻게됩니다.

Compass에는 linear-gradient()radial-gradient() 함수가 제공되지만 conic-gradient() 함수는 추가되지 않았습니다.

이 모든 경우의 문제는 같은 이름의 기능을 갖는 SASS 또는 나침반에서 비롯되며, 이것이 코드에서 사용하려는 기능이라고 가정합니다.

죄송합니다!

해결책

여기서 속임수는 SASS가 사례 민감도이지만 CSS는 사례에 민감하지 않다는 것을 기억하는 것입니다.

이것은 우리가 Sass가 자체 min() 함수로 인식하지 못하는 Min(20em, 50vh) 쓸 수 있음을 의미합니다. 오류가 발생하지 않으며 여전히 유효한 CSS이며 예상대로 작동합니다. 마찬가지로 HSL() / HSLA() / RGB() / RGBA() 또는 Invert() 작성하면 이전의 문제를 피할 수 있습니다.

그라디언트의 경우, 나는 일반적으로 SVG 버전에 가깝기 때문에 linear-Gradient()radial-Gradient() 선호하지만 적어도 하나의 대문자와 함께 잘 작동합니다.

왜?

거의 SASS 관련 트윗을 게시 할 때마다 CSS 변수를 사용하면 SASS를 더 이상 사용해서는 안된다는 경고를받습니다. 이 문제를 해결하고 왜 동의하지 않는지 설명하고 싶습니다.

첫째, CSS 변수가 지난 3 년 동안 거의 모든 측면에서 매우 유용하고 사용되는 것으로 나타 났지만, 성능 비용이 제공되며 현재 DevTools를 사용하여 calc() 계산 미로에 오류가 나타나는 위치를 추적하는 것이 고통 스러울 수 있습니다. 나는 그것들을 사용하는 단점이 이점보다 더 큰 상황에 갇히지 않도록 과도하게 사용하지 않으려 고 노력합니다.

일반적으로 상수처럼 작동하는 경우 요소 별 또는 상태별로 요소를 변경하지 않으면 (이 경우 사용자 정의 속성이 확실히 최상의 옵션) 컴파일 된 CSS 수 (접두사로 생성 된 중복 문제를 해결)를 줄이면 SASS 변수를 사용하겠습니다.

둘째, 변수는 항상 내가 Sass를 사용하는 이유의 작은 부분이었습니다. 2012 년 말에 Sass를 사용하기 시작했을 때 주로 루프에 사용되었습니다. 이는 현재 CSS에없는 기능입니다. 루프의 일부를 HTML 사전 프로세서로 옮겼지만 (생성 된 코드를 줄이고 나중에 HTML과 CSS를 수정하지 않아도되기 때문에) 값 목록, Polygon 함수 내의 포인트 목록, 변환 목록 등의 값 목록을 생성하는 것과 같은 많은 경우 SASS 루프를 사용합니다.

(다음 내용은 원래 텍스트와 일치하여 중복을 피하기 위해 중복 부분을 생략합니다)

위 내용은 Sass와 새로운 CSS 기능이 충돌 할 때의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

Google 글꼴 변수 글꼴 Google 글꼴 변수 글꼴 Apr 09, 2025 am 10:42 AM

Google Fonts가 새로운 디자인 (트윗)을 출시 한 것을 볼 수 있습니다. 마지막 큰 재 설계와 비교할 때 이것은 훨씬 더 반복적 인 느낌이 듭니다. 차이를 간신히 말할 수 있습니다

HTML, CSS 및 JavaScript로 애니메이션 카운트 다운 타이머를 만드는 방법 HTML, CSS 및 JavaScript로 애니메이션 카운트 다운 타이머를 만드는 방법 Apr 11, 2025 am 11:29 AM

프로젝트에 카운트 다운 타이머가 필요한 적이 있습니까? 그런 것은 플러그인에 도달하는 것이 당연하지만 실제로는 훨씬 더 많습니다.

HTML 데이터 속성 안내서 HTML 데이터 속성 안내서 Apr 11, 2025 am 11:50 AM

HTML, CSS 및 JavaScript의 데이터 속성에 대해 알고 싶었던 모든 것.

CSS를 통해 일류 이름 항목으로 자식 요소를 선택하는 방법은 무엇입니까? CSS를 통해 일류 이름 항목으로 자식 요소를 선택하는 방법은 무엇입니까? Apr 05, 2025 pm 11:24 PM

요소 수가 고정되지 않은 경우 CSS를 통해 지정된 클래스 이름의 첫 번째 자식 요소를 선택하는 방법. HTML 구조를 처리 할 때 종종 다른 요소를 만듭니다 ...

플렉스 레이아웃의 자주색 슬래시 영역이 잘못된 '오버플로 공간'으로 간주되는 이유는 무엇입니까? 플렉스 레이아웃의 자주색 슬래시 영역이 잘못된 '오버플로 공간'으로 간주되는 이유는 무엇입니까? Apr 05, 2025 pm 05:51 PM

플렉스 레이아웃의 보라색 슬래시 영역에 대한 질문 플렉스 레이아웃을 사용할 때 개발자 도구 (d ...)와 같은 혼란스러운 현상이 발생할 수 있습니다.

Sass를 더 빨리 만들기위한 개념 증명 Sass를 더 빨리 만들기위한 개념 증명 Apr 16, 2025 am 10:38 AM

새로운 프로젝트가 시작될 때, Sass 컴파일은 눈을 깜박이게합니다. 특히 BrowserSync와 짝을 이루는 경우 기분이 좋습니다.

SVG에서 타탄 패턴을 생성하는 정적 사이트를 만드는 방법 SVG에서 타탄 패턴을 생성하는 정적 사이트를 만드는 방법 Apr 09, 2025 am 11:29 AM

타탄은 일반적으로 스코틀랜드, 특히 세련된 킬트와 관련된 패턴의 천입니다. tartanify.com에서 우리는 5,000 개가 넘는 타탄을 모았습니다

See all articles