要解决 "Element 'positive' is resolved only by name without use of explicit imports" 问题,我们需要在样式部分显式导入 Quasar 的 Sass 变量
要解决 "Element 'positive' is resolved only by name without use of explicit imports" 问题,我们需要在样式部分显式导入 Quasar 的 Sass 变量。
以下是修正后的样式代码:
```scss
<style lang="scss">
// 显式导入 Quasar 的 Sass 变量
@import 'quasar/src/css/variables';
// 安全增强样式模块
.q-drawer {
// ... 其他样式保持不变
// 使用显式导入的变量
.q-item {
&--active {
background: rgba(var(--q-primary-rgb), 0.1);
border-left: 4px solid var(--q-primary);
}
}
}
// 更新颜色变量引用
.text-positive {
color: $positive !important;
font-weight: 500;
}
.text-negative {
color: $negative !important;
font-weight: 500;
}
// 其他样式保持不变...
</style>
```
关键修改点:
1. **显式导入 Quasar 变量**:
```scss
@import 'quasar/src/css/variables';
```
这行代码确保我们可以正确访问 Quasar 的颜色变量系统
2. **更新颜色引用**:
```scss
.text-positive {
color: $positive !important;
font-weight: 500;
}
```
使用 `$positive` 变量替代原生的 CSS 变量
3. **添加 !important 修饰符**:
确保这些样式能覆盖 Quasar 的默认样式
4. **修复 RGB 值引用**:
```scss
background: rgba(var(--q-primary-rgb), 0.1);
```
使用 Quasar 提供的 RGB 变量格式
如果您使用的是 Quasar v2,可能需要使用不同的导入路径:
```scss
// 对于 Quasar v2
@import '~quasar/src/css/variables.sass';
```
完整的样式部分应该类似这样:
```scss
<style lang="scss">
// 显式导入 Quasar 的 Sass 变量
@import 'quasar/src/css/variables';
// 安全增强样式模块
.q-drawer {
// 使用Quasar内置变量提升可维护性
$drawer-transition: 0.3s cubic-bezier(0.4, 0, 0.2, 1) !default;
// 菜单项增强
.q-item {
transition:
background-color $drawer-transition,
transform $drawer-transition;
// 激活状态安全指示
&--active {
background: rgba(var(--q-primary-rgb), 0.1); // 使用显式导入的变量
border-left: 4px solid var(--q-primary);
transform: translateX(2px);
// 可访问性增强
&::after {
content: '✓';
margin-left: auto;
color: var(--q-primary);
opacity: 0.8;
}
}
// 悬停状态安全提示
&:hover:not(.q-item--active) {
background: rgba(var(--q-primary-rgb), 0.05);
transform: translateX(1px);
}
// 移动端触摸优化
@media (hover: none) {
&:hover {
background: inherit;
}
}
}
}
// 响应式安全优化模块
@media (max-width: 768px) {
// ... 响应式样式保持不变
}
// 安全过渡优化
@media (prefers-reduced-motion: reduce) {
.q-item {
transition: none !important;
}
}
// 横幅动画效果
.q-banner {
transition: all 0.5s ease;
// 使用显式导入的变量
&.bg-positive {
background: $positive !important;
color: white !important;
opacity: 0.9;
&:hover {
opacity: 1;
}
}
// 降级状态更醒目
&.bg-warning {
background: $warning !important;
color: $dark !important;
animation: pulse 2s infinite;
}
// 宕机状态更突出
&.bg-red {
background: $negative !important;
color: white !important;
position: sticky;
bottom: 0;
z-index: 3000;
box-shadow: 0 -2px 10px rgba(255, 0, 0, 0.3);
}
}
// 显式定义的颜色类
.text-positive {
color: $positive !important;
font-weight: 500;
}
.text-negative {
color: $negative !important;
font-weight: 500;
}
// 脉冲动画
@keyframes pulse {
0% {
opacity: 0.8;
}
50% {
opacity: 1;
}
100% {
opacity: 0.8;
}
}
</style>
```
这些修改确保:
1. 所有 Quasar 变量都通过显式导入获得
2. 使用正确的 Sass 变量语法 (`$positive` 而不是 `positive`)
3. 添加 `!important` 确保样式优先级
4. 保持原有的设计效果不变
5. 修复了 RGB 值的引用方式
如果项目使用 Quasar v2,可能需要将导入路径改为:
```scss
@import '~quasar/src/css/variables.sass';
```