首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >来自数组的随机颜色

来自数组的随机颜色
EN

Stack Overflow用户
提问于 2013-02-19 10:48:55
回答 4查看 63.2K关注 0票数 8

我希望用JavaScript构建一些东西,它将从给定的十六进制颜色数组中挑选一个随机值(背景色),并将其应用于给定的div元素。

有谁知道做这件事的好方法吗?似乎没有什么对我有效,但我并不是一个真正精通JS的人。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-02-19 10:54:03

这个怎么样?

代码语言:javascript
复制
var rgb = [];

for(var i = 0; i < 3; i++)
    rgb.push(Math.floor(Math.random() * 255));

myDiv.style.backgroundColor = 'rgb('+ rgb.join(',') +')';

如果您想将其限制为已知的颜色,您可以创建一个颜色数组并随机选择它,如下所示。

代码语言:javascript
复制
var colors = ['red', 'green', 'blue', 'orange', 'yellow'];

myDiv.style.backgroundColor = colors[Math.floor(Math.random() * colors.length)];

更新-使用第一种方法应用于所有.post-content

代码语言:javascript
复制
var divs = document.querySelectorAll('.post-content');

for(var i = 0; i < divs.length; i++)
    divs[i].style.backgroundColor = 'rgb('+ rgb.join(',') +')';

如果您想对每个.post-content单独应用一个随机背景,您可以这样做。

代码语言:javascript
复制
var divs = document.querySelectorAll('.post-content');

for(var i = 0; i < divs.length; i++) {
    var rgb = [];

    for(var i = 0; i < 3; i++)
        rgb.push(Math.floor(Math.random() * 255));

    divs[i].style.backgroundColor = 'rgb('+ rgb.join(',') +')';
}

上次更新-使用jQuery,正如您所提到的。

代码语言:javascript
复制
var colors = ['red', 'green', 'blue', 'orange', 'yellow'];

$('.post-content').each(function() {
    $(this).css('background-color', colors[Math.floor(Math.random() * colors.length)]);
});
票数 30
EN

Stack Overflow用户

发布于 2013-02-19 10:54:04

此示例从任何数组中返回一个随机项,如果您传递一个非falsey参数,它将从数组中删除该项。

代码语言:javascript
复制
Array.prototype.getRandom= function(cut){
    var i= Math.floor(Math.random()*this.length);
    if(cut && i in this){
        return this.splice(i, 1)[0];
    }
    return this[i];
}

//示例:

代码语言:javascript
复制
var colors= ['aqua', 'black', 'blue', 'fuchsia', 'gray', 'green', 
'lime', 'maroon', 'navy', 'olive', 'orange', 'purple', 'red', 
'silver', 'teal', 'white', 'yellow'];

alert(colors.getRandom());

票数 4
EN

Stack Overflow用户

发布于 2018-04-05 18:09:08

我不确定这在性能方面有多好,但如果你已经在使用lodash,它可以像这样简单:

代码语言:javascript
复制
// initialising array of colours
let colours = ['tomato', 'salmon', 'plum', 'olive', 'lime', 'chocolate']

// getting a random colour
colours = _.shuffle(colours); // you can shuffle it once, or every time
let hereIsTheColour = colours.pop() // gets the last colour from the shuffled array (also removes it from the array)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14949011

复制
相关文章

相似问题

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