Я пытаюсь сгенерировать случайные цветовые коды или коды на основе одного основного цвета - PullRequest
0 голосов
/ 07 августа 2020

Я пытаюсь сгенерировать случайные цветовые коды или коды на основе одного основного цвета. Я не очень хорошо знаком с JavaScript и раскраской

То, что я собрал до сих пор:

function getColors(len) {
  var colors = [];

  for (var i = 0; i < len; i++) {
    var letters = '0123456789ABCDEF';
    var color = '#';
    for (var i = 0; i < 6; i++) {
      color += letters[Math.floor(Math.random() * 16)];
    }
    colors.push(color);
  }

  return colors;
}

Спасибо

Ответы [ 2 ]

1 голос
/ 07 августа 2020

Если я правильно вас понял. Попробуйте функцию ниже. Он возвращает вам коллекцию цветов, если вы передадите что-нибудь и случайное. Но если вы передадите baseColor, он сгенерирует hue набор цветов на основе basedColor. hue определенные базовые цвета: red, yellow, green, cyan, blue и magenta.

Использование

пример: 1 - getRandomColors(10) или getRandomColors(10,'random') или getRandomColors(10,'anything besides Hue')

результат: //(10) ["#C4AD05", "#B63DCB", "#22A9FE", "#59DCAC", "#986FFD", "#493E56", "#49693D", "#83029A", "#59E3C0", "#C6FB84"]

пример: 2 - getRandomColors(10,'blue') //baseColor

результат: //(10) ["hsl(240, 79%, 19%)", "hsl(240, 44%, 45%)", "hsl(240, 13%, 64%)", "hsl(240, 63%, 73%)", "hsl(240, 52%, 45%)", "hsl(240, 61%, 83%)", "hsl(240, 46%, 58%)", "hsl(240, 35%, 6%)", "hsl(240, 89%, 89%)", "hsl(240, 76%, 97%)"]

Код

function getRandomColors(len, baseColor = 'random') {
        var colors = [];
        var baseValue = getColorValue(baseColor);
        var execFn = getExecFn(baseValue);

        for (var i = 0; i < len; i++) {
            colors.push(execFn());
        }

        return colors;

        function getExecFn(baseColorValue) {
            if (baseColorValue == -1) {
                return getRandomColor;
            }
            else {
                return hueSet;
            }
        }

        function hueSet() {
            h = baseValue;
            s = Math.floor(Math.random() * 100);
            l = Math.floor(Math.random() * 100);
            return 'hsl(' + h + ', ' + s + '%, ' + l + '%)';
        }

        function getRandomColor() {
            var letters = '0123456789ABCDEF';
            var color = '#';
            for (var i = 0; i < 6; i++) {
                color += letters[Math.floor(Math.random() * 16)];
            }
            return color;
        }

        function getColorValue(baseColor) {
            switch (baseColor.toLowerCase()) {
                case 'red':
                    return 0;
                case 'yellow':
                    return 60;
                case 'green':
                    return 120;
                case 'cyan':
                    return 180;
                case 'blue':
                    return 240;
                case 'magenta':
                    return 300;
                default:
                    return -1;
            }
        }
    }
1 голос
/ 07 августа 2020

Со своей стороны, я просчитал следующее:

var RGBColor1 = Math.floor(Math.random() * Math.floor(255));
var RGBColor2 = Math.floor(Math.random() * Math.floor(255));
var RGBColor3 = Math.floor(Math.random() * Math.floor(255));
colors.push(RGBColor1);
colors.push(RGBColor2)
colors.push(RGBColor3)

Вы можете сделать al oop на go быстрее

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...