javascript - 从百分比获取颜色值

标签 javascript html css rgb hsl

我必须从 0% 到 200% 之间的百分比获取颜色。

这是渐变调色板

Gradient

我的实际算法采用 5 种颜色渐变

percentageToColor(perc) {
  perc = Math.trunc(perc);
  perc > 200 ? (perc = 200) : '';
  const hue = 200 - perc;
  return `hsl(${hue}, 100%, 50%)`;

我不知道如何调整它以仅获得 2 种渐变颜色(从 0 到 100% 相同的蓝色,然后开始添加红红色,200% 时全红色)

最好是颜色渐变是通用的,但特定的蓝色和红色也很好。

我找不到任何库可以做到这一点。

最佳答案

根据获得的百分比计算 RGB 的红色纵横比和蓝色纵横比,然后将它们插入到您的 rgb 值中。

这是一个工作示例:

window.onload = function() {
  let colorShower = document.querySelector('.color-shower')
  let colorSlider = document.querySelector('#colorSlider')
  let blueAspect = percentage => Math.round(255 * (1 - (percentage - 1) / 200))
  let redAspect = percentage => Math.round(255 * (percentage - 1) / 200)
  let percentage = colorSlider.value
  let buildColor = (redAspect, blueAspect) => `rgb(${redAspect}, 0, ${blueAspect}`
    
  colorShower.style.backgroundColor = buildColor(redAspect(percentage), blueAspect(percentage))
  
  colorSlider.addEventListener('input', e => {
    percentage = colorSlider.value
    colorShower.style.backgroundColor = buildColor(redAspect(percentage), blueAspect(percentage))
  })
}
.color-shower {
  width: 100%;
  height: 50px;
}

.color-slider {
  width: 100%;
}
<div class = "color-shower"></div>
<input type = "range" min = "1" max = "200" value = "1" class = "color-slider" id = "colorSlider">

关于javascript - 从百分比获取颜色值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59822066/

相关文章:

javascript - 设置所有单选按钮的名称

javascript - Vue.js 错误 : TypeError: Cannot read properties of undefined

html - 如何在 Bootstrap 3 中定义可折叠的汉堡菜单?

javascript - 页面溢出时展开图像和导航菜单

打开 IE Developer Tools 时 CSS 意外更改

Javascript "🚀".charCodeAt(0) 停留在 55357?

javascript - 我的 Promise 实现是否符合规范?

php - 需要对多级缓存场景有一定的了解

css - 悬挂软连字符

css - 在时尚中排除网站的子文件夹?