我想在我的 Vue 3 组件中使用预定义变量。
<template>
<div class="rounded img-container">
<span v-if="!props.ready">Du musst noch ein Bild aufnehmen!</span>
</div>
</template>
<script lang="ts" setup>
import { defineProps } from "vue";
const props = defineProps({
ready: { type: Boolean, required: true }
})
</script>
<style lang="scss" scoped>
.img-container {
aspect-ratio: 3 / 2;
margin-left: auto;
margin-right: auto;
background: $red; <- Error
}
.text-small {
font-size: 2em;
}
</style>
不幸的是,我收到错误“SassError:未定义的变量。”。 我必须导入什么才能使用 Vuetify 的全局变量?
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
这些颜色的使用并不是那么直接的。
此处记录了https://vuetifyjs.com/en/功能/sass-variables/#webpack-install 注意
需要 sass-loader@^7.0.0并更改 webpack 配置如果在组件文件中导入颜色变量,您也可以跳过这一点(
../的数量可能会有所不同)接下来要记住的是对象的结构
这里是摘录
$red: () !default; $red: map-deep-merge( ( 'base': #F44336, 'lighten-5': #FFEBEE, 'lighten-4': #FFCDD2, 'lighten-3': #EF9A9A, 'lighten-2': #E57373, 'lighten-1': #EF5350, 'darken-1': #E53935, 'darken-2': #D32F2F, 'darken-3': #C62828, 'darken-4': #B71C1C, 'accent-1': #FF8A80, 'accent-2': #FF5252, 'accent-3': #FF1744, 'accent-4': #D50000 ), $red ); /* other colors... */ $colors: () !default; $colors: map-deep-merge( ( 'red': $red, 'pink': $pink, 'purple': $purple, 'deep-purple': $deep-purple, 'indigo': $indigo, 'blue': $blue, 'light-blue': $light-blue, 'cyan': $cyan, 'teal': $teal, 'green': $green, 'light-green': $light-green, 'lime': $lime, 'yellow': $yellow, 'amber': $amber, 'orange': $orange, 'deep-orange': $deep-orange, 'brown': $brown, 'blue-grey': $blue-grey, 'grey': $grey, 'shades': $shades ), $colors );因此颜色不会映射到字符串,而是映射到对象(请参阅
map-deep-merge),因此您不能使用$red来为您提供颜色值。相反,您可以使用
map-deep-get函数来获取基础红色.class{ background: map-deep-get($colors, "red", "base"); /* OR */ background: map-get($red, "base"); }所以它看起来像这样
<style lang="scss" scoped> @import '../../node_modules/vuetify/src/styles/settings/_colors.scss'; .img-container { aspect-ratio: 3 / 2; margin-left: auto; margin-right: auto; background: map-deep-get($colors, "red", "base"); /* OR */ background: map-get($red, "base"); } .text-small { font-size: 2em; } </style>