2008 November | TidBits
Nov 28

myParallax - Parallax com javascript com jQuery

Ultimamente tenho visto scrips interessantes em javascript simulando aquele efeito muito comum no flash o qual chamamos de parallax.

No dhteumeuleu, no CSSLab e no Stephband tem exemplos bem legais e bem complexos dessa técnica.

E essa semana, fazendo um freela, precisei criar algo nesse estilo. E acabei criando um script BEM SIMPLES que simula core do efeito.

Veja o exemplo abaixo e passe o mouse em cima:

Vou explicar como fiz:

O HTML:


<div id="container">
	<div id="conteudo">
		<img src="_images/parallax.jpg" alt="Parallax"/>
	</div>
</div>

O CSS:


	#container { width: 460px; height: 304px; position: relative; overflow:hidden; }
	#conteudo { position: absolute; left:0; top:0; }

E o javascript (usando jQuery):


$(document).ready(function(){
	if($('#conteudo').width()>$('#container').width()){
		var pos_x = $('#conteudo').offset().left;
		var container = $('#container').width();
		var conteudo = $('#conteudo').width();
		var diferenca = conteudo - container;
		var metade = - parseInt(diferenca / 2);
		$('#container').mousemove(function(e){
			x = e.pageX - pos_x;
			porcentagemX = parseInt(x / container * 100);
			left = parseInt(0 - (diferenca  / 100 * porcentagemX ));
			$('#conteudo').css('left',left);
		});
		$('#conteudo').animate({ 'left':metade },1000);
	}
});

Vou explicar basicamente o que o script faz, linha a linha.

1 - Faz com que a função seja executada quando terminar de carregar a página;

2 - Verifica se a área do conteúdo é maior do que a do container pra poder aplicar o efeito;

4 a 8 - Declara variáveis com os valores dos elementos;

10 - Escreve uma função que será executada toda que passar o mouse em cima do elemento “container”;

11 e 12 - Obtem a posicao do mouse (em porcentagem) em relação a div “container”, elemplo, se o mouse tiver bem no meio do container, a posicao é de 50%, mas se o mouse tiver bem na direita do container então a posição será próxima a 100%;

13 e 14 - Com a porcentagem obtida, é só posicionar o left do conteudo. O conteúdo não precisa ser uma imagem, pode ter quaisquer elementos dentro.

17 copy - Para o usuário perceber o efeito, é legal centralizar o conteúdo, usando o animate do jQuery já mostra o movimento.

Apesar do exemplo bobo aqui nesse post, esse script da liberdade pra fazer efeitos mais complexos. È mais facil trabalhar em cima dessa base do que usar um plugin de jQuery com mil opções.

Pra quem achou legal, pode fazer o download do exemplo completo.

bookmark bookmark bookmark bookmark bookmark bookmark bookmark

Nov 27

Criando um mecanismo de busca no seu site com o Google Custom Search Engine

Recentemente a Yahoo! lanço o BOSS (Build your Own Search Service), para concorrer diretamente com o Google Custom Search Engine. Ambos são mecanismos de buscas que procuram dentro de páginas ou domínios configurado por você. Aqui eu vou falar do Google Custom Search Engine que parece ser mais simples.

Google Custom Search Engine

Me apresentaram o Google Custom Search Engine lá no Google Search Masters 2008 e deram bons motivos para nos pensar em utilizá-lo, como:

  • Fazer uma busca em todo o seu site, pode ser complexo, gastar horas e horas de programação, no mecanismo deles eu fiz em 5 minutos.
  • O algoritmo de buscas é o mesmo que o google usa, então, ele consegue definir níveis de príoridade (ranking), por exemplo se nós procurarmos javascript, o algorítimo procura qual a relevância da keyword javascript dentro de cada página. E depois ele apresenta qual tem o resultado mais relevante. O que seria é mais complicado ainda.
  • Os usuários estão acostumados a interface do google.
  • É possível mesclar o conteúdo com links patrocinados e, quem sabe, ganhar dinheiro com isso.

Faça o teste aqui com o nosso mecanismo de busca que eu acabei de criar.

Procure por modal, javascipt, jQuery, ou o que quiser.

É lógico que tem desvantagens, acaba com o layout do seu site, e pra quem usa CMS como wordpress, joomla, drupal, etc.. etc… não dá trabalho nenhum criar uma busca. Mas pra quem não usa, ou se seu cliente quer um projeto “bom, rápido e barato”, vale a pena experimentar, até a w3c schools usa.

bookmark bookmark bookmark bookmark bookmark bookmark bookmark

Nov 25

Quiz sobre JavaScript - Teste seu conhecimento

Teste seus conhecimentos em JavaScript respondendo o quiz. Todas as perguntas e respostas estão em português.

Não deixe de comentar quantos pontos você fez e o que achou das perguntas.

E pra quem ainda não fez, também tem o Quiz de CSS , o Quiz de XHTML e o Quiz de jQuery .

[]s

bookmark bookmark bookmark bookmark bookmark bookmark bookmark

Nov 22

Animação de texto em javascript

Eu sempre fico impressionado com as scripts do dhteumeuleu . Tanto pelo bom trabalho, quanto pela criatividade. E recentemente ele fez (ou eles fizeram?) mais um projeto bem legal, trata-se de uma animação de texto em javascript chamada de “mistakes”. Deem uma olhada abaixo:

No exemplo original, o texto fica dentro de um textarea, mas facilmente dá pra alterar isso, deixar do jeito que você quiser, dentro de um <h1> por exemplo, assim o código fica acessível pra search engines e pra quem não tem javascript.

Quem gostou, pode fazer o download do exemplo original ou então acessar o site do dhteumeuleu . Quem puder contribuir com paypal no site dele, o cara merece. =)

bookmark bookmark bookmark bookmark bookmark bookmark bookmark

Nov 21

As melhores ferramentas para validar seu código

O seu browser estar apresentando seu site corretamente não significa que seu código esta correto e também não significa que vai funcionar em mais 40 browsers que são usados atualmente. Programar a interface de um site é bem diferente do que programar numa linguagem server side onde, se você esquecer um “;” ou não fechar um if, seu código nem roda. Programando no lado do cliente, diversos erros de html são “consertados” pela maioria dos browsers. Ou seja, você esquece de fechar uma tag, ou coloca um <h1> dentro de um <a> no seu browser e aparece tudo ok, mas é errado.

Ok, mesmo que o site seja testado no Firefox, ie6, ie7, Safari, Chrome e Opera, quem garante que os navegadores Netscape 6.0, Ant Galio 3.1, Blaze 6.0 ou o Playstation 3 5.0 vão interpretar corretamente também?

E é por isso que devemos validar o código. Existem diversas ferramentas para validação de código.

A mais importante delas, creio que é o HTML validator, uma extensão de firefox. Além de válidar seu (x)html, ele diz o que está errado e como consertar o que é ótimo pra quem está começando a programar interface.
html validator

Para validar CSS, a melhor opção é o CSS validator da W3C. Infelizmente não existe (ou não conheço) nenhuma opção desktop. Mas mesmo assim, vale a pena utilizar.
CSS validator

copyJá o link-checker é um validador de links que analisa seu site e procura por links quebrados, muito útil. A análise é BEM completa, e demora muito tempo, afinal ele checa tudo. Analisando a home do TidBits ele demorou 286 segundos e checou mais de 200 arquivos.
link checker

Outras ferramentas como o firebug, ajudam bastante na codificação, principalmente pra detectar erros de JavaScript. E finalmente, para garantir a acessibilidade do seu site, existe diversas opções, duas em português: o Da Silva e o ASES desenvolvido pelo governo eletrônico.

bookmark bookmark bookmark bookmark bookmark bookmark bookmark

Nov 19

JS-909 - Uma mesa de som para fazer músicas em javascript

Cameron Adams fez um experimento divertido e o chamou de JS-909, uma mesa de som para construir batidas de músicas. Ela produz som sem utilizar flash, o javascript checa se seu browser é capaz de produzir som, coloca as musicas pra tocar e também inclue um pequeno script para visualizar as batidas em gráficos psicodélicos, no estilo windows media player.

js-909 - Uma mesa de som para fazer musicas em javascript

Como não existe um padrão nos browsers para acessar os controles de som ( para, tocar, voltar ). Ele usou a interface de javascript do quicktime para tocar os sons.

veja mais tidbitsOs sons são chamados pela tag <embed> e num determinado evento é criado o embed no dom via javascript.

Veja o exemplo rodando aqui.

bookmark bookmark bookmark bookmark bookmark bookmark bookmark