<?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>SpinOneSolutions &#187; JavaScript</title>
	<atom:link href="http://www.spinonesolutions.com/tag/javascript/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.spinonesolutions.com</link>
	<description>I waste my time so that you don't have to...</description>
	<lastBuildDate>Mon, 16 May 2011 17:01:16 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>JavaScript reports 0 (Zero) Height and Width for hidden image</title>
		<link>http://www.spinonesolutions.com/2009/07/javascript-reports-0-zero-height-and-width-for-hidden-image/</link>
		<comments>http://www.spinonesolutions.com/2009/07/javascript-reports-0-zero-height-and-width-for-hidden-image/#comments</comments>
		<pubDate>Thu, 09 Jul 2009 23:00:14 +0000</pubDate>
		<dc:creator>Will Wright</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[FF]]></category>
		<category><![CDATA[FireFox]]></category>
		<category><![CDATA[IE]]></category>
		<category><![CDATA[Internet Explorer]]></category>

		<guid isPermaLink="false">http://www.spinonesolutions.com/?p=298</guid>
		<description><![CDATA[The Problem: I was recently modifying an image gallery for a customer that used a pretty slick JavaScript Carousel for the presentation.  The Basic idea was that the images were all outputted within an LI, hidden via CSS, and then the JavaScript carousel used that LI as the datasource to build the gallery. Everything worked [...]]]></description>
			<content:encoded><![CDATA[<h3>The Problem:</h3>
<p>I was recently modifying an image gallery for a customer that used a pretty slick JavaScript Carousel for the presentation.  The Basic idea was that the images were all outputted within an LI, hidden via CSS, and then the JavaScript carousel used that LI as the datasource to build the gallery.</p>
<p>Everything worked great except that the images were being re-sized and their aspect ratio was not being maintained.  The solution was to obtain their original size so that the aspect ratio could be computed, and then applied during the re-sizing process.</p>
<p>The issue I ran into is that JavaScript (jQuery) always reported that the height and width was 0 (zero) for the images.</p>
<p>After some digging I found that elements marked &#8220;display:none&#8221; don&#8217;t <em>have</em> to load their hidden contents into the DOM and therefore there was no IMG object for JavaScript to report on!</p>
<div id="attachment_323" class="wp-caption aligncenter" style="width: 710px"><a href="http://www.spinonesolutions.com/wp-content/uploads/2009/07/ie11.jpg"><img class="size-medium wp-image-323" title="IE" src="http://www.spinonesolutions.com/wp-content/uploads/2009/07/ie11-700x525.jpg" alt="IE" width="700" height="525" /></a><p class="wp-caption-text">IE</p></div>
<div id="attachment_324" class="wp-caption aligncenter" style="width: 710px"><a href="http://www.spinonesolutions.com/wp-content/uploads/2009/07/ie21.jpg"><img class="size-medium wp-image-324" title="IE Display None" src="http://www.spinonesolutions.com/wp-content/uploads/2009/07/ie21-700x525.jpg" alt="IE Display None" width="700" height="525" /></a><p class="wp-caption-text">IE Display None</p></div>
<div id="attachment_325" class="wp-caption aligncenter" style="width: 710px"><a href="http://www.spinonesolutions.com/wp-content/uploads/2009/07/moz11.jpg"><img class="size-medium wp-image-325" title="Mozilla Display None" src="http://www.spinonesolutions.com/wp-content/uploads/2009/07/moz11-700x521.jpg" alt="Mozilla Display None" width="700" height="521" /></a><p class="wp-caption-text">Mozilla Display None</p></div>
<pre class="html" name="code">&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"&gt;
&lt;html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" dir="ltr"&gt;

&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"&gt;
&lt;title&gt;Untitled Document&lt;/title&gt;
&lt;style type="text/css" media="screen"&gt;
 #myImage {
 border:1px solid red;
 }
 .hidden {
 display:none;
 float:left;
 margin:10px;
 }
&lt;/style&gt;

&lt;script type="text/javascript" src="scripts/jquery-1.3.2.min.js"&gt;&lt;/script&gt;
&lt;script type="text/javascript"&gt;
$(document).ready(function(){
 var imgHeight = $("#myImage").height();
 var imgWidth = $("#myImage").width();
 alert("Height = " + imgHeight + "px\nWidth = " + imgWidth + "px");

});
&lt;/script&gt;

&lt;/head&gt;
&lt;body&gt;

 &lt;p&gt;
 Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam hendrerit mauris quis ante mollis sit amet dapibus erat semper. Nunc vitae nisi sapien, at ultricies neque. Ut interdum eleifend iaculis. Ut a auctor turpis. Sed in neque eget nulla vestibulum porttitor. Donec urna magna, feugiat vel interdum vitae, vestibulum vel nibh. Integer pellentesque bibendum pulvinar. Praesent orci turpis, porttitor id laoreet eget, fringilla in tortor. Nam sollicitudin mi vitae odio luctus nec fringilla mauris rutrum. Aenean tristique mi felis. Fusce eget justo eros, vel rhoncus dui.
 &lt;div&gt;&lt;img id="myImage" src="images/lol_cat.jpg" /&gt;&lt;/div&gt;
 &lt;/p&gt;
 &lt;p&gt;
 Curabitur feugiat ornare sapien, eu placerat magna aliquet placerat. Curabitur at vestibulum felis. Maecenas sagittis, lorem ac imperdiet mattis, nisi diam porta nibh, vel molestie odio turpis ut nisl. In hac habitasse platea dictumst. Quisque augue massa, tempor nec molestie id, facilisis non tortor. Pellentesque dapibus, massa a ornare placerat, erat urna blandit justo, sagittis sodales lectus odio et lacus. Suspendisse congue ipsum quis massa ornare vel vehicula sapien gravida. Mauris pretium elit ut mi malesuada pellentesque. Phasellus pulvinar nulla at sem eleifend ac sollicitudin est tincidunt. Proin lorem urna, viverra quis gravida in, scelerisque at dui.
 &lt;/p&gt;
 &lt;p&gt;
 Nullam et erat vitae lacus porttitor pharetra. Nullam tincidunt tempor fermentum. Nulla rutrum, urna ac dapibus consequat, nisl lectus commodo arcu, ultrices auctor ante elit eget enim. Etiam enim massa, volutpat in venenatis mattis, placerat id sapien. Duis vel ante sit amet neque accumsan sollicitudin ac consequat sapien. Proin dapibus rhoncus libero vitae tristique. Quisque at neque in metus sodales vestibulum. Cras lacinia eleifend sapien, a pellentesque arcu pellentesque at. In hac habitasse platea dictumst. Ut porta sodales euismod. Donec ligula arcu, aliquet sed pretium vitae, aliquam quis lorem. Morbi fermentum semper volutpat. Sed porttitor posuere augue et imperdiet. Cras gravida diam at diam accumsan accumsan. Duis turpis erat, mollis ac tempor eu, elementum faucibus mi. Fusce et urna id dui pharetra consectetur. Nulla facilisis feugiat libero, eu ullamcorper purus placerat sed. Donec nisi sem, volutpat eu pellentesque non, consequat eget nibh.
 &lt;/p&gt;

&lt;/body&gt;
&lt;/html&gt;</pre>
<h3>The Solution:</h3>
<p>The solution to this issue is to alter the method in which we hide the content.  Using &#8220;visibility:hidden&#8221; works; the height and width are reported correctly, but the browser allocates space for the content which &#8220;breaks&#8221; the layout.</p>
<div id="attachment_326" class="wp-caption aligncenter" style="width: 710px"><a href="http://www.spinonesolutions.com/wp-content/uploads/2009/07/ie31.jpg"><img class="size-medium wp-image-326" title="IE Visibility Hidden" src="http://www.spinonesolutions.com/wp-content/uploads/2009/07/ie31-700x521.jpg" alt="IE Visibility Hidden" width="700" height="521" /></a><p class="wp-caption-text">IE Visibility Hidden</p></div>
<pre class="html" name="code">&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"&gt;
&lt;html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" dir="ltr"&gt;

&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"&gt;
&lt;title&gt;Untitled Document&lt;/title&gt;
&lt;style type="text/css" media="screen"&gt;
 #myImage {
 border:1px solid red;
 }
 .hidden {
 visibility:hidden;
 float:left;
 margin:10px;
 }
&lt;/style&gt;

&lt;script type="text/javascript" src="scripts/jquery-1.3.2.min.js"&gt;&lt;/script&gt;
&lt;script type="text/javascript"&gt;
$(document).ready(function(){
 var imgHeight = $("#myImage").height();
 var imgWidth = $("#myImage").width();
 alert("Height = " + imgHeight + "px\nWidth = " + imgWidth + "px");

});
&lt;/script&gt;

&lt;/head&gt;
&lt;body&gt;

 &lt;p&gt;
 Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam hendrerit mauris quis ante mollis sit amet dapibus erat semper. Nunc vitae nisi sapien, at ultricies neque. Ut interdum eleifend iaculis. Ut a auctor turpis. Sed in neque eget nulla vestibulum porttitor. Donec urna magna, feugiat vel interdum vitae, vestibulum vel nibh. Integer pellentesque bibendum pulvinar. Praesent orci turpis, porttitor id laoreet eget, fringilla in tortor. Nam sollicitudin mi vitae odio luctus nec fringilla mauris rutrum. Aenean tristique mi felis. Fusce eget justo eros, vel rhoncus dui.
 &lt;div&gt;&lt;img id="myImage" src="images/lol_cat.jpg" /&gt;&lt;/div&gt;
 &lt;/p&gt;
 &lt;p&gt;
 Curabitur feugiat ornare sapien, eu placerat magna aliquet placerat. Curabitur at vestibulum felis. Maecenas sagittis, lorem ac imperdiet mattis, nisi diam porta nibh, vel molestie odio turpis ut nisl. In hac habitasse platea dictumst. Quisque augue massa, tempor nec molestie id, facilisis non tortor. Pellentesque dapibus, massa a ornare placerat, erat urna blandit justo, sagittis sodales lectus odio et lacus. Suspendisse congue ipsum quis massa ornare vel vehicula sapien gravida. Mauris pretium elit ut mi malesuada pellentesque. Phasellus pulvinar nulla at sem eleifend ac sollicitudin est tincidunt. Proin lorem urna, viverra quis gravida in, scelerisque at dui.
 &lt;/p&gt;
 &lt;p&gt;
 Nullam et erat vitae lacus porttitor pharetra. Nullam tincidunt tempor fermentum. Nulla rutrum, urna ac dapibus consequat, nisl lectus commodo arcu, ultrices auctor ante elit eget enim. Etiam enim massa, volutpat in venenatis mattis, placerat id sapien. Duis vel ante sit amet neque accumsan sollicitudin ac consequat sapien. Proin dapibus rhoncus libero vitae tristique. Quisque at neque in metus sodales vestibulum. Cras lacinia eleifend sapien, a pellentesque arcu pellentesque at. In hac habitasse platea dictumst. Ut porta sodales euismod. Donec ligula arcu, aliquet sed pretium vitae, aliquam quis lorem. Morbi fermentum semper volutpat. Sed porttitor posuere augue et imperdiet. Cras gravida diam at diam accumsan accumsan. Duis turpis erat, mollis ac tempor eu, elementum faucibus mi. Fusce et urna id dui pharetra consectetur. Nulla facilisis feugiat libero, eu ullamcorper purus placerat sed. Donec nisi sem, volutpat eu pellentesque non, consequat eget nibh.
 &lt;/p&gt;

&lt;/body&gt;
&lt;/html&gt;</pre>
<p>Almost there.  All we need to do now is get rid of the space that&#8217;s been allocated for the element.  There are a number of different strategies for doing this and you&#8217;ll probably have to pick a particular one based on the other attributes of your layout.  I&#8217;m just going to use &#8220;postition:absolute&#8221; because it&#8217;s an easy one liner.</p>
<div id="attachment_327" class="wp-caption aligncenter" style="width: 710px"><a href="http://www.spinonesolutions.com/wp-content/uploads/2009/07/ie41.jpg"><img class="size-medium wp-image-327" title="IE Visibility Hidden Position Absolute" src="http://www.spinonesolutions.com/wp-content/uploads/2009/07/ie41-700x525.jpg" alt="IE Visibility Hidden Position Absolute" width="700" height="525" /></a><p class="wp-caption-text">IE Visibility Hidden Position Absolute</p></div>
<pre class="html" name="code">&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"&gt;
&lt;html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" dir="ltr"&gt;

&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"&gt;
&lt;title&gt;Untitled Document&lt;/title&gt;
&lt;style type="text/css" media="screen"&gt;
 #myImage {
 border:1px solid red;
 }
 .hidden {
 visibility:hidden;
 float:left;
 margin:10px;
 position:absolute;
 }
