CSS Houdini는 하위 수준 API 집합은 CSS 렌더링 엔진의 일부를 노출하고 CSS 객체 모델에 액세스할 수 있습니다. 이것은 CSS 생태계에서 변화합니다. 이를 통해 개발자가 브라우저에 브라우저 공급업체가 제공할 때까지 기다리지 않고 맞춤 CSS를 읽고 파싱합니다. 이러한 기능에 대한 기본 지원이 제공됩니다. 정말 흥미진진하죠!
Houdini 산하의 CSS에 가장 흥미로운 추가 기능 중 하나는 속성 및 값 API를 참고하세요.
이 API는 CSS 맞춤 속성 (일반적으로 CSS 변수)에 의미론적 의미 (구문으로 정의됨)를 제공하고 CSS 테스트가 사용 설정됩니다.
Houdini 맞춤 속성 작성
다음은 맞춤 속성을 설정하는 예입니다 (예: CSS 변수).
구문 (유형), 초깃값 (대체), 상속 부울(
상위 요소의 값을 상속받게 될지). 이를 위한 현재 방법은
JavaScript에서는 CSS.registerProperty()
를 통해 작동하지만, 지원되는 브라우저에서는
@property
:
CSS.registerProperty({ name: '--colorPrimary', syntax: '<color>', initialValue: 'magenta', inherits: false });
@property --colorPrimary { syntax: '<color>'; initial-value: magenta; inherits: false; }
이제 다음을 통해 다른 CSS 맞춤 속성처럼 --colorPrimary
에 액세스할 수 있습니다.
var(--colorPrimary)
입니다. 하지만 여기서 차이점은 --colorPrimary
이
그냥 문자열로 읽게 됩니다. 데이터가 있어!
대체 값
다른 맞춤 속성과 마찬가지로 var
를 사용하여 가져오거나 설정할 수 있습니다.
(쓰기/재작성) 값이지만 Houdini 커스텀 속성이 있는 경우(falsey를 설정한 경우)
값을 재정의하면 CSS 렌더링 엔진이
(대체 값)을 반환합니다.
아래 예를 참고하세요. --colorPrimary
변수에는
총 magenta
개 중 initial-value
번째 계정입니다. 하지만 개발자가
값은 '23'입니다. @property
가 없으면 CSS 파서는
잘못된 코드입니다. 이제 파서가 magenta
로 대체됩니다. 이렇게 하면
실제 대체 및 CSS 내에서 테스트를
수행할 수 있습니다 간단합니다.
.card {
background-color: var(--colorPrimary); /* magenta */
}
.highlight-card {
--colorPrimary: yellow;
background-color: var(--colorPrimary); /* yellow */
}
.another-card {
--colorPrimary: 23;
background-color: var(--colorPrimary); /* magenta */
}
구문
구문 기능을 사용하면 이제 유형. 현재 허용되는 유형은 다음과 같습니다.
length
number
percentage
length-percentage
color
image
url
integer
angle
time
resolution
transform-list
transform-function
custom-ident
(맞춤 식별자 문자열)
구문을 설정하면 브라우저에서 커스텀 속성의 유형을 확인할 수 있습니다. 여기에는 여러 가지 이점이 있습니다.
이 점을 설명하기 위해 그라데이션에 애니메이션을 적용하는 방법을 보여드리겠습니다. 현재, 그래디언트 값 간에 매끄럽게 애니메이션 (또는 보간)할 방법이 없습니다. 각 그라데이션 선언은 문자열로 파싱됩니다.
<ph type="x-smartling-placeholder">이 예에서는 시작 지점부터 그라데이션 중지 비율을 애니메이션으로 표시합니다. 값을 40% 에서 종료 값 100% 로 변경합니다. 다음과 같이 표시됩니다. 매끄럽게 전환되도록 합니다.
왼쪽 브라우저는 Houdini Properties and Values API를 지원합니다. 매끄러운 그라데이션 중지 전환이 가능합니다. 오른쪽 브라우저는 그렇지 않습니다. 이 이 변경사항을 이해할 수 있는 것은 점 A에서 B 지점으로 이동합니다. 값을 보간할 기회가 없습니다. 매끄러운 전환이 보이지 않습니다.
그러나 맞춤 속성을 작성할 때 구문 유형을 선언하고
애니메이션을 사용하도록 설정하면 전환이 표시됩니다. 나
다음과 같이 맞춤 속성 --gradPoint
를 인스턴스화할 수 있습니다.
@property --gradPoint {
syntax: '<percentage>';
inherits: false;
initial-value: 40%;
}
그런 다음 애니메이션을 적용할 때 초기 40%
에서 100%
로 값을 업데이트할 수 있습니다.
.post:hover,
.post:focus {
--gradPoint: 100%;
}
이렇게 하면 부드러운 그라데이션 전환이 가능합니다.
<ph type="x-smartling-placeholder">결론
@property
규칙을 사용하면 다음을 통해 흥미로운 기술에 더 쉽게 액세스할 수 있습니다.
CSS 자체 내에서 의미론적으로 의미 있는 CSS를 작성할 수 있습니다. 배우기 위해
CSS Houdini와 Properties and Values API에 대해 자세히 알아보려면
리소스:
사진: Cristian Escobar, Unsplash