CSS непрозрачность анимации меняет положение?

1

Свойство CSS-анимации при использовании для изменения непрозрачности также изменяет положение элемента? Если да, то что происходит в DOM, что делает это, и как это можно компенсировать?

Контекст: я добавил Javascript EventListener к набору изображений, который при нажатии вызывает функцию, которая инициирует анимацию CSS, затухающую щелкнув изображение. Также установлен таймер, который удаляет класс CSS, тем самым возвращая кликнутое изображение с непрозрачности 0 на непрозрачность 1. Все работает отлично, за исключением того, что изображение слегка появляется слева и сверху, откуда я изначально разместил его, и где я хочу, чтобы он быть. Такой же нежелательный эффект происходит как в Chrome, так и в Safari.

Здесь CSS:

.hiddenanimal { 
    animation: animalfade 1s;
    animation-fill-mode: forwards;
}

@keyframes animalfade {
    from { opacity: 1; 
    } to {  opacity: 0; 
    }
}
  • 6
    Пожалуйста, предоставьте минимальный воспроизводимый пример, чтобы иметь возможность правильно ответить на ваш вопрос (вместо того, чтобы просто гадать)
  • 0
    Мой Javascript добавляет класс скрытого животного CSS ниже, а затем удаляет его: `.hiddenanimal {animation: animalfade 1s; анимация-режим заполнения: вперед; } @keyframes animalfade {from {opacity: 1; } до {непрозрачность: 0; }}
Показать ещё 2 комментария
Теги:
dom
css-animations

1 ответ

0
Лучший ответ

Простой ответ: анимация CSS будет изменять только значения, о которых вы говорите. В вашем примере:

@keyframes animalfade {
  from {opacity: 1;} to {opacity: 0;}
}

Единственное, что изменится, это opacity.

Если ваш элемент перемещается, происходит что-то еще и, возможно, не элемент с анимацией.

Вы спрашиваете, что происходит в DOM. Технически: ничего. Значения CSS меняются со временем, а не DOM.

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

  • 0
    Спасибо, ваш ответ помогает, потому что он заставил меня искать объяснения в другом месте. Проблема, кажется, связана с Javascript. Я использовал метод setAttribute для добавления класса .hiddenanimal, не понимая, что он удалит мой существующий класс, у которого есть отступы. Когда я использую setAttribute для добавления моего исходного класса при вызове таймера, тогда изображение возвращается в положение, которое я хочу. Мне также нужно было добавить такое же количество @keyframes animalfade в @keyframes animalfade потому что в противном случае он @keyframes animalfade бы в начале анимации.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню