Angular 4 добавляет переход при наведении курсора мыши

Я пытаюсь добиться такого же эффекта перехода на таких кнопках, как здесь https://getbootstrap.com/docs/4.0/components/buttons/#outline-buttons. Мне нужно гораздо больше настроек, чем предлагает bootstrap, поэтому я пытаюсь сделать это самостоятельно, используя стили / эффекты css.

Вот как я отображаю кнопки:

<div class = "container">
      <div *ngFor = "let cat of categories">
        <ul>
          <li>
            <button [ngStyle] = "matchButtonColor(cat)" (mouseover) = "transition()" class = "btn " type = "button" (click) = "openDialog(cat)"> {{cat.name}} </button>
            <categories *ngIf = "cat.children" [categories] = "cat.children" (category) = "onClickChild($event)"></categories>
          </li>
        </ul>
      </div>
</div>

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

  matchButtonColor(category: AdminCategory) {
    var s = {
      'background-color': 'white',
      'border-color': '#8064A2',
      'color': '#8064A2',
      'transition': 'color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out'
    }
    return s;
  }

  transition(){
    console.info("aasdasd");
  }

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

Angular 4 добавляет переход при наведении курсора мыши

Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
CSS: FlexBox
CSS: FlexBox
Ранее разработчики использовали макеты с помощью Position и Float. После появления flexbox сценарий полностью изменился.
1
0
1 593
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Вероятно, вы можете добиться этого, установив для hoverFlag значение true на mouseover и сбросив его на false на mouseout. Затем есть два метода - один для состояния наведения, а другой для нормального состояния. (У вас может быть только один метод и передать флаг в зависимости от ваших требований).

<button [ngStyle] = "hoverFlag ? matchHoverButtonColor(cat) : matchButtonColor(cat)" (mouseover) = "hoverFlag = true" (mouseout) = "hoverFlag = false" class = "btn " type = "button" (click) = "openDialog(cat)"> {{cat.name}} </button>

Итак, если hoverFlag истинно, то будет вызван matchHoverButtonColor(cat). В противном случае будет вызван matchButtonColor(cat).

хм не работает, стили при наведении не применяют кнопку

minizibi 28.04.2018 16:38

Если вы можете создать плункер с вашей реализацией, было бы хорошо отладить проблему

Arvind Muthuraman 28.04.2018 20:11

извините мой плохой, он работает! Я просто не вернул никакого значения в функции onHover ... спасибо :)

minizibi 29.04.2018 10:52

Рада, что вам это помогло!

Arvind Muthuraman 30.04.2018 07:52

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