Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

jackrs

Como colocar estrutura de animate / effects de transição no appendto

Recommended Posts

Talvez o que você quer fazer não precise de javascripthttps://jsfiddle.net/5bL3kehj/

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado, porém eu utilizei de estruturas simples com cores para fazer o exemplo ficar mais claro.

 

A ideia é mudar divs de lugares numa estrutura próxima disso ( 4 blocos e alguns escondidos que vão trocar de lugar naquela estrutura ), e a ideia é que a troca delas entre si tenham uma transição mais "suave" não tão bruta.

 

próximo do exemplo que segue abaixo:

 

https://tympanus.net/Development/AnimatedResponsiveImageGrid/index2.html

 

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Hmmm... esse exercício é bom, ein...

 

Vamos pensar em um único caso, só duas imagens, uma em cima da outra esmaecendo e aparecendo "em cima" da outra... como poderiamos fazer...?

 

Imagino uma div com duas imagens dentro posicionadas absolutamente.... uma em cima da outra... com a mais em cima, partindo de transparência total, indo para 100% de opacidade... Pensei em uma estrutura como esta...

 

<div class="image-box">
  <img src="https://picsum.photos/id/1008/200/200" alt="" />
  <img src="https://picsum.photos/id/1012/200/200" alt="" />
</div>

E fazer a mágia da animação com CSS... aglo assim...

 

.image-box {
  position: relative; /* as imagens vão se basear na posição deste elemento para saber sua referencia no plano X, Y */
  width: 200px;
  height: 200px;
  display: inline-block; /* só para deixar uma do lado da outra */
}

.images-box > img {
  width: 200px;
  height: 200px;
}

@keyframes reveal { /* nossa animação, aqui vai o nome de referencia */
  0% { opacity: 0; }
  100% { opacity: 1; }
}

.image-box > img + img { /* uma imagem que apareça depois de outra imagem... */
  position: absolute; /* posição absoluta, ou seja, fica "voando" sobre os
                         outros elementos, sua posição se baseia naquele position
                         relative lá em cima */
  top: 0;
  left: 0;
  
  animation: reveal 5s ease 5s 1 normal forwards;
  opacity: 0; /* precisa informar o valor inicial pra não ficar pulando... */
}

É... até que ficou bom... https://codepen.io/dgmike/pen/ZNrNvO?editors=1100

 

Agora, vamos colocar um javascript pra ficar legal... a animação leva em torno de 10s, 5s de espera e 5s de animação de fato (veja a referência do atributo animation). Então... vamos fazer com que o script remova a primeira imagem e adicione uma nova imagem depois, dando inicio a um novo ciclio.... que tal fazer isso em 15 segundos?

 

function changeImage() {
  setTimeout(function () {
    var boxes = document.querySelectorAll('.image-box');
    var box = Array.from(boxes).sort(function(){ return (.5 - Math.random()); })[0]; // pega um aleatório

    if (box.querySelectorAll('img').length > 1) { // se só tiver 1 imagem, a gente não remove ela
      var firstImage = box.querySelector('img');
      firstImage.parentNode.removeChild(firstImage); // remove a anterior
    }
    
    var img = document.createElement('img');
    // abaixo, geramos uma imagem aleatória
    img.src = 'https://picsum.photos/id/' + parseInt(Math.random() * 1000) + '/200/200';
    img.alt = '';
    
    box.appendChild(img); // e por fim, colocamos a imagem na box
    
    changeImage(); // e chamamos de novo, só pra não acabar nunca....
    
  }, 15000); // 15 segundos...
}


changeImage(); // o inicio é no fim...

Bom, já coloquei pra escolher uma caixa aleatória... mas acho que dá pra melhorar como colocar o tempo de 15 segundos aleatório entre 15 e 20... escolher mais de uma imagem por vez... bom, agora é contigo...

 

Ah, segue a versão até agora.... https://codepen.io/dgmike/pen/KLQLBd?editors=1011

 

Qualquer coisa, grita!

 

---

 

Referencias

https://www.w3schools.com/cssref/css3_pr_animation.asp

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado.

 

Tenho meio que um limitador na estrura, que no caso é mostrar 4 dessas divs e dps ir mostrando as demais cadastradas numa estrutura, então vou listar todas e depois ir "misturando" elas.

 

 vou avaliar como vai ser o funcionando de X em X tempo fazer algo proximo de hide() numa div e visible() nessa outra com ajax e utilizando de transitions/fades para ficar melhor visualmente, porem obrigado.

 

Mas a minha ideia era ter algo próximo do exemplo abaixo, porém com muito menos codigo.

 

https://github.com/codrops/AnimatedResponsiveImageGrid

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tentei implementar com animate(), fade(), porém mesmo assim não obtive sucesso.

 

