logo

Criando cortinas animada com jQuery

logo

A pedidos do Ciro Nunes vou fazer uma equivalência (não existe tradução) do artigo do Buildinternet.

OBS: Todos os direitos reservados ao criador do tutorial, estou apenas fazendo sua equivalência para o português e ainda das partes que eu acho necessário.

Passo 1 – Do que você vai precisar

No artigo fala-se de um tal de IE 6 mais como eu nem sei o que é isso eu pulei.

Passo 2 – Mexendo com o HTML

<head>
	<script type="text/javascript" src="<a class="linkification-ext" title="Linkification: http://jqueryjs.googlecode.com/files/jquery-1.3.2.js" href="http://jqueryjs.googlecode.com/files/jquery-1.3.2.js">http://jqueryjs.googlecode.com/files/jquery-1.3.2.js"></script>
	<script src="jquery.easing.1.3.js" type="text/javascript"></script>
</head>
<body>
	<div class="leftcurtain"><img src="images/frontcurtain.jpg"/></div>
	<div class="rightcurtain"><img src="images/frontcurtain.jpg"/></div>
	<img class="logo" src="images/buildinter.png"/>
	<a class="rope" href="#"><img src="images/rope.png"/></a>
</body>

Passo 3 – Dando um tapa com CSS

*{
	margin:0;
	padding:0;
}
body {
	text-align: center;
	background: #4f3722 url('images/darkcurtain.jpg') repeat-x;
}
img{
	border: none;
}
.leftcurtain{
	width: 50%;
	height: 495px;
	top: 0px;
	left: 0px;
	position: absolute;
	z-index: 2;
}
.rightcurtain{
	width: 51%;
	height: 495px;
	right: 0px;
	top: 0px;
	position: absolute;
	z-index: 3;
}
.rightcurtain img, .leftcurtain img{
	width: 100%;
	height: 100%;
}
.logo{
	margin: 0px auto;
	margin-top: 150px;
}
.rope{
	position: absolute;
	top: -40px;
	left: 70%;
	z-index: 4;
}

Parando para ir ao banheiro observar como é feito a magia da internet.

Nós temos duas divs, cada uma com sua classe (.leftcurtain and .rightcurtain), ou seja, a cortina do lado esquerdo (LEFT) e a do lado direito (Right), eles estão parados em seus lugares lá. Isso foi feito com CSS usando top, left e com atribuições de posição.

Você pode perceber também que para cada lado da cortina está definido um width, 50% e 51%. Esta diferença de 1% é para compensar algumas arestas que possam aparecer quando a cortina estiver fechada. Para isso colocamos a cortina da direita em cima da esquerda usando o z-index. Com o z-index garantimos que as cortinas fiquem por cima de tudo.

As imagens das cortinas estão em divs com tamanho de 100 % de width e heigth, isso para proporcionar um efeito real de cortinas.

A classe .logo contem o que se esconde atrás das cortinas, é claro que você pode mudar isso, na verdade, você deve.

E finalmente a classe .rope que é a corda. Esta corda fica por cima de tudo, para que possamos fazer o efeito de puxar.

4 – Fazendo a mágica de abrir a cortina com jQuery

<script type="text/javascript">
	$(document).ready(function() {
		//por padrão a cortina está fechada
		$curtainopen = false;

		//quando a pessoa clicar na corda
		$(".rope").click(function(){
			$(this).blur();
			if ($curtainopen == false){
				//se a cortina estiver fechada
				$(this).stop().animate({top: '0px' }, {queue:false, duration:350, easing:'easeOutBounce'});
				$(".leftcurtain").stop().animate({width:'60px'}, 2000 );
				$(".rightcurtain").stop().animate({width:'60px'},2000 );
				//diz que a cortina esta aberta
				$curtainopen = true;

			} else {
				//se a cortina estiver aberta
				$(this).stop().animate({top: '-40px' }, {queue:false, duration:350, easing:'easeOutBounce'});
				$(".leftcurtain").stop().animate({width:'50%'}, 2000 );
				$(".rightcurtain").stop().animate({width:'51%'}, 2000 );
				//diz que a cortina está fechada
				$curtainopen = false;
			}
			return false;
		});
	});
