Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   сборка массива цветов и их оттенков!!! (https://javascript.ru/forum/misc/76437-sborka-massiva-cvetov-i-ikh-ottenkov.html)

Роман Андреевич 11.01.2019 11:48

сборка массива цветов и их оттенков!!!
 
Коллеги, доброго времени суток, суть такая, для проекта нужно собрать массив цветов.

Например, берем цвет зеленый, и нужно получить какое-то кол-во его оттенков. на выходе должно быть так:

let colors = {
        green: [
            // и тут то самое кол-во его оттенков.
        ]
}


Как собрать массив я в курсе!!! Вопрос именно как получить оттенки? Под оттенками я полагаю изменение черного, типа светлее темнее.

Входящий цвет в любом формате hex / rgb. выходной цвет также. Переводить цвета, можно так:

hexToRGB(hex) {

		let c;

		if (/^#([A-Fa-f0-9]{3}){1,2}$/.test(hex)) {
			
			c = hex.substring(1).split('');
			
			if(c.length == 3){
				
				c = [c[0], c[0], c[1], c[1], c[2], c[2]];

			}

			c = `0x` + c.join('');

			return [(c>>16)&255, (c>>8)&255, c&255];
		}

		return [];

	}

Откопал в сети.

Подскажите кто в курсе, или куда смотреть по крайней мере.
Заранее благодарю.

Nexus 11.01.2019 11:57

Так?
var colors=[[255,0,0],[0,255,0]],
	shades=[];

colors.forEach(function(color,index){
	shades[index]=[];
	let counter=255;
	while(counter){
		shades[index][counter--]=color.map(function(val){
			return !val?val:val-counter;
		});
	};
});

console.log(shades);

Роман Андреевич 11.01.2019 12:00

Nexus, минутку!!!

Роман Андреевич 11.01.2019 12:10

Nexus, если поставить например 228,60,30 то дальше будут отрицательные значения

Nexus 11.01.2019 12:11

Роман Андреевич, скрипт перед вами, поправьте.

Роман Андреевич 11.01.2019 12:12

Nexus, да я просто поделился. Спасибо

Роман Андреевич 11.01.2019 12:13

Nexus, тут еще вопрос в том, я пытаюсь понять как вообще оттенки изменяются??? Темнее, потом еще темнее и так далее.

Как сам процесс происходит

Alexandroppolus 11.01.2019 13:05

Цитата:

Сообщение от Роман Андреевич (Сообщение 501763)
Nexus, тут еще вопрос в том, я пытаюсь понять как вообще оттенки изменяются??? Темнее, потом еще темнее и так далее.

Как сам процесс происходит

проще всего получить цвет в формате HSL (есть библиотеки готовые), в котором уже менять L

потом либо конвертить обратно в rgb (если это надо), либо использовать напрямую - background-color: hsl(60,100%,25%);

https://webref.ru/css/value/color

Роман Андреевич 14.01.2019 06:29

Alexandroppolus, большое спасибо, разобрался!!!

Блондинка 11.03.2019 07:08

Решила воздержаться от создания новой темы, вопрос собсна о том как правильно перевести цвет из rgb в hsl и обратно, например есть зелёный (hex #008000, rgb 0,128,0 hsl 120,0,50) или темно-синий (hex #000080 rgb 0,0,128 hsl 240,0,50) вопрос собсна почему когда на странице прописываешь цвет в rgb, он получается одного оттенка, а когда прописываешь в hsl тот же самый цвет он получается совсем другого оттенка?

laimas 12.03.2019 03:00

Цитата:

Сообщение от Блондинка
hex #008000, rgb 0,128,0 hsl 120,0,50

<html>
<head>
<style>
div {
    width: 100px;
    height: 40px;
    margin: 10px;
}
</style>
</head>
<body>
<div style="background: #008000;"></div>
<div style="background: rgb(0, 128, 0);"></div>
<div style="background: hsl(120, 100%, 25%);"></div>
</body>
</html>

Блондинка 15.03.2019 06:24

laimas, так получается что правильный код зелёного цвета hsl 120,100,25 а не hsl 120,0,50...

laimas 15.03.2019 08:09

Цитата:

Сообщение от Блондинка
правильный код зелёного цвета

Вам какой зеленый нужен? Зеленый локальный, это #00ff00 или #0f0 из безопасного набора, rgb(0, 255, 0) или в процентах rgb(0%, 100%, 0%), hsl(120, 100%, 50%). А hsl(120, 0%, 50%), это из набора серой палитры будет.

В сети онлайн калькуляторов много, просто в них проверить то не сложно. Ну и формулы перевода цвета из одной цветовой модели в другую в сети описаны неоднократно.

Вряд ли вы на глаз сможете определить при конвертировании цвета погрешность, хотя женщины и видят больше цветовых оттенков чем мужчины. Разница, небольшая, конечно же будет даже при одной цветовой модели, поэтому и существуют безопасные веб цвета.

Блондинка 15.03.2019 10:25

laimas, периодически возникает необходимость подобрать несколько(10, 15, 20) оттенков одного цвета, например зелёного, от rgb 0 128 0 до rgb 40 128 40 например, только не могу найти подходящий онлайн сервис

Malleys 15.03.2019 10:35

Цитата:

Сообщение от laimas
из безопасного набора

Вообще-то эта концепция якобы «безопасных» цветов уже давно не применима на практике... (Это были цвета вида #xxx, где x ∈ { 0, 3, 6, 9, C, F }) В них нет необходимости, поскольку мониторы давным давно поддерживают миллионы цветов.

Конкретно для #008000, он же rgb(0, 128, 0), он же hsl(120, 100%, 25%) вы можете написать — green!

Цитата:

Сообщение от laimas
при конвертировании цвета погрешность

Вы можете использовать дробные значения тоже! (пример ниже)

Цитата:

Сообщение от laimas
женщины... видят больше цветовых оттенков, чем мужчины

Это скорей влияние культурных традиции, сложившиеся в обществе нормы предписывают им выбирать более темные, «скромные» и «солидные» оттенки. Из-за этого может притупляться цветовое восприятие...

Наслаждаясь цветом, наслаждайтесь цветом!

Таблица с оттенками... Вы с лёгкостью можете в этой таблице видеть 500 оттенков цветного...
<body><script>

document.body.style.background = 
`linear-gradient(to bottom, ${
	Array.from({ length: 5 }, (_, i) => `hsla(0, 0%, ${100-50*(1+Math.abs(i-2.1)/(i-2.1))}%, ${Math.abs(-.33*i+.67)}) 0 ${100*(i+1) / 5}%`).join(", ")
}), linear-gradient(to right, ${
	Array.from({ length: 100 }, (_, i) => `hsl(${360 * i / 100}, 100%, 50%) 0 ${i}%`).join(", ")
})`;

</script></body>


Вы видите же все прямоугольники? Это только микроскопическая часть того, что даёт цвет. Даже такой простой материал, как асфальт, переливается миллиардами оттенков синего, фиолетового, красного... даже таких названий не придумано для такого богатства отображения цветов реального мира! (Смотреть на настоящий асфальт, а не на скудную на цвета фотографию, хотя фотография продвинулась далеко вперёд, но ей ещё слишком далеко до полного воспроизведения цветов места съёмки)

Однажды мне показывали пластину с супер-супер-супер-супер-супер-чёрным материалом, я теперь думаю, как же это так, мы пишем #000, а получаем какой-то оттенок серого, или, так сказать чёрный с излучением. (мониторам есть куда развиваться, они явно ещё не удовлетворяют человеческие потребности)

laimas 15.03.2019 10:41

Цитата:

Сообщение от Блондинка
не могу найти подходящий онлайн сервис

Где ищем? :) Их полно, слету, сразу же - https://colorscheme.ru/color-converter.html

И почему именно hsl, чем не угодил rgb? Цветовые модели, это всего лишь представления, и если не говорить о печати, где главенствует CMYK, а о мониторах, то в конечном итоге это все равно будет 00000000 - FFFFFFFF. Думаете что rgb удобнее потому, что можно задать альфа канал (rgba), ну его можно задать и в HEX представлении, это всего лишь четвертый байт описывающий цвет в 24-ой палитре.

<html>
<head>
<style>
.a {
    position: relative;
}

.b {
    position: absolute;
    top: 0;
    left: 60px;
    width: 100%;
    height: 100%;
    background-color: #6aff0054;
    z-index: 1;
}
</style>
</head>
<body>
<div class="a"><div class="b"></div><img src="https://vinilable.ru/image/cache/data-fotooboi-priroda-alleya-v-cvetah-128x128.jpg" /></div>
</body>
</html>


А вот оперировать цветом при выполнении некоторых задач удобнее в HSL/HSB.

Блондинка 15.03.2019 11:22

Цитата:

Сообщение от laimas
Где ищем? Их полно, слету, сразу же - https://colorscheme.ru/color-converter.html

в гугле ищу сервис, где можно задать первоначальный цвет, конечный цвет и количество шагов, а на выходе получить коды этих 20 цветов где 20 это количество шагов, ну как бы оттенки градиента от и до

рони 15.03.2019 11:36

Цитата:

Сообщение от Блондинка
где можно задать первоначальный цвет, конечный цвет и количество шагов

https://javascript.ru/forum/jquery/5...tml#post355108

laimas 15.03.2019 11:39

Цитата:

Сообщение от Malleys
Вообще-то эта концепция якобы «безопасных» цветов уже давно не применима на практике...

Да что вы говорите? Ну зачем теорию да к практике, где она ну никак не подтверждается.

Цитата:

Сообщение от Malleys
Это скорей влияние культурных традиции

Вы умный человек, ну тут несете какую-то пургу, это обусловлено физиологией, почитайте для интереса об этом.

laimas 15.03.2019 11:41

Цитата:

Сообщение от Блондинка
ериодически возникает необходимость подобрать несколько(10, 15, 20) оттенков одного цвета

Может тогда лучше воспользоваться готовыми наборами палитр?

Блондинка 15.03.2019 11:55

Цитата:

Сообщение от рони
Сообщение от Блондинка
где можно задать первоначальный цвет, конечный цвет и количество шагов
https://javascript.ru/forum/jquery/5...tml#post355108

Рони, вот если бы был онлайн сервис подобный где есть три поля ввода для начального цвета конечного и количества шагов

laimas 15.03.2019 11:59

Блондинка,
вам для чего это, для задания градиента или "дизайнерские муки" в подборе палитры?

Блондинка 15.03.2019 12:00

И результат выводился в виде кодов цветов в hex формате или в нескольких форматах hex rgb hsl

laimas 15.03.2019 12:05

В фотошопе работали с заливками, знаете его инструмент для градиентов? Вот, например, онлайн подобный инструмент, который выдаст и css конечный.

http://flatonika.ru/css-gradient-generator-onlajn/

А вам для чего этот набор?

Блондинка 15.03.2019 12:06

laimas,
Образно, есть див с текстом в 20-30 строчек, первая строчка должна быть красной, последняя синей, а промежуточные соответственно каждая своего оттенка от и до

рони 15.03.2019 12:06

Цитата:

Сообщение от Блондинка
Рони, вот если бы был онлайн сервис подобный где есть три поля ввода для начального цвета конечного и количества шагов

что мешает добавить форму?

laimas 15.03.2019 12:09

Цитата:

Сообщение от Блондинка
первая строчка должна быть красной, последняя синей ...

С трудом представляю такое "чтиво" :D

Блондинка 15.03.2019 12:14

laimas, забыл выделить слово образно, перед вставкой в цитату

laimas 15.03.2019 12:19

Цитата:

Сообщение от Блондинка
забыл выделить слово образно

Ну так залить слой градиентом, это одно восприятие, а раскрасить текст градиентом... вот тут восприятие может быть под вопросом, не так ли? Значит образ вы подобрали неудачно ;)

Блондинка 15.03.2019 12:30

Совсем недавно после успешного изменения цвета ссылок и замены одной ссылки на текст в меню, я вручную подбирала зелёные цвета для 20 ссылок, где соседние визуального не отличаются друг от друга, но разница очень заметна между первой и двадцатой

Nexus 15.03.2019 12:35

Блондинка, если у вас 20 уровней вложенности, значит у вас что-то не то с навигацией, даже для справочника это очень большой уровень вложенности.

laimas 15.03.2019 12:37

Все-таки женская логика не поддается логике. :)

Речь идет о каком-то сервисе в котором нужно указать крайние цвета и какие-то шаги. Ладно, для чего-то это надо, допустим.

Но как это все вяжется с текстом в меню (количество не важно), если все одни должны в общем-то, по уму, иметь один цвет? Открываем отладчик браузера, выбираем нужный элемент (будем надеяться, что эти ссылки имеет какой либо класс или как-то иначе описаны как группа в css), выбираем определенный цвет и двигаем его ползунки как угодно, пока не получим нужного для всех результата.

А вообще, есть готовые наборы палитр, как раз для дизайнеров.

Блондинка 15.03.2019 12:39

Nexus,
просто ты не знаком с таксономией нашей флоры и фауны

Nexus 15.03.2019 12:42

Цитата:

Сообщение от Блондинка
Nexus,
просто ты не знаком с таксономией нашей флоры и фауны

Допустим.
Приведите, пожалуйста, пример адреса страницы с 20-м уровнем вложенности.

Блондинка 15.03.2019 12:44

Цитата:

Сообщение от laimas
если все одни должны в общем-то, по уму, иметь один цвет

почему должны? кому должны? и кто сказал что должны?

laimas 15.03.2019 12:48

Цитата:

Сообщение от Блондинка
почему должны?

То есть опции меню как радуга, это вполне удобно? Ну не знаю, я просто не представляю прелестей такого меню.

