首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从列表中生成随机颜色?刷新后保持相同颜色是很重要的。

问如何从列表中生成随机颜色?刷新后保持相同颜色是很重要的。
EN

Stack Overflow用户
提问于 2022-05-10 11:39:18
回答 1查看 117关注 0票数 0

我想为带有唯一id的标记元素分配颜色。颜色应该从列表中选择,在重新加载或刷新组件之后,标签的颜色不应该改变。我通过下面的方法通过标记id生成随机颜色,但是我找不到从特定列表中选择颜色的方法。

代码语言:javascript
复制
function hashCode(str) {
  //String#hashCode
  var hash = 0
  for (var i = 0; i < str.length; i++) {
    hash = str.charCodeAt(i) + ((hash << 5) - hash)
  }
  console.log(hash)
  return hash
}

function intToRGB(i) {
  var c = (i & 0x00ffffff).toString(16).toUpperCase()

  return '00000'.substring(0, 6 - c.length) + c
}

export const colorGenerator = key =>
  intToRGB(hashCode(key)) ? `#${intToRGB(hashCode(key))}` : '#774FFF'
EN

回答 1

Stack Overflow用户

发布于 2022-05-10 11:53:11

在重新加载或刷新组件后,标签的颜色不应更改

您可以将颜色保存为浏览器会话存储中的键值对--会话存储只有在选项卡打开时才会持续,因此如果函数检查并找到会话存储中的现有颜色,则可以使用它而不是随机颜色。https://developer.mozilla.org/en-US/docs/Web/API/Window/sessionStorage

我找不到从特定列表中选择颜色的方法。

定义一个数组,其中包含列表中的所有颜色。在随机数上使用数组长度作为模。这将给出一个随机数组索引。colorList[randomIndex]会从你的列表中给出一个随机的颜色。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72185663

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档