Será que somente com essa estrutura de mostrar 4 e esconder 4 div com informações diferentes futuramente, consigo realizar esse shuffle entre as divs com animação de fadein/fadeout aleatoria?

 

https://jsfiddle.net/h2av6nct/

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por Thiago Duarte
      Oi, gostaria de arrastar imagem e ao soltar formar bloco html, meu bloco de html ficaria com nome, content-1.html, content-2.html, etc
       
      Alguem pode me ajudar?
    • Por ILR master
      Salve galera.
       
      Vou publicar um evento e quero colocar um Cronômetro regressivo que mostre em tempo real os dias, horas e minutos que faltam para determinada data, tipo:.
      Faltam 5 dias, 12:30:00 para inauguração.
       
      Qdo chegar no dia, quero que apenas apareça uma mensagem.
       
      Alguém pode me ajudar?
    • Por Danilo - Jesus voltará!
      Olá pessoal, tenho uma div a qual através de um select categorias eu trago dados de empresas do banco, aí preciso clicar nas listagens das empresas e pegar o ID quando clica no checkbox e gravar pelo ajax novamente na session feita no arquivo php tipo um carrinho de compras, que essa parte já tenho... só não to conseguindo pegar os ids gerados dinamicamente no retorno feito do ajax, eles aparecem com F12 ao inspecionar, mas não aceita eu clicar para pegar o ID, acho que é algo de DOM, mas não to sabendo fazer... alguém aí saberia me ajudar como pegar esses ids ao clicar, já que eles vem dinamicamente?
       
      obrigado
    • Por joeythai
      Boa tarde pessoal,
       
      eu criei uma página da qual tenho diversos checkbox para marcar, se tiver alguma caixinha marcada eu habilito um botão para fazer o envio ao servidor, porém, está acontecendo um problema que não consegui identificar, o que está acontecendo é o seguinte:
       
      Quando eu marco um checkbox apenas, o botão é liberado, eu clico nele e aparece um modal para preencher os dados, e nesse modal tem um combobox com opções criadas em javascript, como tem somente uma caixinha marcada as informações no combobox aparecem perfeitamente, porém, se eu marco 2 checkbox ou mais as opções do combobox se repetem, como se eu tivesse fazendo isso dentro de um looping, o que não é verdade, eis o codigo abaixo:
       
      <code>
        <!DOCTYPE html>    <html lang="en">  
         <head>   <meta charset="UTF-8">   <meta http-equiv="X-UA-Compatible" content="IE=edge">   <meta name="viewport" content="width=device-width, initial-scale=1.0">   <title>Document</title>   </head>  
        <body>   <input id="check-belongings" class="custom-control-input check-belongings" name="" type="checkbox" value="">   <label for="" class="custom-control-label"></label>   <div class="col-12">   <div class="md-form mt-0 mb-0 pt-0 pb-0">   <label for="reason">Motivo</label><br><br>  
        <select class="form-control md-select2" style="width: 100%; text-transform: uppercase"   id="reason_all_belongings" name="reason_all_belongings" required>   </select>   </div>   </div>
       
        <script>  
         $('.check-belongings').click(function () {    let belongingsIds = [];    let listaMarcados;  
         let optionsReason = [];   let option = null;  
        let movementsSelect = document.getElementById("reason_all_belongings");  
        optionsReason = ['Conferencia', 'Desobstrução', 'Entrega ao Cliente/Propr','  Inspeção', 'Manobra', 'Venda'  ];  
        optionsReason.forEach((reason) => {   option = new Option(reason, reason.toLowerCase());   movementsSelect.options[movementsSelect.options.length] = option;   });  
        listaMarcados = document.getElementsByClassName("check-belongings");   for (let loop = 0; loop < listaMarcados.length; loop++) {   var item = listaMarcados[loop];  
         if (item.type == "checkbox" && item.checked) {    $('.drop-all-belongings').removeAttr('disabled');    belongingsIds.push(item.value);    } else { // $('.drop-all-belongings').attr('disabled', 'disabled');   }   }   });   </script>   </body>  
        </html> </code>
    • Por Alessandro Bodão
      Boa noite irmandade!
       
      Ando reparando de alguns anos pra cá, uma forte tendência em que sites bem dinâmicos e interativos transitam de uma página pra outra sem que a outra página se quer passe por um processo de carregamento, você clica, simplesmente acontece algumas transições nos elementos da página, e de repente, você está em outra página, outro url. De forma suave, nada é carregado, apenas algo acontece e você já está em outra página.
       
      Gostaria de saber como isso é feito pra aplicar em um site que estou desenvolvendo, se é algum framework, alguma ferramenta além do JavaScript...
       
      Trouxe um belo exemplo: https://www.traffic.productions/
       
      Se você chegou até aqui, agradeço desde já!
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.