Nexus 15.03.2019 12:52

Цитата:

Сообщение от Блондинка
почему должны? кому должны? и кто сказал что должны?

Запустите это в консоли:
document.querySelectorAll('a').forEach(function(node){
	node.style.color='rgb('+[0,0,0].map(function(){
		return Math.floor(
			Math.random()*256
        );
	}).join(',')+')';
});

Блондинка 15.03.2019 12:54

Nexus,
Если кратко

Kingdom Plantae – plantes, Planta, Vegetal, plants
Subkingdom Viridiplantae – green plants
Infrakingdom Streptophyta – land plants
Superdivision Embryophyta
Division Tracheophyta – vascular plants, tracheophytes
Subdivision Spermatophytina – spermatophytes, seed plants, phanérogames
Class Magnoliopsida
Superorder Caryophyllanae
Order Caryophyllales
Family Cactaceae Juss. – cactus, cacti
Genus Mammillaria Haw. – pincushion cactus, globe cactus, fishhook cactus
Species Mammillaria elongata DC.
Direct Children:
Subspecies Mammillaria elongata ssp. echinaria (DC.) D.R. Hunt
Subspecies Mammillaria elongata ssp. elongata DC.

Nexus 15.03.2019 13:01

Блондинка, я пример адреса просил.

Блондинка 15.03.2019 13:05

а есть ещё подтрибы, надтрибы, формы, подформы, гибриды и так далее


Часовой пояс GMT +3, время: 19:37.