Изменить цвет фона с помощью анимации Angular

Я хочу изменить цвет фона градиента на другой при нажатии кнопки. Вот пример из Angular Документы, как показано ниже. Этот код отлично работает с обычными цветами (меняется медленно в течение 1000 мс - как я хочу -), но не для цветов градиента (изменяется сразу после 1000 мс).

animations: [
    trigger('heroState', [
      state('black', style({
         background: 'linear-gradient(to right, #2c2d34, #242424)'
      })),
      state('green',   style({
         background: 'linear-gradient(to right, #2c2d34, #467a5e)'
      })),
  transition('black => green', animate('1000ms ease-out')),
  transition('green => black', animate('1000ms ease-in'))
])


<section class = "bg-area" [@heroState] = "state"></section>
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Angular и React для вашего проекта веб-разработки?
Angular и React для вашего проекта веб-разработки?
Когда дело доходит до веб-разработки, выбор правильного front-end фреймворка имеет решающее значение. Angular и React - два самых популярных...
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Мы провели Twitter Space, обсудив несколько проблем, связанных с последними дополнениями в Angular. Также прошла Angular Tiny Conf с 25 докладами.
Угловой продивер
Угловой продивер
Оригинал этой статьи на турецком языке. ChatGPT используется только для перевода на английский язык.
Мое недавнее углубление в Angular
Мое недавнее углубление в Angular
Недавно я провел некоторое время, изучая фреймворк Angular, и я хотел поделиться своим опытом со всеми вами. Как человек, который любит глубоко...
Освоение Observables и Subjects в Rxjs:
Освоение Observables и Subjects в Rxjs:
Давайте начнем с основ и постепенно перейдем к более продвинутым концепциям в RxJS в Angular
2
0
6 693
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Linear-Gradient, похоже, на данный момент не поддерживает tansitions, поэтому вам нужно будет найти обходной путь для этого. Вы можете попробовать установить непрозрачность двух элементов, которые накладываются друг на друга. Что-то вроде это.

Это определенно не идеальное решение, но на данный момент это лишь начало идеи, и, возможно, оно вам поможет.

Спасибо, после небольших изменений все заработало. Непрозрачность заставляет исчезнуть каждый элемент в <section>, поэтому я использовал его в абсолютном <div> позади <section> и сделал фон раздела прозрачным. Спас мой день.

chnselim 29.05.2018 09:51

This code works fine with normal colors(changes slowly during 1000ms -as what i want-) but not for gradient colors (changes immediately after 1000ms)

Причина этого в том, что linear-gradient - это не анимируемое свойство css.

Как упоминалось в другом ответе, вы можете использовать хакерский подход, используя непрозрачность и псевдоэлементы. Вот хороший учебник, как это сделать: https://medium.com/@dave_lunny/animating-css-gradients-using-only-css-d2fd7671e759

Другие вопросы по теме