Как изменить стили css в Angular по клику для анимации

Привет всем, я создаю гамбургер-меню, и когда я переключаю меню, я хочу добавить / удалить определенное свойство css существующего класса. Вот мой код

burger.component.html

<div class = "top-nav--hamburger--container" (click) = "handleHamburger()">
      <div  class = "hamburger-bar--top"></div>
      <div class = "hamburger-bar--bot"></div>
</div>

И мой css выглядит так

.hamburger-bar--top
    width: 30px
    height: 5px
    background: red
    border-radius: 100px
    transition: transform 50ms ease-out
    // transform: rotate(45deg) translateY(5px) translateX(5px)

.hamburger-bar--bot
    margin-top: 8px
    width: 30px
    height: 5px
    background: red
    border-radius: 100px
    transition: transform 50ms ease-out
    // transform: rotate(-45deg) translateY(-5px) translateX(4px)

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

burger.component.ts

showStyle: boolean = false;

  constructor() { }

  handleHamburger(){
    this.showStyle = !this.showStyle;
    ...Add the properties to the class
    ...Can not figure this part out
  }

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

Звучит как быстрая работа для ngClass

Chris W. 09.08.2018 16:48
stackoverflow.com/questions/47296759/…
Chellappan வ 09.08.2018 16:52
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
2
214
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

вы можете добавить такие условные угловые стили.

<div  class = "hamburger-bar--top" ng-style = "hamburgerTopStyle"></div>

handleHamburger() {
    this.hamburgerTopStyle = {'font-size': '10px', 'color': 'blue'};
}
Ответ принят как подходящий

Просто используйте директиву ngClass для переключения базы классов значения showStyle.

<div class = "top-nav--hamburger--container" 
    [ngClass] = "{'class01':showStyle,'class02':!showStyle}" 
    (click) = "handleHamburger()">
      ...
</div>

in case of multiple class {'class01 class03 class04':showStyle,'class02':!showStyle}

Также вы можете создать свой список классов с помощью метода handleHamburger

  private showStyle = false;
  public classList = {};
  public handleHamburger() {
    this.showStyle = !this.showStyle;

    if (this.showStyle) {
      this.classList = {
        'class01 class02': true,
        'class03': true
      }
    } else {
      this.classList = {
        'classs04': true
      }
    }
  }

шаблон

<div class = "top-nav--hamburger--container" 
    [ngClass] = "classList"  (click) = "handleHamburger()">
      ...
</div>

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