<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Como Criar Sites &#124; Aprenda grátis como fazer seu site &#187; posição</title>
	<atom:link href="http://www.comocriarsites.com/tag/posicao/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.comocriarsites.com</link>
	<description>Aprenda a criar sites, html e manhas para fazer seu site.</description>
	<lastBuildDate>Wed, 06 Jan 2010 12:51:19 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Pegando Posição Absoluta de um Elemento HTML (Javascript)</title>
		<link>http://www.comocriarsites.com/javascript/pegando-posicao-absoluta-de-um-elemento-html-javascript/</link>
		<comments>http://www.comocriarsites.com/javascript/pegando-posicao-absoluta-de-um-elemento-html-javascript/#comments</comments>
		<pubDate>Mon, 02 Mar 2009 06:36:42 +0000</pubDate>
		<dc:creator>Raoni Novellino</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[absoluta]]></category>
		<category><![CDATA[criar site]]></category>
		<category><![CDATA[fazer site]]></category>
		<category><![CDATA[getElementById]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[posição]]></category>
		<category><![CDATA[site]]></category>

		<guid isPermaLink="false">http://www.comocriarsites.com/?p=23</guid>
		<description><![CDATA[Uma maneira simples de saber qual a posição absoluta de um elemento HTML (posição onde o elemento está em relação a área de exibição de páginas do navegador), é usando um algorítimo em Javascript. Esse algorítimo pega a posição relativa do elemento, e depois a posição relativa do elemento pai (parent), depois do pai do [...]]]></description>
			<content:encoded><![CDATA[<p><span style="font-size: xx-large;">U</span>ma maneira simples de saber qual a posição absoluta de um elemento HTML (posição onde o elemento está em relação a área de exibição de páginas do navegador), é usando um algorítimo em <em>Javascript</em>. Esse algorítimo pega a posição relativa do elemento, e depois a posição relativa do elemento <em>pai</em> (parent), depois do <em>pai</em> do <em>pai</em> e assim até um elemento não ter um elemento <em>pai</em>.</p>
<p>O algorítimo:</p>
<div style="background-color: #FFFFFF; overflow-x: auto;">
<pre>function findPosX(obj)
{
	var curleft = 0;
	if(obj.offsetParent)
		while(1)
		{
			curleft += obj.offsetLeft;
			if(!obj.offsetParent)
				break;
			obj = obj.offsetParent;
		}
	else if(obj.x)
		curleft += obj.x;

	return curleft;
}

function findPosY(obj)
{
	var curtop = 0;
	if(obj.offsetParent)
		while(1)
		{
			curtop += obj.offsetTop;
			if(!obj.offsetParent)
				break;
			obj = obj.offsetParent;
		}
	else if(obj.y)
		curtop += obj.y;

	return curtop;
}</pre>
</div>
<p>São dois algorítimos, um para a posição horizontal (<em>findPosX</em>) e outro para a posição vertical (<em>findPosY</em>). Os dois recebem um atributo de nome <em>obj</em> que é o objeto do elemento que você quer saber a posição e retornam um inteiro, que é a posição do elemento no documento HTML.</p>
<p>As funções do <em>Javascript</em> <strong><em>offsetLeft</em></strong> e <strong><em>offsetTop</em></strong>, retornam um inteiro que é a distântcia em pixels entre o elemento passado como paramatro e o elemento pai desse elemento passado comoparametro. A diferença entre as duas é que a primeira (<strong><em>offsetLeft</em></strong>), retorna a distância da esquerda entre o elemento e seu elemento pai, e a segunda (<strong><em>offsetTop</em></strong>), retorna a distância de cima entre o elemento e seu elemento pai.</p>
<p>Abaixo um exemplo de uso:</p>
<div style="background-color: #FFFFFF; overflow-x: auto;">
<pre>&lt;html&gt;
&lt;head&gt;
	&lt;title&gt;Teste de Posicionamento em Javascript&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;

&lt;script language="JavaScript"&gt;

function findPosX(obj)
{
  var curleft = 0;
  if(obj.offsetParent)
      while(1)
      {
        curleft += obj.offsetLeft;
        if(!obj.offsetParent)
          break;
        obj = obj.offsetParent;
      }
  else if(obj.x)
      curleft += obj.x;
  return curleft;
}

function findPosY(obj)
{
	var curtop = 0;
	if(obj.offsetParent)
		while(1)
		{
			curtop += obj.offsetTop;
			if(!obj.offsetParent)
				break;
			obj = obj.offsetParent;
		}
	else if(obj.y)
		curtop += obj.y;

	return curtop;
}

&lt;/script&gt;

&lt;table&gt;
	&lt;tr&gt;
		&lt;td&gt;Linha 1&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt;Linha 2&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt;
		&lt;table&gt;
			&lt;tr&gt;
				&lt;td id="td_posicao"&gt;Quero saber a posicao desse TD&lt;/td&gt;
			&lt;/tr&gt;
		&lt;/table&gt;
		&lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;

&lt;script language="JavaScript"&gt;

var td_pos_obj = document.getElementById('td_posicao');

var x = findPosX(td_pos_obj);
var y = findPosY(td_pos_obj);

alert('pos x: ' + x + ' - pos y: ' + y);

&lt;/script&gt;

&lt;/body&gt;
&lt;/html&gt;</pre>
</div>
<p>Algumas explicações:</p>
<p>A linha &#8220;<span style="color: #000080;"><em>var td_pos_obj = document.getElementById(&#8217;td_posicao&#8217;);</em></span>&#8221; faz a variável <em>td_pos_obj</em> ficar identificando o elemento que e quero saber a posição. Pode ver que na tag <em><strong>&lt;td&gt;</strong></em> que eu quero saber a posição, tem um atributo <em>id</em>, com valor igual a <em>td_posicao</em>. Isso serve para eu identificar o elemento e depois poder saber qual ele é facilmente utilizando a função <em>getElementById</em> do Javascript. Essa função é boa porque funciona tanto no IE (acho que pelo menos no 6 e no 7) e no Firefox (testado na versao 2 e 3).</p>
<p>Se você quer saber a diferênça entre os valores do estilo (style) <em>position</em>, acesse: <a title="CSS Style Position: Diferença entre Relative, Absolute e Static" href="http://www.comocriarsites.com/html-css/css-style-position-diferenca-entre-relative-absolute-e-static/">CSS Style Position: Diferença entre Relative, Absolute e Static</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.comocriarsites.com/javascript/pegando-posicao-absoluta-de-um-elemento-html-javascript/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
