<?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>Leandro Garcia &#187; Absoluto</title>
	<atom:link href="http://www.leandrogarcia.com/blog/tag/absoluto/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.leandrogarcia.com</link>
	<description></description>
	<lastBuildDate>Thu, 02 Sep 2010 16:52:35 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Offset, descobrindo o posicionamento absoluto de um elemento</title>
		<link>http://www.leandrogarcia.com/blog/offset-descobrindo-o-posicionamento-absoluto-de-um-elemento/</link>
		<comments>http://www.leandrogarcia.com/blog/offset-descobrindo-o-posicionamento-absoluto-de-um-elemento/#comments</comments>
		<pubDate>Tue, 03 Mar 2009 17:23:38 +0000</pubDate>
		<dc:creator>leandro garcia</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Absolute]]></category>
		<category><![CDATA[Absoluto]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Java Script]]></category>
		<category><![CDATA[Offset]]></category>
		<category><![CDATA[Posicionamento]]></category>

		<guid isPermaLink="false">http://www.leandrogarcia.com/blog/?p=77</guid>
		<description><![CDATA[Anteriormente escrevi sobre maneiras de otimizar o carregamento das páginas.
Umas destas maneiras, é colocar todas as chamadas de scripts na parte de baixo da página, mas aí tem um problema. Aqui na empresa as publicidades são dinamicas e exibidas através de script, logo, para eu exibir um superbanner na posição correta, eu deveria chamar o [...]]]></description>
			<content:encoded><![CDATA[<p>Anteriormente escrevi sobre maneiras de otimizar o carregamento das páginas.</p>
<p>Umas destas maneiras, é colocar todas as chamadas de scripts na parte de baixo da página, mas aí tem um problema. Aqui na empresa as publicidades são dinamicas e exibidas através de script, logo, para eu exibir um superbanner na posição correta, eu deveria chamar o JS externo no head da página, mas é oposto ao que devemos práticar aqui.</p>
<p>Alguns de você dirão, basta que você coloque um posicionamento reletivo(relative) na div container e coloque a publicidade na parte do código e posicione a div com a publicidade em absoluto(absolute).</p>
<p>Isso funciona, desde que a publicidade seja sempre no mesmo local, mas se a publicidade é um island, por exemplo que é no meio do conteúdo, o que fazer?</p>
<p>É aí que surge o Offset da página.</p>
<p>Com o Offse, Você consegue descobrir onde exatamente, em Pixels, está o elemebto que você quer encontrar.</p>
<p>Por exemplo. Eu tenho um campo de busca e quero ao clicar nele, abrir um suggest, é com o Offset.</p>
<p>Ou no caso do Banner, como eu fiz:</p>
<p>Criei uma div com o <strong>id bannerposicao </strong>nessa div eu joguei o tamanho do banner (height:240px;width:120px). Com isso eu criei um espaço vazio que eu posso preencher porexemplo com o endereço da central de relacionamentos (bom para efeito de SEO).</p>
<p>No final do código eu criei uma outra div com o <strong>id banner </strong>e joguei (via CSS) o tamanho da publicidade (height:240px;width:120px) e a posicionei como absoluto (position:absolute).</p>
<p>Depois disso, eu usei a função abaixo para posicionar a publicidade no lugar dela.</p>
<p><strong>HTML</strong></p>
<pre class="brush: xml;">
&lt;div id=&quot;bannerposicao&quot;&gt; &lt;a href=&quot;http://www.leandrogarcia.com/blog&quot;&gt; Blog do Garcia &lt;/a&gt; &lt;/div&gt;
&lt;br class=&quot;clear&quot; /&gt;
&lt;div id=&quot;corpo&quot;&gt;Corpo&lt;/div&gt;
Aqui abaixo esta o banner
&lt;div id=&quot;banner&quot;&gt; &lt;img src=&quot;http://www.leandrogarcia.com/blog/wp-content/uploads/2009/03/puboffset.gif&quot; alt=&quot;publicidade&quot; /&gt; &lt;/div&gt;
&lt;br class=&quot;clear&quot; /&gt;
&lt;button onclick=&quot;alert(document.getElementById('bannerposicao').offsetHeight);&quot;&gt; offsetHeight &lt;/button&gt;
&lt;button onclick=&quot;alert(document.getElementById('bannerposicao').offsetWidth);&quot;&gt; offsetWidth &lt;/button&gt;
&lt;button onclick=&quot;alert(document.getElementById('bannerposicao').offsetLeft);&quot;&gt; offsetLeft &lt;/button&gt;
&lt;button onclick=&quot;alert(document.getElementById('bannerposicao').offsetTop);&quot;&gt; offsetTop &lt;/button&gt;
</pre>
<p><strong>CSS</strong></p>
<pre class="brush: css;">
#bannerposicao{float:left; width:120px; height:240px; background:#ccc}
#banner{display:block; position:absolute; width:120px; height:240px; background:#ccc}
#corpo{clear:both; height:400px}
</pre>
<p><strong>JS</strong></p>
<pre class="brush: jscript;">
function exibepublicidade(){
var $arg = document.getElementById('bannerposicao'); //Essa linha pega os dados da div
var $curTop=0,$curLeft=0,$curWidth=0; // Essa, cria as variáveis de largura, left e top
if($arg.offsetParent) {
do {
$curLeft += $arg.offsetLeft;
$curTop += $arg.offsetTop;
}while($arg = $arg.offsetParent)
} //O if acima, pega a posição da Div em relação à janela
var $posicao = document.getElementById('banner');
$posicao.style.top = $curTop + &quot;px&quot;;
$posicao.style.left = $curLeft + &quot;px&quot;;
}
exibepublicidade();
</pre>
<p>Com o Offset conseguimos pegar a Altura, a Largua a Posição Left e Top do elemento.</p>
<p>Altura (offsetHeight), Largura (offsetWidth), Left (offsetLeft) e Top(offsetTop);</p>
<p><a title="Offset" href="http://tutoriais.leandrogarcia.com/offset/offset.html" target="_blank">Veja o exemplo</a></p>
<p><a href="http://tutoriais.leandrogarcia.com/offset/offset.zip" target="_blank">Download</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.leandrogarcia.com/blog/offset-descobrindo-o-posicionamento-absoluto-de-um-elemento/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