</script>

Agora está pronto, já pode dar uma olhada, mais observe as considerações. Por padrão as cortinas estão fechadas $curtainopen = false. Usamos o valor desta variável para determinar se a cortina está aberta ou fechada através da declaração de um if .

O outro evento é quando a corda é clicada, que faz com o que a declaração seja executada. Adicionando o blur() nos links e return false para que não redirecione a página para algum lugar.

Se a cortina estiver sendo fechada a corda estará sendo puxada para baixo, reposicionando a corda em top: 0px de top:-40px, com um efeito “bouce” de puxar a corda proporcionado facilmente pelo plugin. Enquanto esta magia acontece, cada cortina é simultaneamente ajustada para uma largura de 60px, que cria um efeito de abertura. Você pode alterar o tempo que demora para abrir / fechar alterando a duração, que por padrão é 2000 ou 2 segundos.

Agora que as cortinas estão abertas, quando a corda é puxada mais uma vez a declaração do IF irá executar a animação de fechamento e que coloca todos os valores em seus valores padrão.

Passo 5- Correr para o abraço

Agora você tem um efeito magnífico de abrir e fechar cortinas, todos nós esperamos que você encontre algo interessante para colocar detrás das cortinas. Este exemplo está feito com largura total, mais você pode alterá-lo. Isso também pode servir de pré-loader para prevenir que o usuário veja o que está atrás das cortinas enquanto carrega.

Como sempre, seus comentários, pensamentos, sonhos e inspirações são apreciados nos comentários abaixo. Eu fiz minha parte, agora faça a sua.

Beijo do #Nerd e até a próxima.

Site | Demo

Bookmark and Share

10 marcas, uhull to “Criando cortinas animada com jQuery”

  1. Thiago Santos disse:

    sabe dizer se teria como fazer essa abertura de forma automática assim que o conteúdo interno estivesse carregado? Quais as melhores funções para se fazer isso?

  2. Ruan Carlos disse:

    @Thiago
    Opa, obrigado pelo comentário.

    para a cortina abrir automaticamente é só vc fazer isso.

    //se a cortina estiver fechada
    $(this).stop().animate({top: '0px' }, {queue:false, duration:350, easing:'easeOutBounce'});
    $(".leftcurtain").stop().animate({width:'60px'}, 2000 );
    $(".rightcurtain").stop().animate({width:'60px'},2000 );
    //diz que a cortina esta aberta
    $curtainopen = true;
    

    Você pode colocar isso dentro de uma função e chamar aonde vc quiser.

    Por exemplo, como você vai carregar o conteúdo?
    Vai ser via ajax?

    Se for então quando vc receber a resposta dele vc coloca este código, ou vc criar um função para isso e chama a função.

  3. Valeu por mais essa cara! Muito legal o efeito e a equivalência. ^^
    Agora Beijos do #Nerd tá lasca hein? :P

  4. MICHEL disse:

    Cara muito bom esse tutorial,Obrigado.

  5. Elton disse:

    Boa tarde Ruan!

    Gostaria de saber como faço para a cortina abrir automaticamente depois de 2 segundos que a página foi acessada.
    E como ficará a mudança?

    Obrigado e boa sorte no TCC..rs

  6. Muito legal cara. Fácil de entender, código bom, limpo.

    Ainda sou mirim na programção, mas um codigo limpo sempre facilita o entendimento. Fato.

    Grande abraço e parabéns pelo tutorial.

  7. Reginaldo disse:

    Seguindo a pergunta do Thiago Santos, eu tenho uma pagina que esta rodando php e css, como que eu faço para assi que carregar as fotos e codigos a cortina abrir automaticamente?
    qual a funcção a ser usada?

  8. Ruan Carlos disse:

    Opa, obrigadão Juarez. Cara o beijinho é só para as meninas.

logo
logo
Hospedado no Djalma | Ruan Carlos.