У меня есть список сотрудников, отображаемый в классе карточек Primeng.
<ng-template pTemplate = "gridItem">
<div class = "grid grid-nogutter">
<div *ngFor = "let employee of employees" class = "col-12 md:col-4">
<div class = "card m-3 surface-border" [ngClass] = "{'alert-card': employee.hasAlert}">
Если я добавлю это в свой scss
.alert-card {
border: 2px solid rgba(231, 8, 100, 0.55) !important;
}
Я правильно вижу границу (только когда добавляю !important
в конец)
Теперь мне нужен импульсный эффект на этой границе, чтобы она медленно становилась красной, а красный циклически исчезал, поэтому я попробовал это
.alert-card {
animation: fadeColor 1s infinite;
}
@keyframes fadeColor {
0%, 100% {
border-color: transparent;
}
50% {
border-color: rgba(231, 8, 100, 0.55) !important;
}
}
Альтернативно я пробовал это
.alert-card {
border-width: 3px;
border-style: solid;
border-color: transparent;
animation: fadeColor 1s infinite;
}
@keyframes fadeColor {
0%, 100% {
border-color: transparent;
}
50% {
border-color: rgba(231, 8, 100, 0.55);
}
}
тоже без эффекта. В этом случае я вижу серую рамку шириной не менее 3 пикселей (цвет по умолчанию), но эффект не применяется.
Но, к сожалению, это не имеет никакого эффекта. Заранее спасибо за ваш вклад.
Вопросы, требующие помощи по коду, должны включать кратчайший код, необходимый для его воспроизведения, в самом вопросе, желательно в фрагменте стека с использованием значка <>
. См. Как создать минимальный воспроизводимый пример.
@AnnaKlein, используя !important, это нормально, вам нужно применить его к правильному стилю, иначе он переопределит анимацию. Хороший вопрос!
Вы можете удалить !important и просто применить стили напрямую. Также удалите границу поверхности из класса.
Этот пример из w3 помог правильно настроить CSS.
Мы можем указать цвет границы по умолчанию (убедитесь, что он не установлен с помощью важного), тогда достаточно установить анимацию 50%
, и она будет пульсировать.
div.alert-card {
border-width: 2px !important;
border-style: solid !important;
border-color: transparent;
animation: fadeColor 2s infinite;
border-radius: 6px;
}
@keyframes fadeColor {
50% {
border-color: rgb(192, 25, 148);
}
}
Привет! Благодаря вашему вкладу я нашел проблему. Если я удалю границу поверхности из класса, все будет работать так, как ожидалось. Я действительно не понимаю почему, но, по крайней мере, сейчас он работает. Спасибо, что привели меня в нужное русло. Если вы обновите свой ответ и сможете ответить, почему граница поверхности вызывает такое поведение, я бы хотел пометить ваш ответ как принятый :)
@AnnaKlein, не стесняйтесь редактировать мой ответ и обновлять его!
Использование !важно; это не очень хорошая идея. Используйте специфичность и каскад для отмены других правил.