Skip to content

获取颜色调色板 getColorPalettes

赞助

根据主色生成颜色调色板的工具函数

Show Source Code
ts
import { generate } from '@ant-design/colors'
/**
 * 获取颜色调色板
 *
 * @param {string} primaryColor 主色
 * @returns {string[]} 返回颜色调色板
 */
export function getColorPalettes(primaryColor: string): string[] {
  return generate(primaryColor)
}

基本使用

根据主色生成 1-10 的颜色调色板;悬浮色块可查看档位与色值


#1677ff
#ff6900
#18a058
#ff4d4f
vue
<script setup lang="ts">
import { TinyColor } from '@ctrl/tinycolor'
import { Tooltip, getColorPalettes } from 'vue-amazing-ui'
// 依据气泡背景色亮度选择可读的文字色
const tooltipTextColor = (color: string) => {
  const { r, g, b } = new TinyColor(color).toRgb()
  return (r * 299 + g * 587 + b * 114) / 1000 > 160 ? 'rgba(0, 0, 0, 0.88)' : '#fff'
}
// 预计算各主色的调色板与文字色,避免在模板中重复调用
const paletteGroups = ['#1677ff', '#ff6900', '#18a058', '#ff4d4f'].map((primaryColor) => ({
  primaryColor,
  colors: getColorPalettes(primaryColor).map((color, index) => ({
    color,
    label: `${index + 1} · ${color}`,
    textColor: tooltipTextColor(color)
  }))
}))
</script>
<template>
  <div class="palette-list">
    <div v-for="group in paletteGroups" :key="group.primaryColor" class="palette-group">
      <div class="palette-title">
        <span class="title-dot" :style="{ background: group.primaryColor }"></span>
        {{ group.primaryColor }}
      </div>
      <div class="palette-wrap">
        <Tooltip
          v-for="item in group.colors"
          :key="item.color"
          :tooltip="item.label"
          :bg-color="item.color"
          :tooltip-style="{ color: item.textColor }"
        >
          <div class="palette-block" :style="{ background: item.color }"></div>
        </Tooltip>
      </div>
    </div>
  </div>
</template>
<style lang="less" scoped>
.palette-list {
  display: flex;
  flex-direction: column;
  gap: 16px;
}
.palette-group {
  display: flex;
  flex-direction: column;
  gap: 8px;
  font-size: 12px;
  .palette-title {
    display: flex;
    align-items: center;
    gap: 6px;
    .title-dot {
      width: 12px;
      height: 12px;
      border-radius: 50%;
    }
  }
  .palette-wrap {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    .palette-block {
      display: inline-block;
      width: 56px;
      height: 56px;
      border: 1px solid rgba(0, 0, 0, 0.06);
      border-radius: 6px;
    }
  }
}
</style>

Params

参数说明类型默认值
primaryColor主色stringundefined

Return

类型说明
string[]根据主色生成的 1-10 颜色调色板

Released under the MIT License.