UNPKG

kviewui-uni

Version:

基于UNI-APP框架的多端开发UI组件库,让您的开发效率加倍提升

68 lines (55 loc) 1.53 kB
import Color from 'color'; import getColorString from './utils'; // 色板 // 动态梯度算法 function colorPalette(originColor, i, format) { const color = Color(originColor); const h = color.hue(); const s = color.saturationv(); const v = color.value(); const hueStep = 2; const maxSaturationStep = 100; const minSaturationStep = 9; const maxValue = 100; const minValue = 30; function getNewHue(isLight, i) { let hue; if (h >= 60 && h <= 240) { hue = isLight ? h - hueStep * i : h + hueStep * i; } else { hue = isLight ? h + hueStep * i : h - hueStep * i; } if (hue < 0) { hue += 360; } else if (hue >= 360) { hue -= 360; } return Math.round(hue); } function getNewSaturation(isLight, i) { let newSaturation; if (isLight) { newSaturation = s <= minSaturationStep ? s : s - ((s - minSaturationStep) / 5) * i; } else { newSaturation = s + ((maxSaturationStep - s) / 4) * i; } return newSaturation; } function getNewValue(isLight, i) { return isLight ? v + ((maxValue - v) / 5) * i : (v <= minValue ? v : v - ((v - minValue) / 4) * i); } const isLight = i < 6; const index = isLight ? 6 - i : i - 6; const retColor = i === 6 ? color : Color({ h: getNewHue(isLight, index), s: getNewSaturation(isLight, index), v: getNewValue(isLight, index), }); return getColorString.getColorString(retColor, format); } export default { colorPalette, Color }