LINUX.ORG.RU

CSS transition сразу после появления объекта.


0

1

Допустим есть какой-то объект, div например. Он изначально невидимый. Как сделано не важно, то ли display=none, то ли убран в самый нижний слой, то ли аттрибут hidden, то ли ещё чего. И хочется сделать такую штуку, чтоб он появился резко, и тут же, через css transition эффект плавно уменьшился, например, с scale(1.2) до scale(1.0) Т.е. появился большой сразу и потом за секунду плавно уменьшился.

Получается, это сделать нельзя. Почему: допустим какая-то javascript функция делает его display=block (scale у него изначально 1.2) и делает scale=1.0. Отрисовку браузер начнёт после завершения функции. А в этот момент scale уже 1.0, вот он так сразу и нарисуется.

Можно сделать вначале display=block, потом некий Yield() (например, продолжить функцию через 0.5 сек таймер), потом только scale=1.0. Тогда будет плавно.

Как ещё можно сделать такую штуку?


Ответ на: комментарий от fk0

Я не понимаю твой коментарий. Если закоментировать background: white, то ничего не меняется, в классе s1 (говорю про свой код) он не нужен, я торопился, не подумал достаточно, чтобы его выкинуть. (ну и добавить для transition -webkit-, -o-, e.t.c).

Reaper ★★
()
Ответ на: комментарий от fk0

Вдогонку: обман в том, что по-умолчанию background тоже white.

fk0
() автор топика
Ответ на: комментарий от fk0

Ах, ёпрст, display:hidden, лол. Косячу. :)

Я тут посмотрел немного, если нет особенных причин, лучше используй как я написал, выкинув display вообще, т.е. используя смену цвета фона.

Если непременно охота с display: none -> block, то:

http://jsfiddle.net/5ZHrz/

в файрфоксе с маленьким значением времени паузы анимация бывает проскакивает, в общем, мне этот способ не нравится.

Reaper ★★
()
Последнее исправление: Reaper (всего исправлений: 1)

Как ещё можно сделать такую штуку?

CSS3 animation (@keyframe)

http://daneden.me/animate/ - в сорцах достаточно разнообразия, чтобы разобраться и скомбинировать по вкусу.

Vit ★★★★★
()
Последнее исправление: Vit (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.