<canvas> градиент исчезает с 3 цветами - PullRequest
3 голосов
/ 05 октября 2011

Я экспериментировал с HTML5 и градиентными затуханиями, я хотел бы использовать 3 цвета и постепенно плавно переходить друг в друга. В настоящее время я могу заставить его работать только двумя цветами.

jsFiddle

Моя цель похожа на это изображение:

target image

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

Я пытался добавить массив используемых цветов, но функция цвета была изменена из учебника (добавит ссылку, если я смогу найти), и я не совсем уверен, как это сделать.

Может ли кто-нибудь предложить какое-либо объявление?

Заранее спасибо.

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

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

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

Ответы [ 2 ]

10 голосов
/ 05 октября 2011

Если вам не нужна сложная анимация, вы выполняли крайне ненужные вычисления для градиента. Смысл градиента в том, что вы задаете ему начальные значения, и он автоматически генерирует все промежуточное значение.

Я обработал градиент образца, который похож на ваше эталонное изображение: http://jsfiddle.net/ZFayC/2/

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

Также обратите внимание, что вы устанавливали холст width и height через свойства CSS. С помощью элемента canvas элементы CSS width и height управляют увеличением элемента, а атрибуты уровня DOM - фактическими размерами.


Редактировать: Я полностью упустил тот факт, что вы хотели создать анимированный градиент. Мои извинения за это.

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

http://jsfiddle.net/fkU4Q/

Это больше похоже на то, что вы ищете?


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

http://jsfiddle.net/fkU4Q/2/

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

0 голосов
/ 05 октября 2011

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

http://css3.mikeplate.com/

...