Featured Posts

Hands-on HTML 5 2010 O desenvolvimento web está passando por mais uma mudança, evoluindo para acompanhar o ritmo dos negócios e sistemas das grandes empresas baseadas em web, como Google e Yahoo. Com os novos navegadores...

Read more

The Developer's Conference 2010 Esta é a 4a edição do The Developer's Conference, e a Globalcode reuniu toda sua rede de parceiros e profissionais para criar o evento mais completo do ano, sem perder a profundidade necessária...

Read more

Café com Browser 2010 Conversa sobre HTML5 é demanda que já se apresentava desde ano passado pelas organizações brasileiras filiadas ao W3C e por parceiros nas atividades do escritório, principalmente organizações...

Read more

Codeshow 2010 O Visie Codeshow é um evento num formato novo, em que não há palestras. Você vai assistir à construção de uma aplicação em um dia, a partir do zero, usando ferramentas como Git, HTML5, web2py...

Read more

Estrutura Básica de uma página XHTML/HTML Vamos falar sobre os elementos básicos para iniciar uma página HTML <!DOCTYPE> <html>    <head>       <title>          TiloWR       </title>    </head> <body></body> </html> <!DOCTYPE>...

Read more

Retornando largura com clientWidth (Javascript).

Posted by Tilo | Posted in JavaScript, jQuery & Ajax | Posted on 06-01-2010

Tags:, ,

0

Um tempo atrás montei um carrossel que trazia um desafio bem legal, precisava de um tamanho fixo para funcionar, porém, eu não sabia quantos itens teriam dentro de cada carrossel.

No começo foi meio complicado, mas cheguei a uma solução bem simples com javascript usando a propriedade clientWidth.

No exemplo tínhamos um numero x de LI e a UL deveria ter um tamanho fixo para o carrossel funcionar, o tamanho de LI é fixo, a idéia é:

Retornar o numero de LI dentro da UL, multiplicar a quantidade de LI pelo tamanho de UL, simples não é?

function AtivaCarrossel(id)
{
	var cr = document.getElementById(id);
	window['carrossel_'+id] = cr;
	cr.lis = cr.getElementsByTagName("li");
	cr.tamanhoUl = cr.lis[0].clientWidth * cr.lis.length;
	cr.ul.style.width = cr.tamanhoUl + "px";
}

Entendendo:

Pego o carrossel que vamos usar:

var cr = document.getElementById(id);

Crio uma variável pra ele:

window['carrossel_'+id] = cr;

Monto um Array com as LI dentro dele:

cr.lis = cr.getElementsByTagName("li");

Uso a largura da primeira LI e multiplico pela quantidade de itens dentro do array:

cr.tamanhoUl = cr.lis[0].clientWidth * cr.lis.length;

E finalmente aplicamos com um estilo em linha a largura no carrossel:

cr.ul.style.width = cr.tamanhoUl + "px";

IMPORTANTE: a propriedade clientWidth não retorna margem ou borda, apenas a largura “liquida”!

Leia Também:

Write a comment

Spam Protection by WP-SpamFree