|   |   | 
| 
 | Как на самом деле работает 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 компоненты цвета слоя, что само по себе не просто и не однозначно. Конечный цвет после наложения - это уже отдельный разговор.     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |