Jump to content
jackrs

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

Recommended Posts

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

 

 

 

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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/

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By marcelocardoso
      Fala galera...
      Depois de tanto sofrer tentando e pesquisando na internet, não consegui resolver...
      A nível de conhecimento, segue código para:::

      1) Ao clicar, pegar o id do botão, em seguida abrir com slidetoggle e jogar no TOP tipo ancora.
      2) ou seja, expandir a slidetoggle, mas POSICIONAR no id da DIV, SECTION ou etc...

      CODE:
       
      $(function () { // $("#btn-maps").on("click", function () { // $('html, body').animate({ // scrollTop: $("#maps").slideToggle('slow').offset().top - 135 // }, 1200, 'linear'); // }); $("#btn-maps").click( function (event) { event.preventDefault(); if ($("#maps").is(":visible")) { $("#maps").slideUp(600).offset().top; } else { $("#maps").slideDown(600).offset().bottom; } } ); }); Este código, funciona perfeitamente, adaptado de vários códigos buscados na internet, porém, não consigo com nenhum dos dois, posicionar ao CLICK o SLIDETOGGLE ao expandir deixar examente no inicio do ID;

      Dicas, Sugestões como fazer, realizar, agradeço.
      Obrigado.

       
    • By ricardonews
      Olá pessoal, fiz 2 formularios  de login em jquery e ajax, um eu vi na internert o modelo então fiz umas adaptações e funcionou com meu banco de dados. porem o outro que fiz baseado nele não funcionou. vou postar aqui pra voces o funcionando e o não funcionando, alguém pode me dar uma ajuda?, dizer que erro é esse? ele simplesmente não loga e não aparece erros no console.
      <!doctype html> <html> <?php require_once"config.php"; ?> <head> <title>APRENDIZ DE JS</title> <link href="style.css" rel="stylesheet" type="text/css"> <script src="jquery-3.2.1.min.js" type="text/javascript"></script> <script type="text/javascript"> $(document).ready(function(){ $("#but_submit").click(function(){ var username = $("#meu_nome").val().trim(); var password = $("#minha_senha").val().trim(); if( username != "" && password != "" ){ $.ajax({ url:'pesquisar.php', type:'post', data:{username:username,password:password}, success:function(response){ var msg = ""; if(response == 1){ window.location = "home.php"; }else{ msg = "Invalid username and password!"; } $("#message").html(msg); } }); } }); }); </script> </head> <body> <div class="container"> <div id="div_login"> <h1>Login</h1> <div id="message"></div> <div> <input type="text" class="textbox" id="meu_nome" name="meu_nome" placeholder="Username" /> </div> <div> <input type="password" class="textbox" id="minha_senha" name="minha_senha" placeholder="Password"/> </div> <div> <input type="button" value="logar" name="but_submit" id="but_submit" /> </div> </div> </div> </body> </html> /* Container */ .container{ width:40%; margin:0 auto; } /* Login */ #div_login{ border: 1px solid gray; border-radius: 3px; width: 470px; height: 270px; box-shadow: 0px 2px 2px 0px gray; margin: 0 auto; } #div_login h1{ margin-top: 0px; font-weight: normal; padding: 10px; background-color: cornflowerblue; color: white; font-family: sans-serif; } #div_login div{ clear: both; margin-top: 10px; padding: 5px; } #div_login .textbox{ width: 96%; padding: 7px; } #div_login input[type=submit]{ padding: 7px; width: 100px; background-color: lightseagreen; border: 0px; color: white; } #message{ width:100%; text-align:center; color:red; } /* media */ @media screen and (max-width:720px){ .container{ width: 100%; } #div_login{ width: 99%; } } <?php require_once "config.php"; // AQUI É O PESQUISAR PHP $uname = mysqli_real_escape_string($con,$_POST['username']); $password = mysqli_real_escape_string($con,$_POST['password']); if ($uname != "" && $password != ""){ $sql_query = "SELECT count(*) as cntUser FROM usuarios WHERE username='".$uname."' and password='".$password."'"; $result = mysqli_query($con,$sql_query); $row = mysqli_fetch_array($result); $count = $row['cntUser']; if($count > 0){ $_SESSION['uname'] = $uname; echo 1; }else{ echo 0; } } <?php require_once "config.php"; // AQUI É A HOME.PHP // Check user login or not if(!isset($_SESSION['uname'])){ header('Location: index.php'); } // logout if(isset($_POST['but_logout'])){ session_destroy(); header('Location: index.php'); } ?> <!doctype html> <html> <head> <title>SEJA BEM VINDO!</title> </head> <body> <h1>PÁGINA INICIAL</h1> <form method='post' action=""> <input type="submit" value="SAIR" name="but_logout"> </form> </body> </html> <?php // ESSE AQUI É A CONFIG.PHP session_start(); $host = "localhost"; /* Host name */ $user = "root"; /* User */ $password = ""; /* Password */ $dbname = "login2"; /* Database name */ $con = mysqli_connect($host, $user, $password,$dbname); // Check connection if (!$con) { die("Connection failed: " . mysqli_connect_error()); } Então pessoal, até aqui funciona normal .
      agora a linha abaixo é oque não funciona e eu vou postar só a index e o css porque repete o de cima.
      se alguém poder me ajudar eu fico grato. desde já muito obrigado
      <html> <?php require_once"config.php"; ?> <head> <title>Formulario de login </title> <link href="css/style.css" rel="stylesheet" type="text/css" /> <script src="jquery-3.2.1.min.js" type="text/javascript"></script> <script type="text/javascript"> $(document).ready(function(){ $("#but_submit").click(function(){ var username = $("#meu_nome").val().trim(); var password = $("#minha_senha").val().trim(); if( username != "" && password != "" ){ $.ajax({ url:'pesquisar.php', type:'post', data:{username:username,password:password}, success:function(response){ var msg = ""; if(response == 1){ window.location = "home.php"; }else{ msg = "Invalid username and password!"; } $("#message").html(msg); } }); } }); }); </script> </head> <body> <form id="formulario" method="post"> <fieldset> <h2>Configuracoes da conta</h2> <h3>Area de login </h3> <input type="text" id="meu_nome"name="meu_nome" placeholder="username" /> <input type="password" id="minha_senha " name="minha_senha" placeholder="digite sua senha" /> <input type="submit" class="next acao" value="Logar" /> </fieldset> </body> </html> agora é o css
      *{margin:0; padding:0;} html{ height:100%; background: linear-gradient(rgba(38, 128, 101, 0.9), rgba(52, 177, 140, 0.9)); } .erros, .ok { width:390px; padding:5px; background:rgba(238, 249, 113, 0.9); margin: 20px auto 0 auto; border: 1px solid rgba(222,239,10,0.9); border-radius: 4px; color: #333; } .ok{background: rgba(155,222,143,0.9);border-color: rgba(68, 171, 50, 0.9);color:white;} body{ font-family: "Trebuchet MS", tahoma, arial; } #formulario{ width:500px; margin:40px auto; text-align:center; position:relative; } #formulario fieldset{ background:white; border:0 none; border-radius:5px; -moz-border-radius:5px; -webkit-border-radius:5px; box-shadow:0 0 15px 1px rgba(0,0,0, 0.4); padding:20px 30px; box-sizing: border-box; width:80%; margin:0 10%; position:absolute; } #formulario input, #formulario textarea{ padding:10px; border:1px solid rgba(38, 128, 101, 0.9); border-radius:4px; -moz-border-radius:4px; -webkit-border-radius:4px; outline:none; box-sizing: border-box; width:100%; font:14px "Trebuchet MS", tahoma, arial; color:#090; margin-bottom:10px; } #formulario .acao{ width:100px; background:rgba(38, 128, 101, 0.9); color:white; text-transform:uppercase; font-weight:bold; padding:12px 0; float:left; margin-right:5%; } #formulario .acao:hover{background:rgba(52, 177, 140, 0.9); cursor:pointer;}  
    • By ricardonews
      Olá pessoal, fiz um formulario de cadastro usando o jquery ,ajax com o json. só que agora eu estou querendo logar  no banco, fiz todo o procedimento normal que se faz para site em php, mas não consegui nada,  eu tenho algumas imagem aqui  vou colocar.
      Queria logar, eu coloquei a index  sem o php porque tentei com php e js mas nao funcionou , alguem pode me ajudar ?
      desde já obrigado.




    • By Mensageyro
      Olá pessoal, tenho um script para abrir um menu, preciso colocar um efeito legal quando o menu descer segue a imagem do script:
       
       

    • By tiagosp
      Olá, tenho uma duvida a respeito da mesclagem entre Jquery e Js regular.
      Sei que Jquery é um JS simplificado, porém gostaria de saber se existe alguma regra quanto a utilização de ambos no mesmo script, por exemplo:
      var nome = $("$nome").text(); alert(nome); Posso utilizar ambos sem problemas, ou há alguma exceção, ou ainda uma regra de fato. 
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.