|
Как на самом деле работает linear-gradient в CSS ? Математическая формула какая? | ☑ | ||
---|---|---|---|---|
0
Шоколадная страсть
25.03.21
✎
21:55
|
Решил начать изучать веб-программирования. Сейчас на этапе изучения стилей CSS. Не могу понять как работает этот linear-gradient с точки зрения расчетов. Какая математическая модель?
Как на самом деле работает linear-gradient в CSS? Вот пример: Начальная точка имеет цвет (255, 255, 255, 1), конечная точка имеет цвет (0, 0, 0, 0), какой цвет должен получиться в самой середине между этими двумя крайними точками? В интернете так и не смог найти правильный ответ. Везде пишут какие-то формулы, которые не соответствуют действительности. |
|||
1
palsergeich
25.03.21
✎
22:43
|
https://developer.mozilla.org/ru/docs/Web/CSS/linear-gradient()
Дока от мозилы не катит? |
|||
2
Шоколадная страсть
25.03.21
✎
22:49
|
(1) Раз там нет ответа на мой вопрос, значит не катит.
|
|||
3
Михаил Козлов
25.03.21
✎
22:57
|
Может (255/2, 255/2, 255/2, 1/2)?
|
|||
4
Asmody
25.03.21
✎
22:58
|
можешь посмотреть в исходниках хромиума https://chromium.googlesource.com/chromium/src
|
|||
5
mistеr
25.03.21
✎
23:12
|
(0) Спецификация CSS не регламентирует формулу, поэтому реализации могут отличаться (и отличаются).
Если же отвязаться от CSS, то ответы нужно искать в учебниках по комп. графике, либо в документации к популярным библиотекам (Skia, Cairo, AGG и т.д.). Насколько я (смутно) помню, наилучшие в визуальном плане результаты дает интерполяция не в RGB пространстве, а в каком-то другом, более подходящем. |
|||
6
Шоколадная страсть
25.03.21
✎
23:57
|
(3) По логике да, так должно быть, но по факту получается (255, 255, 255, 1/2). Почему он так делает, не понятно.
|
|||
7
Шоколадная страсть
25.03.21
✎
23:57
|
(5) Наверное в sRGB, про него часто пишут.
|
|||
8
Шоколадная страсть
26.03.21
✎
06:09
|
Уп!
|
|||
9
Шоколадная страсть
26.03.21
✎
16:58
|
Пип!
|
|||
10
Вафель
26.03.21
✎
17:09
|
зачем тебе это? работает и достаточно
|
|||
11
Шоколадная страсть
26.03.21
✎
19:30
|
(10) Чтобы работало как ожидается. А то сделаешь как думаешь что оно должно работать, а оно работает по другому. И не понятно как нужно было правильно, приходится методом тыка или гуглить у кого такие же проблемы были
|
|||
12
Шоколадная страсть
26.03.21
✎
20:08
|
Никто не в курсе? Ну ладно, сам разберусь, как всегда.
|
|||
13
s-n-a-y
27.03.21
✎
10:56
|
Доков не читал, но можно предположить что четвертый параметр регулирует смещение оттенка цвета
|
|||
14
Василий Алибабаевич
27.03.21
✎
11:13
|
(0) Здесь : https://stackoverflow.com/questions/22607043/color-gradient-algorithm/39924008#39924008 немного теории и готовые алгоритмы.
|
|||
15
sikuda
27.03.21
✎
11:35
|
||||
16
Василий Алибабаевич
27.03.21
✎
12:10
|
+ (14) Во всех вот этих ваших интернетах пишут так :
(255,0,0) + (0,0,255) = ((255+0) div 2,(0+0) div 2,(0+255) div 2)=(127,0,127). |
|||
17
Шоколадная страсть
28.03.21
✎
07:57
|
(14) Похоже на правду. Но что-то слишком сложные формулы, со всякими условиями и возведением в степень. Не должно быть так.
|
|||
18
Шоколадная страсть
28.03.21
✎
07:59
|
(16) Не то, там не учитывается прозрачность.
Должно быть так: (255, 255, 255, 1) + (0, 0, 0, 0) = (255, 255, 255, 1/2) Может показаться что это бред какой-то, но так правильно. |
|||
19
vde69
28.03.21
✎
11:12
|
Почитай про проблему цвета при работе с картинками.
Там реально единой формулы нет. Есть куча библиотек и все работают по разному. Градиент это частный случай проблемы преобразования цветов. А самое страшное, что один и тот же цвет можно получить несколькими вариантами, То есть единственного решения не существует в принцепе |
|||
20
Вафель
28.03.21
✎
14:33
|
(19) это как это в ргб 1 цвет можно получить несколькими вариантами?
можно пример? |
|||
21
acanta
28.03.21
✎
14:36
|
Вероятно имеется ввиду полином как какой-то степени...
|
|||
22
Шоколадная страсть
28.03.21
✎
18:37
|
(19) Действительно, вариантов куча, и каждый браузер делает по своему. Проще готовую картинку загрузить, чем с этими дурацкими формулами CSS разбираться.
|
|||
23
Турбо Дизель
29.03.21
✎
05:07
|
(0) Вот ты тупой. Формула элементарная:
С = (С1 * A1 * x + C2 * A2 * (1 - x)) * 2 / (A1, A2) Где C - это компонента цвета (R или G или B), а А - это компонента прозрачности. х - это координата межу начальной и конечной точкой, от 0 до 1. |
|||
24
vde69
29.03.21
✎
17:25
|
(20) начнем с того, что есть понятие "глубина цвета" (есть 24 бит, есть 32 бита, есть 48 бит есть и поболее) в рамках этой "глубины" каждая конкретная картинка имеет некую точку отсчета и далее от нее считаются цвета.
На 1 цвет для 1 точке может требоватся разное количество бит, то есть #F00F для 24 битов и для 32 битов означают разное... Еще есть понятие "альфа канал", очень условно это начало системы координат цветовой палитры. Короче вариантов просто очень большое... Ну по поводу множественности для одного цвета - такое реально существует и вызывает большие проблеммы |
|||
25
Генератор
29.03.21
✎
17:41
|
Если я правильно понимаю то прозрачность определяет как цвет смешается с цветом родителя / подложки.
Т.е. цвет данного конкретного пикселя будет зависеть не только от функции градиента но и от того что под этим градиентом. |
|||
26
Моновпрыск
29.03.21
✎
18:12
|
(25) В данном случае цвет родителя не рассматривается, нужно найти только RGBA компоненты цвета слоя, что само по себе не просто и не однозначно. Конечный цвет после наложения - это уже отдельный разговор.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |