Я создаю сайт, который позволит вам обновить таблицу SQL, и я хочу добавить какую-то обратную связь при нажатии кнопки. Я сделал невидимую кнопку (opacity = 0), которая находится справа от каждой строки как статус. Я сделал эту функцию JS fade(), чтобы установить непрозрачность на 1, а затем медленно вернет ее в 0, поэтому сообщение появляется, а затем исчезает.CSS исчезает несколько раз
function fade() {
var invis = document.getElementById("invis".concat(num.toString()));
if(invis.style.opacity > .990) {
invis.style.opacity = (invis.style.opacity) - .001;
setTimeout(fade, 50);
} else if(invis.style.opacity > 0) {
invis.style.opacity = (invis.style.opacity) - .05;
setTimeout(fade, 50);
}
}
Проблема, так как веб-страниц являются однопоточных, любое другое действие будет прерывать анимацию и оставить наполовину утрачен статус. Так что это не хорошо. Поэтому теперь я пытаюсь настроить невидимые кнопки для изменения класса при обновлении новой строки. Новый класс выглядит так:
.invisible_anim {
...
opacity: 0;
animation:trans 3000ms;
}
@keyframes trans {
0% {
opacity: 1;
}
50% {
opacity: 1;
}
Это прекрасно работает, за исключением того, что он работает только один раз. Отсюда я не могу заставить анимацию играть во второй раз. Я попытался изменить класс обратно на «невидимый», а затем «invisible_anim» без везения. Я также не могу использовать JQuery или Webkit. Мне интересно, есть ли какой-то флаг, который вы можете установить для кнопки без фактического нажатия на нее, чтобы я мог сбросить класс, когда мне нужно? Или даже какой-то способ наполнить мою функцию JS, чтобы я мог придерживаться этого.
Я тоже турбо-нуб, когда дело доходит до этого. Я не касался JS или CSS примерно неделю назад, поэтому, если есть другое решение, о котором я не знаю, не стесняйтесь предлагать альтернативу.
EDIT: Наш бесстрашный герой @Daemedeor спас день. Я добавил слушатель мой статус:
var invis = document.getElementById("invis".concat(num.toString()));
invis.addEventListener("animationend", listener, false);
затем добавили эту прекрасную функцию:
function listener(e) {
var invis = document.getElementById("invis".concat(num.toString()));
switch(e.type) {
case "animationend":
invis.className = "invisible";
break;
}
}
И я получил именно то, что я искал. Какое время быть живым.
Спасибо, но проблема в том, что мне нужно заставить его играть один раз за событие. Щелчок на кнопке перед ней - это то, что вызывает его оживление. Я знаю, что в CSS есть что-то вроде .button + invisible_anim, которое влияет только на invisible_anim, если оно сразу после кнопки. Можно ли настроить анимацию на постоянное затухание до 0 (с «бесконечным»), а затем настроить onclick для кнопки, чтобы установить непрозрачность нашего invisible_anim на 1? Я не уверен, что анимация позволила бы это произойти ... –
@LordFarquaad, вы должны просто добавить класс к рассматриваемому элементу с событием onclick, и это сделает все затухание. бесконечный фактически просто воспроизводит анимацию снова. поэтому он будет идти от 0 до 1, а затем перезапускается снова и снова. Вы можете применить другой класс, например .invisible.invisibleanim позже в своем css, чтобы иметь разные свойства и переопределить остальные. – Daemedeor
На самом деле, я использовал слушателя, который вы добавили в комментарий к ответу Блейка, и он отлично работал, спасибо! Я gunna редактирую мой вопрос, чтобы включить это решение, но если вы представите его в качестве ответа, я с радостью проведу его. –