Vue 3 style CSS 변수 주입 의 실현
단일 파일 구성 요소 스타일 에서 구성 요소 상태 로 구동 되 는 CSS 변수(CSS 사용자 정의 속성)를 지원 합 니 다.
기초 예시
<template>
<div class="text">hello</div>
</template>
<script>
export default {
data() {
return {
color: 'red',
font: {
size: '2em',
},
}
},
}
</script>
<style>
.text {
color: v-bind (color);
/* expressions (wrap in quotes) */
font-size: v-bind ('font.size');
}
</style>
동기Vue SFC 스타일 은 직접적인 CSS 조합 과 패 키 징 을 제공 하지만 순수한 정적 입 니 다.이것 은 지금까지 실행 할 때 구성 요소 의 상태 에 따라 동적 으로 스타일 을 업데이트 할 능력 이 없다 는 것 을 의미 합 니 다.
현재 대부분의 현대 브 라 우 저가 원생 CSS 변 수 를 지원 함 에 따라 구성 요소 의 상태 와 스타일 을 쉽게 연결 할 수 있 습 니 다.
디자인 디 테 일
SFC 의 탭 은 현재 사용자 정의 CSS 함수 v-bind 를 지원 합 니 다.
<!-- in Vue SFC -->
<style>
.text {
color: v-bind (color);
}
</style>
예상 한 바 와 같이,이것 은 성명 의 값 을 구성 요소 상태의 속성 에 연결 합 니 다.reactively.color color이 함수 내 부 는 임의의 자 바스 크 립 트 표현 식 을 지원 할 수 있 지만,자 바스 크 립 트 표현 식 은 CSS 식별 자 에 잘못된 문 자 를 포함 할 수 있 기 때문에 대부분의 경우 따옴표 로 감 싸 야 합 니 다:v-bind
.text {
font-size: v-bind ('theme.font.size');
}
이러한 CSS 변 수 를 감지 하면 SFC 컴 파 일 러 는 다음 과 같은 동작 을 수행 합 니 다.해시 변수 이름 이 있 는 이 컴퓨터 에 다시 쓰 십시오.위의 내용 은 v-bind()var()로 바 뀝 니 다.
.text {
color: var (--6b53742-color);
font-size: var (--6b53742-theme_font_size);
}
해시 태그 가 범위 가 있 든 없 든 모든 상황 에 적 용 됩 니 다.이 는 주 입 된 CSS 변수 가 하위 구성 요소 에 외부 로 유출 되 지 않 는 다 는 뜻 이다.해당 변 수 는 내 연 스타일 로 구성 요소 의 루트 요소 에 주 입 됩 니 다.위의 예 에 대해 최종 적 으로 보 여 주 는 DOM 은 이렇게 보일 것 입 니 다.
<div style="--6b53742-color:red;--6b53742-theme_font_size:2em;" class="text">
hello
</div>
주입 은 응답 식 이 므 로 구성 요소 의 속성 이 변 하면 주입 한 CSS 변 수 는 상응 하 게 업 데 이 트 됩 니 다.이 업 데 이 트 는 구성 요소 의 템 플 릿 업데이트 에 독립 되 어 있 기 때문에 순수한 CSS 의 응답 식 속성 에 대한 변 화 는 템 플 릿 의 재 렌 더 링 을 촉발 하지 않 습 니 다.컴 파일 디 테 일
CSS 변 수 를 주입 하기 위해 서 컴 파 일 러 는 구성 요소 의 setup()에 다음 코드 를 생 성하 고 주입 해 야 합 니 다.
import { useCssVars } from 'vue'
export default {
setup() {
//...
useCssVars(_ctx => ({
color: _ctx.color,
theme_font_size: _ctx.theme.font.size,
}))
},
}
...여기 서 실행 할 때 도움말 기 는 변 수 를 DOM.useCssVars watch Effect 에 응답 하 는 변 수 를 설정 합 니 다.이 컴 파일 정책 은 스 크 립 트 컴 파일 을 요구 할 때 먼저 탭 내용 을 간단하게 재 디 코딩 하여 노출 할 변수 목록 을 확인 합 니 다.그러나 이 분석 단 계 는 AST 기반 의 완전한 해석
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
vue-cli v4.5.0을 사용하여 Vue 3 프로젝트 만들기어제 (7/24)에 이 출시되었습니다. 이렇게하면 vue-cli에서 한 번에 Vue 3 프로젝트를 만들 수 있습니다. (지금까지는 Vue 2 프로젝트를 만든 후에 Vue 3으로 업그레이드해야했습니다.) 바로 프로젝트...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.