&lt;/style&gt;

&lt;script type="text/javascript" src="scripts/jquery-1.3.2.min.js"&gt;&lt;/script&gt;
&lt;script type="text/javascript"&gt;
$(document).ready(function(){
 var imgHeight = $("#myImage").height();
 var imgWidth = $("#myImage").width();
 alert("Height = " + imgHeight + "px\nWidth = " + imgWidth + "px");

});
&lt;/script&gt;

&lt;/head&gt;
&lt;body&gt;

 &lt;p&gt;
 Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam hendrerit mauris quis ante mollis sit amet dapibus erat semper. Nunc vitae nisi sapien, at ultricies neque. Ut interdum eleifend iaculis. Ut a auctor turpis. Sed in neque eget nulla vestibulum porttitor. Donec urna magna, feugiat vel interdum vitae, vestibulum vel nibh. Integer pellentesque bibendum pulvinar. Praesent orci turpis, porttitor id laoreet eget, fringilla in tortor. Nam sollicitudin mi vitae odio luctus nec fringilla mauris rutrum. Aenean tristique mi felis. Fusce eget justo eros, vel rhoncus dui.
 &lt;div&gt;&lt;img id="myImage" src="images/lol_cat.jpg" /&gt;&lt;/div&gt;
 &lt;/p&gt;
 &lt;p&gt;
 Curabitur feugiat ornare sapien, eu placerat magna aliquet placerat. Curabitur at vestibulum felis. Maecenas sagittis, lorem ac imperdiet mattis, nisi diam porta nibh, vel molestie odio turpis ut nisl. In hac habitasse platea dictumst. Quisque augue massa, tempor nec molestie id, facilisis non tortor. Pellentesque dapibus, massa a ornare placerat, erat urna blandit justo, sagittis sodales lectus odio et lacus. Suspendisse congue ipsum quis massa ornare vel vehicula sapien gravida. Mauris pretium elit ut mi malesuada pellentesque. Phasellus pulvinar nulla at sem eleifend ac sollicitudin est tincidunt. Proin lorem urna, viverra quis gravida in, scelerisque at dui.
 &lt;/p&gt;
 &lt;p&gt;
 Nullam et erat vitae lacus porttitor pharetra. Nullam tincidunt tempor fermentum. Nulla rutrum, urna ac dapibus consequat, nisl lectus commodo arcu, ultrices auctor ante elit eget enim. Etiam enim massa, volutpat in venenatis mattis, placerat id sapien. Duis vel ante sit amet neque accumsan sollicitudin ac consequat sapien. Proin dapibus rhoncus libero vitae tristique. Quisque at neque in metus sodales vestibulum. Cras lacinia eleifend sapien, a pellentesque arcu pellentesque at. In hac habitasse platea dictumst. Ut porta sodales euismod. Donec ligula arcu, aliquet sed pretium vitae, aliquam quis lorem. Morbi fermentum semper volutpat. Sed porttitor posuere augue et imperdiet. Cras gravida diam at diam accumsan accumsan. Duis turpis erat, mollis ac tempor eu, elementum faucibus mi. Fusce et urna id dui pharetra consectetur. Nulla facilisis feugiat libero, eu ullamcorper purus placerat sed. Donec nisi sem, volutpat eu pellentesque non, consequat eget nibh.
 &lt;/p&gt;

&lt;/body&gt;
&lt;/html&gt;</pre>
<p>All done!  We now have a hidden element and jQuery is reporting the correct dimensions for the img within it!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.spinonesolutions.com/2009/07/javascript-reports-0-zero-height-and-width-for-hidden-image/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

