Eu tenho um elemento com estilo
position: relative;
transition: all 2s ease 0s;
Então, quero mudar sua posição suavemente depois de clicar nele, mas quando adiciono a mudança de estilo, a transição não ocorre, em vez disso, o elemento se move instantaneamente.
$$('.omre')[0].on('click',function(){
$$(this).style({top:'200px'});
});
No entanto, se eu alterar a color
propriedade, por exemplo, ela muda suavemente.
$$('.omre')[0].on('click',function(){
$$(this).style({color:'red'});
});
Qual pode ser a causa disso? Existem propriedades que não são 'transitórias'?
EDIT : Eu acho que deveria ter mencionado que isso não é jQuery, é outra biblioteca. O código parece funcionar conforme o esperado, estilos estão sendo adicionados, mas a transição só funciona no segundo caso?
javascript
css
transition
php_nub_qq
fonte
fonte
.on()
método. Se não - o que é $$?top
parece estar na lista, o que elimina minha dúvida sobretop
não estar disponível para transições.top
valor definido (para 0, por exemplo) antes de alterá-lo (para 200 ou qualquer outro)Respostas:
Tente definir um valor padrão no css (para deixá-lo saber onde você deseja que comece)
CSS
fonte
transition: top 1s ease 0s;
paratop
únicaTalvez você precisa especificar um valor superior em seu conjunto de regras css, de modo que ele vai saber o valor a animar de .
fonte
No meu caso, a posição div foi corrigida, adicionar a posição à esquerda não foi suficiente, ela começou a funcionar apenas após adicionar o bloco de exibição
left:0; display:block;
fonte
Algo que não é relevante para o OP, mas talvez para outra pessoa no futuro:
Para pixels (
px
), se o valor for "0", a unidade pode ser omitida:right: 0
eright: 0px
ambos funcionam.No entanto, notei que no Firefox e no Chrome este não é o caso da unidade de segundos (
s
). Enquantotransition: right 1s ease 0s
funciona,transition: right 1s ease 0
(unidade ausentes
para o último valortransition-delay
) não (ele faz o trabalho na borda no entanto).No exemplo a seguir, você verá que
right
funciona para ambos0px
e0
, mastransition
só funciona para0s
e não funciona com0
.fonte
Resposta: sim .
Se a propriedade não estiver listada aqui, ela não é 'transitória' .
Referência: Propriedades de CSS Animatable
fonte
Corri para este problema hoje. Aqui está minha solução hacky.
Eu precisava de um elemento de posição fixa para fazer a transição de 100 pixels enquanto carregava.
fonte