Color Palette

Quasar 提供了大量现成的颜色 css。您可以将它们用作 Sass/SCSS 变量,或者直接用作 HTML 模板中的 CSS 类。

主题颜色

Quasar 提供了一套默认的主题颜色如下,所有的 Quasar 组件都依赖这些颜色,选择主题颜色应该是在应用程序的设计阶段就定好的。

primary
secondary
accent
dark
positive
negative
info
warning

TIPS

主题构建器页面查看如何为您的网站/应用自定义主题颜色

色彩列表

下面这些颜色都是 quasar 预设的,可以直接使用的,您可以在 .vue文件的模版中把他们当作 css 类来使用,也可以在<style lang="...">标签中当作 Sass/SCSS 变量来使用。

red
red-1
red-2
red-3
red-4
red-5
red-6
red-7
red-8
red-9
red-10
red-11
red-12
red-13
red-14
pink
pink-1
pink-2
pink-3
pink-4
pink-5
pink-6
pink-7
pink-8
pink-9
pink-10
pink-11
pink-12
pink-13
pink-14
purple
purple-1
purple-2
purple-3
purple-4
purple-5
purple-6
purple-7
purple-8
purple-9
purple-10
purple-11
purple-12
purple-13
purple-14
deep-purple
deep-purple-1
deep-purple-2
deep-purple-3
deep-purple-4
deep-purple-5
deep-purple-6
deep-purple-7
deep-purple-8
deep-purple-9
deep-purple-10
deep-purple-11
deep-purple-12
deep-purple-13
deep-purple-14
indigo
indigo-1
indigo-2
indigo-3
indigo-4
indigo-5
indigo-6
indigo-7
indigo-8
indigo-9
indigo-10
indigo-11
indigo-12
indigo-13
indigo-14
blue
blue-1
blue-2
blue-3
blue-4
blue-5
blue-6
blue-7
blue-8
blue-9
blue-10
blue-11
blue-12
blue-13
blue-14
light-blue
light-blue-1
light-blue-2
light-blue-3
light-blue-4
light-blue-5
light-blue-6
light-blue-7
light-blue-8
light-blue-9
light-blue-10
light-blue-11
light-blue-12
light-blue-13
light-blue-14
cyan
cyan-1
cyan-2
cyan-3
cyan-4
cyan-5
cyan-6
cyan-7
cyan-8
cyan-9
cyan-10
cyan-11
cyan-12
cyan-13
cyan-14
teal
teal-1
teal-2
teal-3
teal-4
teal-5
teal-6
teal-7
teal-8
teal-9
teal-10
teal-11
teal-12
teal-13
teal-14
green
green-1
green-2
green-3
green-4
green-5
green-6
green-7
green-8
green-9
green-10
green-11
green-12
green-13
green-14
light-green
light-green-1
light-green-2
light-green-3
light-green-4
light-green-5
light-green-6
light-green-7
light-green-8
light-green-9
light-green-10
light-green-11
light-green-12
light-green-13
light-green-14
lime
lime-1
lime-2
lime-3
lime-4
lime-5
lime-6
lime-7
lime-8
lime-9
lime-10
lime-11
lime-12
lime-13
lime-14
yellow
yellow-1
yellow-2
yellow-3
yellow-4
yellow-5
yellow-6
yellow-7
yellow-8
yellow-9
yellow-10
yellow-11
yellow-12
yellow-13
yellow-14
amber
amber-1
amber-2
amber-3
amber-4
amber-5
amber-6
amber-7
amber-8
amber-9
amber-10
amber-11
amber-12
amber-13
amber-14
orange
orange-1
orange-2
orange-3
orange-4
orange-5
orange-6
orange-7
orange-8
orange-9
orange-10
orange-11
orange-12
orange-13
orange-14
deep-orange
deep-orange-1
deep-orange-2
deep-orange-3
deep-orange-4
deep-orange-5
deep-orange-6
deep-orange-7
deep-orange-8
deep-orange-9
deep-orange-10
deep-orange-11
deep-orange-12
deep-orange-13
deep-orange-14
brown
brown-1
brown-2
brown-3
brown-4
brown-5
brown-6
brown-7
brown-8
brown-9
brown-10
brown-11
brown-12
brown-13
brown-14
grey
grey-1
grey-2
grey-3
grey-4
grey-5
grey-6
grey-7
grey-8
grey-9
grey-10
grey-11
grey-12
grey-13
grey-14
blue-grey
blue-grey-1
blue-grey-2
blue-grey-3
blue-grey-4
blue-grey-5
blue-grey-6
blue-grey-7
blue-grey-8
blue-grey-9
blue-grey-10
blue-grey-11
blue-grey-12
blue-grey-13
blue-grey-14

当作 CSS 类使用

使用text- 或者 bg- 当作前缀,然后加上一个预设的颜色的名称,就可以改变文本/背景的颜色,例如:

<!-- changing text color -->
<p class="text-primary">....</p>

<!-- changing background color -->
<p class="bg-positive">...</p>

当作 Sass/SCSS 变量来使用

您可以通过$加上一个预设的颜色名称来当作一个 css 变量使用,例如:$primary, $red-1, 等等:

<!-- Notice lang="sass" -->
<style lang="sass">
div
  color: $red-1
  background-color: $grey-5
</style>
<!-- Notice lang="scss" -->
<style lang="scss">
div {
  color: $red-1;
  background-color: $grey-5;
}
</style>

添加您自己的颜色

您可以通过以下方式添加您自己的颜色,先在 css 中编写类似如下的代码:

.text-brand {
  color: #a2aa33 !important;
}
.bg-brand {
  background: #a2aa33 !important;
}

然后在 Quasar 的组件中就可以这样使用刚才定义的颜色:

<q-btn color="brand" ... />

您可以在 js 中通过getPaletteColor工具函数拿到颜色的值(16 进制字符)

动态切换主题颜色

工作原理

您可以在运行时修改上述主题色:primary, secondary, accent, dark, positive, negative, info, warning。也就是说,您可以为您的网站预设一个主题,然后在运行时切换不同的主题。

所有的主题颜色将会作为 css 变量存储在页面的根结点(:root)上,每个颜色属性都被命名为 --q-${name},例如:--q-primary, --q-secondary,这些 css 颜色属性跟普通的 html 属性一样会被子节点继承,所以您可以在运行时修改/重置他们,并且在整个应用程序中生效。

推荐您也把自定义的颜色放在 html (document.documentElement) 或者 body (document.body)上,那么当您修改它的时候,所有的子元素都会继承这些修改。

更多的关于 css 变量的知识请看: MDN.

工具函数: setCssVar

Quasar 提供了一个实用的工具函数帮助您设置 css 变量,也可以修改上述主题颜色。

用法:setCssVar(colorName, colorValue[, element])

参数类型必填Description
colorNameStringcss 颜色名称,可以是主题色: primary, secondary, accent, dark, positive, negative, info, warning
colorValueString16 进制色彩值
elementElement(默认值: document.body) 将 css 变量注入到哪个 dom 元素上。

示例:

import { setCssVar } from 'quasar'

setCssVar('light', '#DDD')
setCssVar('primary', '#33F')
setCssVar('primary', '#F33', document.getElementById('rebranded-section-id'))
//  setCssVar('primary','#0273d4') 在原生 js 中等于:
document.body.style.setProperty('--q-primary', '#0273d4')

工具函数: getCssVar

同上,quasar 也提供了一个获取 css 变量的工具函数

用法: getCssVar(colorName[, element])

参数类型必填描述
colorNameStringcss 颜色名称,可以是主题色: primary, secondary, accent, dark, positive, negative, info, warning
elementElement(默认: document.body) 从那个 Dom 元素中读取 css 变量

示例:

import { getCssVar } from 'quasar'

getCssVar('primary') // '#33F'
getCssVar('primary', document.getElementById('rebranded-section-id'))

这个函数是原始 js 中 getPropertyValue()的包装,等同于:

//  getCssVar('primary') 等于原生 js 中的:
getComputedStyle(document.documentElement)
  .getPropertyValue('--q-primary') // #0273d4

更多的颜色工具

除了上面的 utils,Quasar 还有更多的处理颜色的工具函数:Color utils

import { colors, setCssVar } from 'quasar'

const { lighten } = colors

const newPrimaryColor = '#933'
setCssVar('primary', newPrimaryColor)
setCssVar('primary-darkened', lighten(newPrimaryColor, -10))

设置颜色默认值

如果不使用 sass/scss,您需要通过quasar.config.js 来修改默认的主题颜色

// Quasar CLI - quasar.config.js
return {
  framework: {
    config: {
      brand: {
        primary: '#ff0000',
        // ...
      }
    }
  }
}

或者使用一个 Boot 文件来处理, @quasar/app-vite Boot File or @quasar/app-webpack Boot File:

// For Quasar CLI
//不要在 SSR 模式中启用此 boot 文件

import { setCssVar } from 'quasar'

export default () => {
  setCssVar('primary', '#ff0000')
}

如果您使用 Quasar UMD 或者 Quasar Vite plugin 或者 Vue CLI 方式引入的 Quasar,则需要这么做:

// UMD or Quasar Vite plugin or Vue CLI
app.use(Quasar, {
  config: {
    brand: {
      primary: '#ff0000',
      // ...
    }
  }
})

类型定义

/**
 * Augment this interface to add custom colors.
 *
 * @example
 * ```ts
 * declare module "quasar" {
 *   interface CustomColors {
 *     custom: string;
 *   }
 * }
 * ```
 */
export interface CustomColors {}

export type BrandColor =
  | "primary"
  | "secondary"
  | "accent"
  | "dark"
  | "positive"
  | "negative"
  | "info"
  | "warning";
type Color =
  | "red"
  | "pink"
  | "purple"
  | "deep-purple"
  | "indigo"
  | "blue"
  | "light-blue"
  | "cyan"
  | "teal"
  | "green"
  | "light-green"
  | "lime"
  | "yellow"
  | "amber"
  | "orange"
  | "deep-orange"
  | "brown"
  | "grey"
  | "blue-grey";
type ColorShade = 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14;
type DetailedColor = `${Color}-${ColorShade}`;

export type NamedColor = LiteralUnion<
  BrandColor | Color | DetailedColor | keyof CustomColors
>;