<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" xml:lang="en" xml:base="http://elasticss.com/wp-atom.php">
	<title type="text">Elastic CSS Framework</title>
	<subtitle type="text">A simple, yet comple, and un-obstrusive CSS Framework.</subtitle>

	<updated>2009-10-21T16:33:47Z</updated>
	<generator uri="http://wordpress.org/" version="2.7.1">WordPress</generator>

	<link rel="alternate" type="text/html" href="http://elasticss.com" />
	<id>http://elasticss.com/feed/atom/</id>
	

			<link rel="self" href="http://feeds.feedburner.com/Elasticss" type="application/atom+xml" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><entry>
		<author>
			<name>Fernando Trasviña</name>
						<uri>http://twitter.com/azendal</uri>
					</author>
		<title type="html"><![CDATA[New Ruby Gem to install Elastic on Rails]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Elasticss/~3/m48KCmwlCkI/" />
		<id>http://elasticss.com/?p=277</id>
		<updated>2009-10-21T16:33:47Z</updated>
		<published>2009-10-21T15:16:04Z</published>
		<category scheme="http://elasticss.com" term="Elastic" /><category scheme="http://elasticss.com" term="General" /><category scheme="http://elasticss.com" term="Ruby On Rails" />		<summary type="html"><![CDATA[Our good friend Ivan Torres @mexpolk created a gem to install Elastic in rails, and it makes the process of installing Elastic so easy as &#8220;elasticss&#8221;, check it out at  http://github.com/mexpolk/elastic_rails. The current version has the latest version of elastic (2.0.2).
]]></summary>
		<content type="html" xml:base="http://elasticss.com/new-ruby-gem-to-install-elastic-on-rails/"><![CDATA[<p>Our good friend Ivan Torres @mexpolk created a gem to install Elastic in rails, and it makes the process of installing Elastic so easy as &#8220;elasticss&#8221;, check it out at  <a href="http://github.com/mexpolk/elastic_rails">http://github.com/mexpolk/elastic_rails</a>. The current version has the latest version of elastic (2.0.2).</p>
]]></content>
		<link rel="replies" type="text/html" href="http://elasticss.com/new-ruby-gem-to-install-elastic-on-rails/#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://elasticss.com/new-ruby-gem-to-install-elastic-on-rails/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://elasticss.com/new-ruby-gem-to-install-elastic-on-rails/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Sergio</name>
						<uri>http://twitter.com/sgarza</uri>
					</author>
		<title type="html"><![CDATA[WorkshopCamp Mexico]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Elasticss/~3/kscKAJ-UQUc/" />
		<id>http://elasticss.com/?p=275</id>
		<updated>2009-10-13T15:17:27Z</updated>
		<published>2009-10-13T15:17:27Z</published>
		<category scheme="http://elasticss.com" term="General" />		<summary type="html"><![CDATA[El próximo 25 de octubre se llevará a cabo el Workshop Camp México. Para todos aquellos que disfrutan de los BarCamps pero que a veces requieren de más de 15 minutos para su ponencia - o para aprender bien - este en particular será un conjunto de talleres impartidos simultáneamente con una duración de 3 [...]]]></summary>
		<content type="html" xml:base="http://elasticss.com/workshopcamp-mexico/"><![CDATA[<p>El próximo 25 de octubre se llevará a cabo el <a href="http://barcamp.org/WorkshopCampMexico">Workshop Camp México</a>. Para todos aquellos que disfrutan de los BarCamps pero que a veces requieren de más de 15 minutos para su ponencia - o para aprender bien - este en particular será un conjunto de talleres impartidos simultáneamente con una duración de 3 horas.<br />
<strong></strong></p>
<h2><strong>¿Dónde y cuándo?</strong></h2>
<p><strong>Domingo 25 de octubre 2009.</strong><br />
Instalaciones de Ked, México, D.F.<br />
Av. Revolución No. 374, Col. San Pedor de los Pinos<br />
A una cuadra del metro San Pedro de los Pinos.</p>
<p>Para mayor información, visita la página oficial: <a href="http://barcamp.org/WorkshopCampMexico" target="_blank">http://barcamp.org/WorkshopCampMexico</a></p>
<p>Habra un taller sobre Elastic CSS Framework, es totalmente <strong>gratis</strong>, <strong>no faltes!</strong></p>
]]></content>
		<link rel="replies" type="text/html" href="http://elasticss.com/workshopcamp-mexico/#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://elasticss.com/workshopcamp-mexico/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://elasticss.com/workshopcamp-mexico/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Fernando Trasviña</name>
						<uri>http://twitter.com/azendal</uri>
					</author>
		<title type="html"><![CDATA[15 minutes Implementation of Rails-like ActiveRecord in JavaScript]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Elasticss/~3/Y1pwZSK7_Co/" />
		<id>http://elasticss.com/?p=263</id>
		<updated>2009-08-31T21:29:15Z</updated>
		<published>2009-08-31T20:56:59Z</published>
		<category scheme="http://elasticss.com" term="General" />		<summary type="html"><![CDATA[I was trying to design an api for a large application and of course i was using javaScript. So in order to try the feeling of the application design without code it i started up my firebug and started coding a simple active record. so this is what i tried in 15 mins aprox.
here is [...]]]></summary>
		<content type="html" xml:base="http://elasticss.com/15-minutes-implementation-of-rails-like-activerecord-in-javascript/"><![CDATA[<p>I was trying to design an api for a large application and of course i was using javaScript. So in order to try the feeling of the application design without code it i started up my firebug and started coding a simple active record. so this is what i tried in 15 mins aprox.</p>
<p>here is the result.<br />
<pre name="code" class="javascript">
Elastic = {
    Installation : (function(){
        var Installation           = function(){};
        Installation.prototype     = {
            domain_name: &#8216;x&#8217;,
            save: function(){
                this.id = Date.now() + Math.random();
                Elastic.Installation.installations.push(this);
                return this;
            }
        };
        Installation.installations = [];
        Installation.all           = function(){
            return Installation.installations;
        };
        Installation.new = function(){
            return new Installation();
        };
        Installation.find = function(id){
            var installations = Installation.installations;
            for(var i = 0; i &lt; installations.length; i++){
                 if(installations[i].id == id){
                     return installations[i];
                 }
            }
            return null;
        };
        Installation.find_by = function(key){
            var finder = function(value){
                var installations = Installation.installations;
                var found = [];
                for(var i = 0; i &lt; installations.length; i++){
                    if(installations[i][key] == value){
                        found.push(installations[i]);
                    }
                }
                return found;
            };
            return finder;
        };
        return Installation;
    })()
};
var installation_id = Elastic.Installation.new().save().id;
var installation_id = Elastic.Installation.new().save().id;
var y = Elastic.Installation.new();
var installations_on_x = Elastic.Installation.find_by('domain_name')('x');
installations_on_x
</pre></p>
<p>its kind of cool how JavaScript can be used to try things fast, and with some work you could actually do some serious coding.</p>
<div id="attachment_268" class="wp-caption aligncenter" style="width: 510px"><img class="size-full wp-image-268" title="screenshot-2" src="http://elasticss.com/wp-content/uploads/screenshot-2.png" alt="firebug as a fast IDE for testing" width="500" height="292" /><p class="wp-caption-text">firebug as a fast IDE for testing</p></div>
]]></content>
		<link rel="replies" type="text/html" href="http://elasticss.com/15-minutes-implementation-of-rails-like-activerecord-in-javascript/#comments" thr:count="2" />
		<link rel="replies" type="application/atom+xml" href="http://elasticss.com/15-minutes-implementation-of-rails-like-activerecord-in-javascript/feed/atom/" thr:count="2" />
		<thr:total>2</thr:total>
	<feedburner:origLink>http://elasticss.com/15-minutes-implementation-of-rails-like-activerecord-in-javascript/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Fernando Trasviña</name>
						<uri>http://twitter.com/azendal</uri>
					</author>
		<title type="html"><![CDATA[Determination of algorithms used for percentage based rounding divs on browsers and CSS Frameworks]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Elasticss/~3/HOFmNh6uZOY/" />
		<id>http://elasticss.com/?p=247</id>
		<updated>2009-08-28T14:47:13Z</updated>
		<published>2009-08-28T14:47:13Z</published>
		<category scheme="http://elasticss.com" term="Browsers" /><category scheme="http://elasticss.com" term="CSS" /><category scheme="http://elasticss.com" term="General" />		<summary type="html"><![CDATA[Introduction
In current HTML codification trends, developers prefer construct HTML documents, pages and applications based on columns, against the table technique of row based design. This techniques commonly include the use of floated divs.
With the complexity and inconsistency between browsers implementation of standards, and in order to provide more solid code bases, many developers targeted this [...]]]></summary>
		<content type="html" xml:base="http://elasticss.com/determination-of-algorithms-used-for-percentage-based-rounding-divs-on-browsers-and-css-frameworks/"><![CDATA[<h2>Introduction</h2>
<p>In current HTML codification trends, developers prefer construct HTML documents, pages and applications based on columns, against the table technique of row based design. This techniques commonly include the use of floated divs.</p>
<p>With the complexity and inconsistency between browsers implementation of standards, and in order to provide more solid code bases, many developers targeted this layout problems with CSS Frameworks, almost all of them based on columns, and with a very different set of approaches and features. The second generation of CSS Frameworks are a great advance in CSS code standardization, they are providing a richer set of features and a great flexibility to accomplish high complexity designs.</p>
<p>The first generation of CSS Frameworks provided fixed width capabilities, and very limited or null nesting capabilities. This frameworks increased the time of development but only at the very high level of design, leaving the developers alone for most of the job. Even when they helped a lot, there was not a complete solution.</p>
<p>In the second generation of CSS Frameworks we have complex nesting, layout width variability, and support for fixed, liquid, and elastic layouts, But the transition has not been by any means smooth.</p>
<p>Going from fixed, to liquid layouts present a very complex challenge to framework developers. The resulting width of columns are commonly float values, W3C has not created a description or a standard solution to solve this problem, leaving the solution up to the browser developers.</p>
<p>The purpose of this study is determine what solutions we currently have, from Browsers and CSS Frameworks.</p>
<h2>Hypothesis</h2>
<p>Making a wide set of test, varying the number of columns of a block, the algorithm used to get to the rendered layout can be determined by the analysis of the rendered pixels with an image  editor.</p>
<p>This study will help to determine if the current Elastic CSS Framework Engine is a good solution for sub pixel rounding, and how this engine compares to the browsers and other frameworks.</p>
<h2>Experiment Design</h2>
<p>A set of blocks of same width, every block, will vary the number of columns from 1 to 10, and an extra block of 15 columns, to test a non continuous block.</p>
<p>Every block is paired with a set of columns equal to the test created with Elastic CSS Framework to serve as control. All tests have a background of alternating pixel colors to simplify measurements.</p>
<p>All testing blocks must lead to a float measure for columns in order to test the rounding of those float values (183px).</p>
<p>The test were run on mayor browsers, and a screen shot will be taken.</p>
<p>Every column will have a 2px padding to provide clear separation between columns, and a solid background color to be measured with image editing software.</p>
<p>Measures will be done with gimp, and then the results will be analyzed in order to try to infer the underlying algorithm.</p>
<h2>Experimentation</h2>
<p>Test were run on different platforms, and browsers.</p>
<ul>
<li>Safari 4.0 Final (Mac)</li>
<li>Firefox 3.0 (Linux)</li>
<li>Opera 9.64 (Linux)</li>
<li>Internet Explorer 7 (Windows)</li>
</ul>
<h2>Results</h2>
<p>Special considerations, Elastic rounding algorithm leads to -1px on test for 10 columns and 1 column, this did not affected the analysis, and corrections were made at measurement.</p>
<ul>
<li><a href="images/Safari_4.0_mac.png">Safari 4.0 Final (Mac)</a></li>
<li><a href="images/firefox_3.0_linux.png">Firefox 3.0 (Linux)</a></li>
<li><a href="images/opera_9.64_linux.png">Opera 9.64 (Linux)</a></li>
<li><a href="images/ie_7_windows.png">Internet Explorer 7 (Windows)</a></li>
</ul>
<p>		<a href="/wp-content/uploads/subpixel.rounding/experiment/pixel_rounding.html">Try the test case on your browser</a></p>
<table border="0" cellspacing="0" cellpadding="1">
<tr>
<th>Column</th>
<th>1</th>
<th>2</th>
<th>3</th>
<th>4</th>
<th>5</th>
<th>6</th>
<th>7</th>
<th>8</th>
<th>9</th>
<th>10</th>
</tr>
<tr>
<th>10 Columns</th>
<td>14.7</td>
<td>14.7</td>
<td>14.7</td>
<td>14.7</td>
<td>14.7</td>
<td>14.7</td>
<td>14.7</td>
<td>14.7</td>
<td>14.7</td>
<td>14.7</td>
</tr>
<tr>
<th>Elastic 2.0</th>
<td>15</td>
<td>15</td>
<td>15</td>
<td>15</td>
<td>15</td>
<td>15</td>
<td>15</td>
<td>14</td>
<td>14</td>
<td>14</td>
</tr>
<tr>
<th>Firefox 3.0, 3.5</th>
<td>15</td>
<td>14</td>
<td>15</td>
<td>15</td>
<td>15</td>
<td>14</td>
<td>15</td>
<td>15</td>
<td>14</td>
<td>15</td>
</tr>
<tr>
<th>Safari</th>
<td>14</td>
<td>14</td>
<td>14</td>
<td>14</td>
<td>14</td>
<td>14</td>
<td>14</td>
<td>14</td>
<td>14</td>
<td>14</td>
</tr>
<tr>
<th>Opera</th>
<td>14</td>
<td>14</td>
<td>14</td>
<td>14</td>
<td>14</td>
<td>14</td>
<td>14</td>
<td>14</td>
<td>14</td>
<td>14</td>
</tr>
<tr>
<th>Internet Explorer</th>
<td>15</td>
<td>15</td>
<td>15</td>
<td>15</td>
<td>15</td>
<td>15</td>
<td>15</td>
<td>15</td>
<td>15</td>
<td>15</td>
</tr>
<tr>
<td colspan="12">&nbsp;</td>
</tr>
<tr>
<th>Column</th>
<th>1</th>
<th>2</th>
<th>3</th>
<th>4</th>
<th>5</th>
<th>6</th>
<th>7</th>
<th>8</th>
<th>9</th>
<th>10</th>
</tr>
<tr>
<th>9 Columns</th>
<td>16.78</td>
<td>16.78</td>
<td>16.78</td>
<td>16.78</td>
<td>16.78</td>
<td>16.78</td>
<td>16.78</td>
<td>16.78</td>
<td>16.78</td>
<td>&nbsp;</td>
</tr>
<tr>
<th>Elastic 2.0</th>
<td>17</td>
<td>17</td>
<td>17</td>
<td>17</td>
<td>17</td>
<td>17</td>
<td>17</td>
<td>16</td>
<td>16</td>
<td>&nbsp;</td>
</tr>
<tr>
<th>Firefox 3.0, 3.5</th>
<td>17</td>
<td>17</td>
<td>16</td>
<td>17</td>
<td>17</td>
<td>17</td>
<td>16</td>
<td>17</td>
<td>17</td>
<td>&nbsp;</td>
</tr>
<tr>
<th>Safari</th>
<td>16</td>
<td>16</td>
<td>16</td>
<td>16</td>
<td>16</td>
<td>16</td>
<td>16</td>
<td>16</td>
<td>16</td>
<td>&nbsp;</td>
</tr>
<tr>
<th>Opera</th>
<td>16</td>
<td>16</td>
<td>16</td>
<td>16</td>
<td>16</td>
<td>16</td>
<td>16</td>
<td>16</td>
<td>16</td>
<td>&nbsp;</td>
</tr>
<tr>
<th>Internet Explorer</th>
<td>17</td>
<td>17</td>
<td>17</td>
<td>17</td>
<td>17</td>
<td>17</td>
<td>17</td>
<td>17</td>
<td>17</td>
<td>&nbsp;</td>
</tr>
<tr>
<td colspan="12">&nbsp;</td>
</tr>
<tr>
<th>Column</th>
<th>1</th>
<th>2</th>
<th>3</th>
<th>4</th>
<th>5</th>
<th>6</th>
<th>7</th>
<th>8</th>
<th>9</th>
<th>10</th>
</tr>
<tr>
<th>8 Columns</th>
<td>19.38</td>
<td>19.38</td>
<td>19.38</td>
<td>19.38</td>
<td>19.38</td>
<td>19.38</td>
<td>19.38</td>
<td>19.38</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<th>Elastic 2.0</th>
<td>19</td>
<td>19</td>
<td>19</td>
<td>19</td>
<td>19</td>
<td>20</td>
<td>20</td>
<td>20</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<th>Firefox 3.0, 3.5</th>
<td>19</td>
<td>20</td>
<td>19</td>
<td>19</td>
<td>20</td>
<td>19</td>
<td>20</td>
<td>19</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<th>Safari</th>
<td>19</td>
<td>19</td>
<td>19</td>
<td>19</td>
<td>19</td>
<td>19</td>
<td>19</td>
<td>19</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<th>Opera</th>
<td>18</td>
<td>18</td>
<td>18</td>
<td>18</td>
<td>18</td>
<td>18</td>
<td>18</td>
<td>18</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<th>Internet Explorer</th>
<td>19</td>
<td>19</td>
<td>19</td>
<td>19</td>
<td>19</td>
<td>19</td>
<td>19</td>
<td>19</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<td colspan="12">&nbsp;</td>
</tr>
<tr>
<th>Column</th>
<th>1</th>
<th>2</th>
<th>3</th>
<th>4</th>
<th>5</th>
<th>6</th>
<th>7</th>
<th>8</th>
<th>9</th>
<th>10</th>
</tr>
<tr>
<th>7 Columns</th>
<td>22.71</td>
<td>22.71</td>
<td>22.71</td>
<td>22.71</td>
<td>22.71</td>
<td>22.71</td>
<td>22.71</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<th>Elastic 2.0</th>
<td>23</td>
<td>23</td>
<td>23</td>
<td>23</td>
<td>23</td>
<td>22</td>
<td>22</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<th>Firefox 3.0, 3.5</th>
<td>23</td>
<td>22</td>
<td>23</td>
<td>23</td>
<td>23</td>
<td>22</td>
<td>23</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<th>Safari</th>
<td>22</td>
<td>22</td>
<td>22</td>
<td>22</td>
<td>22</td>
<td>22</td>
<td>22</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<th>Opera</th>
<td>22</td>
<td>22</td>
<td>22</td>
<td>22</td>
<td>22</td>
<td>22</td>
<td>22</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<th>Internet Explorer</th>
<td>23</td>
<td>23</td>
<td>23</td>
<td>23</td>
<td>23</td>
<td>23</td>
<td>23</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<td colspan="12">&nbsp;</td>
</tr>
<tr>
<th>Column</th>
<th>1</th>
<th>2</th>
<th>3</th>
<th>4</th>
<th>5</th>
<th>6</th>
<th>7</th>
<th>8</th>
<th>9</th>
<th>10</th>
</tr>
<tr>
<th>6 Columns</th>
<td>27.17</td>
<td>27.17</td>
<td>27.17</td>
<td>27.17</td>
<td>27.17</td>
<td>27.17</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<th>Elastic 2.0</th>
<td>27</td>
<td>27</td>
<td>27</td>
<td>27</td>
<td>27</td>
<td>28</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<th>Firefox 3.0, 3.5</th>
<td>27</td>
<td>27</td>
<td>27</td>
<td>28</td>
<td>27</td>
<td>27</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<th>Safari</th>
<td>27</td>
<td>27</td>
<td>27</td>
<td>27</td>
<td>27</td>
<td>27</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<th>Opera</th>
<td>25</td>
<td>25</td>
<td>25</td>
<td>25</td>
<td>25</td>
<td>25</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<th>Internet Explorer</th>
<td>27</td>
<td>27</td>
<td>27</td>
<td>27</td>
<td>27</td>
<td>27</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<td colspan="12">&nbsp;</td>
</tr>
<tr>
<th>Column</th>
<th>1</th>
<th>2</th>
<th>3</th>
<th>4</th>
<th>5</th>
<th>6</th>
<th>7</th>
<th>8</th>
<th>9</th>
<th>10</th>
</tr>
<tr>
<th>5 Columns</th>
<td>33.4</td>
<td>33.4</td>
<td>33.4</td>
<td>33.4</td>
<td>33.4</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<th>Elastic 2.0</th>
<td>33</td>
<td>33</td>
<td>33</td>
<td>34</td>
<td>34</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<th>Firefox 3.0, 3.5</th>
<td>33</td>
<td>34</td>
<td>33</td>
<td>34</td>
<td>33</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<th>Safari</th>
<td>33</td>
<td>33</td>
<td>33</td>
<td>33</td>
<td>33</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<th>Opera</th>
<td>33</td>
<td>33</td>
<td>33</td>
<td>33</td>
<td>33</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<th>Internet Explorer</th>
<td>33</td>
<td>33</td>
<td>33</td>
<td>33</td>
<td>33</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<td colspan="12">&nbsp;</td>
</tr>
<tr>
<th>Column</th>
<th>1</th>
<th>2</th>
<th>3</th>
<th>4</th>
<th>5</th>
<th>6</th>
<th>7</th>
<th>8</th>
<th>9</th>
<th>10</th>
</tr>
<tr>
<th>4 Columns</th>
<td>42.75</td>
<td>42.75</td>
<td>42.75</td>
<td>42.75</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<th>Elastic 2.0</th>
<td>43</td>
<td>43</td>
<td>43</td>
<td>42</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<th>Firefox 3.0, 3.5</th>
<td>43</td>
<td>43</td>
<td>42</td>
<td>43</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<th>Safari</th>
<td>42</td>
<td>42</td>
<td>42</td>
<td>42</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<th>Opera</th>
<td>42</td>
<td>42</td>
<td>42</td>
<td>42</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<th>Internet Explorer</th>
<td>43</td>
<td>43</td>
<td>43</td>
<td>43</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<td colspan="12">&nbsp;</td>
</tr>
<tr>
<th>Column</th>
<th>1</th>
<th>2</th>
<th>3</th>
<th>4</th>
<th>5</th>
<th>6</th>
<th>7</th>
<th>8</th>
<th>9</th>
<th>10</th>
</tr>
<tr>
<th>3 Columns</th>
<td>58.3</td>
<td>58.3</td>
<td>58.3</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<th>Elastic 2.0</th>
<td>58</td>
<td>58</td>
<td>59</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<th>Firefox 3.0, 3.5</th>
<td>58</td>
<td>59</td>
<td>58</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<th>Safari</th>
<td>58</td>
<td>58</td>
<td>58</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<th>Opera</th>
<td>57</td>
<td>57</td>
<td>57</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<th>Internet Explorer</th>
<td>58</td>
<td>58</td>
<td>58</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<td colspan="12">&nbsp;</td>
</tr>
<tr>
<th>Column</th>
<th>1</th>
<th>2</th>
<th>3</th>
<th>4</th>
<th>5</th>
<th>6</th>
<th>7</th>
<th>8</th>
<th>9</th>
<th>10</th>
</tr>
<tr>
<th>2 Columns</th>
<td>89.5</td>
<td>89.5</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<th>Elastic 2.0</th>
<td>90</td>
<td>89</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<th>Firefox 3.0, 3.5</th>
<td>90</td>
<td>89</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<th>Safari</th>
<td>89</td>
<td>89</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<th>Opera</th>
<td>89</td>
<td>89</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<th>Internet Explorer</th>
<td>90</td>
<td>90</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<td colspan="12">&nbsp;</td>
</tr>
<tr>
<th>Column</th>
<th>1</th>
<th>2</th>
<th>3</th>
<th>4</th>
<th>5</th>
<th>6</th>
<th>7</th>
<th>8</th>
<th>9</th>
<th>10</th>
</tr>
<tr>
<th>1 Column</th>
<td>183</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<th>Elastic 2.0</th>
<td>183</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<th>Firefox 3.0, 3.5</th>
<td>183</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<th>Safari</th>
<td>183</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<th>Opera</th>
<td>183</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<th>Internet Explorer</th>
<td>183</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
</table>
<h2>Discussion</h2>
<p>Even though this study only reveals one part of the algorithm of render engines, its a problem that should appear in a wide number of cases<br />
		of web development. Further studies could reveal other parts of this algorithm.</p>
<h3>Browsers</h3>
<h4>Firefox</h4>
<pre name="code" class="javascript">
var containerWidth;
var columnPercentageWidth;
var columns;
var columnWidth = Math.round(containerWidth * ( columnPercentageWidth / 100 ));
var column;
for(var i = 0; i &lt; columns.length; i++){
	column.style.width = columnWidth;
}
var computedWidth    = columnWidth * columns.length;
var difference       = containerWidth - computedWidth;
var positionDivision = columns.length / (Math.abs(difference) + 1);
var increment        = (difference &gt; 0);
var direction        = -1;
if(difference !== 0)
for(var i = 1; i &lt;= (Math.abs(difference)); i++){
	if(direction == -1){
		column = columns[columns.length - Math.floor( positionDivision * Math.round(i/2) )];
	}
	else{
		column = columns[Math.floor( positionDivision * Math.round(i/2) ) - 1];
	}
	if(increment){
		column.style.width = columnWidth + 1;
	}
	else{
		column.style.width = columnWidth - 1;
	}
	direction = direction * -1;
}
		</pre>
<h4>Safari</h4>
<pre name="code" class="javascript">
var columns;
var columnWidth = Math.floor( containerWidth * ( columnPercentageWidth / 100 ) )
for(var i = 0; i &lt; columns.length; i++){
	column.style.width = columnWidth;
}
		</pre>
<h4>Opera</h4>
<pre name="code" class="javascript">
var columns;
var columnWidth = Math.floor( containerWidth * ( Math.floor( columnPercentageWidth ) / 100 ) );
for(var i = 0; i &lt; columns.length; i++){
	column.style.width = columnWidth;
}
		</pre>
<h4>Internet Explorer</h4>
<pre name="code" class="javascript">
var columns;
width = Math.round( containerWidth * ( columnPercentageWidth / 100 ) )
for(var i = 0; i &lt; columns.length; i++){
	column.style.width = columnWidth;
}
		</pre>
<h4>Elastic CSS Framework</h4>
<pre name="code" class="javascript">
var containerWidth;
var columnPercentageWidth;
var columns;
var columnWidth = Math.round(containerWidth * ( columnPercentageWidth / 100 ));
var column;
for(var i = 0; i &lt; columns.length; i++){
	column.style.width = columnWidth;
}
var computedWidth    = columnWidth * columns.length;
var difference       = containerWidth - computedWidth;
var positionDivision = columns.length / (Math.abs(difference) + 1);
var increment        = (difference &gt; 0);
var direction        = -1;
if(difference !== 0)
for(var i = 1; i &lt;= (Math.abs(difference)); i++){
	column = columns[columns.length - i )];
	if(increment){
		column.style.width = columnWidth + 1;
	}
	else{
		column.style.width = columnWidth - 1;
	}
}
		</pre>
<p>The code presented here may not be the actual code, because it was not copied, was infered. Also code must have extra considerations for more cases</p>
<p>This results are valid for the cases considered in the study, and are confirmed by the control case. Combinations of diferent types of blocks may lead to a different set of results, but that is outside of the scope of this study.</p>
<h4>How other css frameworks handle pixel rounding</h4>
<p>CSS Frameworks based on grid systems (blueprint, 960gs, bluetrip, and similar) are based on divisions that lead to integer results for every column, this avoids falling in the problem of pixel rounding and do not need a solution, but a limitant on this frameworks is that they do not support liquid layouts. Implementing liquid layouts on this type of frameworks would force to find a pixel rounding solution.</p>
<p>CSS Frameworks based on column combinations that support liquid layouts, have different solutions to deal with this.</p>
<p>YUI uses a set of classes that define different width and float left or right according to the context of its container and the browser.<br />
		This still presents the problem that the computed values varies according to the algorithm implemented by the browser. Scaling this to more than 4 columns would lead to a high multiplicity of exceptions on css code.</p>
<p>OOCSS uses a class &#8220;last&#8221; that its not floated, contrary to the rest of the columns in the unit, this causes that the last column gets reduced<br />
		by the space of the rest of the columns, but also depends on the computed withs of the algorithm implemented by the browser. scaling this to more columns would reveal the algorithm errors on browsers leading to more evident problems in the final width of columns.</p>
<p>Elastic provides a JavaScript Based override to the computations making a completely predictable width in all browsers. even though is a little slower because overrides the native render engine computations, it can scale to many columns, and never blocks the flow of content.</p>
<h2>Conclusions</h2>
<ul>
<li>Every Browser implements a different solution for sub pixel rounding.</li>
<li>Firefox is the only browser that does a complete use of the available space.</li>
<li>Elastic CSS Framework is the only Framework that rounds widths consistently accross browsers.</li>
<li>Other CSS Frameworks will vary their accuracy depending on the browser they are rendered.</li>
<li>Only Internet Explorer leads to a sum of column widths grater to their container, showing the column jump bug.</li>
</ul>
<h2>Personal opinion.</h2>
<p>Browsers should be more open in their implementations, that way they would help the creation of a standard in rounding widths, and other areas.</p>
<p>An open documentation of this solutions would help web developers understand better the problems, and solutions in browsers, and this would help to advance the standardization and development to a faster ratio.</p>
<p>A standardization on this subject would simplify the advance and improve speed of Elastic CSS Framework Engine performance leaving this operations to a lower level. Also will open the path to a collaboration between framework authors instead of a competition.</p>
<p>If anyone would like to join efforts with Elastic CSS Framework core team, we are open to collaborate with others to improve the features of frameworks and maybe make recommendations to browsers and W3C.</p>
<p>This will open a discussion inside Elastic CSS Framework to see if the current algorithm should be changed to match Firefox, this also is an invitation to everyone to participate.</p>
]]></content>
		<link rel="replies" type="text/html" href="http://elasticss.com/determination-of-algorithms-used-for-percentage-based-rounding-divs-on-browsers-and-css-frameworks/#comments" thr:count="2" />
		<link rel="replies" type="application/atom+xml" href="http://elasticss.com/determination-of-algorithms-used-for-percentage-based-rounding-divs-on-browsers-and-css-frameworks/feed/atom/" thr:count="2" />
		<thr:total>2</thr:total>
	<feedburner:origLink>http://elasticss.com/determination-of-algorithms-used-for-percentage-based-rounding-divs-on-browsers-and-css-frameworks/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Sergio</name>
						<uri>http://twitter.com/sgarza</uri>
					</author>
		<title type="html"><![CDATA[Sites using elastic]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Elasticss/~3/YLNqSDEJJfU/" />
		<id>http://elasticss.com/?p=245</id>
		<updated>2009-08-24T14:17:26Z</updated>
		<published>2009-08-24T14:17:26Z</published>
		<category scheme="http://elasticss.com" term="CSS" /><category scheme="http://elasticss.com" term="General" />		<summary type="html"><![CDATA[Have you done a site with Elastic CSS Framework?
Send us a shout here to post it on the Elastic Gallery Section. 
]]></summary>
		<content type="html" xml:base="http://elasticss.com/sites-using-elastic/"><![CDATA[<p>Have you done a site with Elastic CSS Framework?</p>
<p>Send us a shout <a href="http://elasticss.com/submit-your-website-using-elastic/">here</a> to post it on the Elastic Gallery Section. </p>
]]></content>
		<link rel="replies" type="text/html" href="http://elasticss.com/sites-using-elastic/#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://elasticss.com/sites-using-elastic/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://elasticss.com/sites-using-elastic/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Fernando Trasviña</name>
						<uri>http://twitter.com/azendal</uri>
					</author>
		<title type="html"><![CDATA[Elastic 2.0.1]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Elasticss/~3/O4NVh7wUos0/" />
		<id>http://elasticss.com/?p=231</id>
		<updated>2009-07-15T14:00:34Z</updated>
		<published>2009-07-14T21:42:53Z</published>
		<category scheme="http://elasticss.com" term="Elastic" /><category scheme="http://elasticss.com" term="updates" />		<summary type="html"><![CDATA[Why so often and why so little increment?
Well in he process of releasing 2.0 we considered the possibility to support calculations based on percentages, but It was dropped, because we believed that it was not necessary, but well it turns out that it is important, and that the current algorithm was not enough, some rounding [...]]]></summary>
		<content type="html" xml:base="http://elasticss.com/elastic-201/"><![CDATA[<p>Why so often and why so little increment?</p>
<p>Well in he process of releasing 2.0 we considered the possibility to support calculations based on percentages, but It was dropped, because we believed that it was not necessary, but well it turns out that it is important, and that the current algorithm was not enough, some rounding problems arise mainly it comes from the width reported by the browsers, and the rounding that result from that.</p>
<p>So to not make a long story, this release tries to solve that, as an experiment, maybe its usefull, maybe not we will see.</p>
]]></content>
		<link rel="replies" type="text/html" href="http://elasticss.com/elastic-201/#comments" thr:count="7" />
		<link rel="replies" type="application/atom+xml" href="http://elasticss.com/elastic-201/feed/atom/" thr:count="7" />
		<thr:total>7</thr:total>
	<feedburner:origLink>http://elasticss.com/elastic-201/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Fernando Trasviña</name>
						<uri>http://twitter.com/azendal</uri>
					</author>
		<title type="html"><![CDATA[Elastic 2.0 Final Release]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Elasticss/~3/vATk6Owu0PQ/" />
		<id>http://elasticss.com/?p=206</id>
		<updated>2009-07-08T21:45:11Z</updated>
		<published>2009-07-08T21:44:38Z</published>
		<category scheme="http://elasticss.com" term="Elastic" /><category scheme="http://elasticss.com" term="General" /><category scheme="http://elasticss.com" term="updates" />		<summary type="html"><![CDATA[Today Elastic core team releases the version 2.0 of Elastic CSS Framework. Many things where changed. Now Elastic has a simplified syntax, and new features that will help you develop complex layouts even easier than before. We know that the new syntax might be a little problematic because we are not providing backwards compatibility with the previous syntax, that is why we increased the version number.]]></summary>
		<content type="html" xml:base="http://elasticss.com/elastic-20-final-release/"><![CDATA[<p>Today Elastic core team releases the version 2.0 of Elastic CSS Framework. Many things where changed. Now Elastic has a simplified syntax, and new features that will help you develop complex layouts even easier than before. We know that the new syntax might be a little problematic because we are not providing backwards compatibility with the previous syntax, that is why we increased the version number.</p>
<p>Here is a list of changes in the final release:</p>
<p>Simplified syntax<br />
	auto-columns => columns<br />
	two-columns, three-columns, four-columns =><br />
	number of columns => on-#<br />
fixed columns bug<br />
fixed equalized-height refresh bug<br />
fixed printing(still some rules apply but works when followed)<br />
fixed span-# bug when there is one one column<br />
fixed pixel rounding bug when having many columns(now it gets computed fine)<br />
changed span-# now if # is grater than the row it gets setted to the columns per row(it was some serious punishment)<br />
improved engine performace<br />
improved helpers performance<br />
improved pixel rounding algorithm<br />
added support for elastic-height<br />
added support for adaptive-#-# columns<br />
added support for layouts position-x : display x<br />
added support for final on column</p>
<p>We had the chance to fix some ambiguities, and bugs. We are very happy with this new version, it has helped us to accomplish more complex layouts in less time, keeping the cross browser compatibility.</p>
<p>We hope you enjoy it and provide feedback and ideas on how we can improve elastic to a happier coding experience. </p>
]]></content>
		<link rel="replies" type="text/html" href="http://elasticss.com/elastic-20-final-release/#comments" thr:count="2" />
		<link rel="replies" type="application/atom+xml" href="http://elasticss.com/elastic-20-final-release/feed/atom/" thr:count="2" />
		<thr:total>2</thr:total>
	<feedburner:origLink>http://elasticss.com/elastic-20-final-release/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Sergio</name>
						<uri>http://twitter.com/sgarza</uri>
					</author>
		<title type="html"><![CDATA[Two columns based layout]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Elasticss/~3/tnLGF3WylEs/" />
		<id>http://elasticss.com/?p=9</id>
		<updated>2009-07-08T21:55:22Z</updated>
		<published>2009-07-08T08:36:09Z</published>
		<category scheme="http://elasticss.com" term="CSS" /><category scheme="http://elasticss.com" term="General" /><category scheme="http://elasticss.com" term="basic" /><category scheme="http://elasticss.com" term="how-to" /><category scheme="http://elasticss.com" term="layout" /><category scheme="http://elasticss.com" term="two columns" />		<summary type="html"><![CDATA[This post is on how to use Elastic CSS  Framework to create a simple two column layout.
The layout consists of a header, a main content column, a right sidebar, and a footer. It is also horizontally centered in the browser window. A pretty basic layout, and not at all difficult to create with Elastic [...]]]></summary>
		<content type="html" xml:base="http://elasticss.com/two-columns-based-layout/"><![CDATA[<p>This post is on how to use <a href="http://elasticss.com"><strong>Elastic CSS  Framework</strong></a> to create a simple two column layout.</p>
<p>The layout consists of a header, a main content column, a right sidebar, and a footer. It is also horizontally centered in the browser window. A pretty basic layout, and not at all difficult to create with Elastic CSS Framework and the best part is you don&#8217;t need to worry about browser specific hacks.</p>
<p>First you need to download the latest version of <strong>Elastic CSS Framework</strong> from <em><strong><a title="Download Elastic CSS Framework" href="http://github.com/azendal/elastic/downloads" target="_blank">Github.com</a></strong></em>, unzip the file, rename the resulted directory to <strong>elastic</strong> and copy it to your project.</p>
<p>Now lets beging&#8230;</p>
<p>Basically our layout should look like this:</p>
<div id="attachment_10" class="wp-caption aligncenter" style="width: 310px"><img class="size-medium wp-image-10" title="two-column-layout" src="http://elasticss.com/wp-content/uploads/2009/03/two-column-layout-300x197.png" alt="two column layout thumb" width="300" height="197" /><p class="wp-caption-text">two column layout thumb</p></div>
<p>In order to use Elastic you need to create an HTML document (index.html) and include all the CSS and Javascript files Elastic has:</p>
<pre class="html">	&lt;script src="/elastic//jquery.js" type="text/javascript"&gt;&lt;/script&gt;
	&lt;script src="/elastic/elastic.js" type="text/javascript"&gt;&lt;/script&gt;</pre>
<p>Notice the &#8220;<strong><em>/stylesheets/skin.css</em></strong>&#8221; file, well here is where all our <strong>custom CSS</strong> will live, so you can let all Elastic files untouched.</p>
<p>Now lets make our layout. Lets work on a 960px wide container aligned on center and a light-grey background just to diferentiate.</p>
<p>You have to add the following CSS code in stylesheets/skin.css:</p>
<pre class="css">	div.layout{
		width : 960px;
  	min-width : 960px;
  	min-height : 500px;
  	margin : auto;
  	background : #F0F0F0;
	}</pre>
<p>Now add the markup to your HTML document:</p>
<pre class="html">	&lt;div class="unit layout"&gt;&lt;/div&gt;</pre>
<p>Now that we have our main container lets the fun stuff begin.<br />
Lets work on the header part. It has to be 100px tall and 100% wide, well that&#8217; easy:</p>
<p>Add this to skin.css:</p>
<pre class="css">	div.header{
		height : 100px;
		background : #C0C0C0;
	}</pre>
<p>And the HTML should look like this:</p>
<pre class="html">	&lt;div class="unit layout"&gt;
		&lt;div class="unit header"&gt;

		&lt;/div&gt;
	&lt;/div&gt;</pre>
<p>Now lets make the two columns and the footer.<br />
With Elastic CSS Framework is easy to make columns that have the same height, full height and truly behave like a  columns <img src='http://elasticss.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>So this is our final CSS file:</p>
<pre class="css">	div.layout{
		width : 960px;
		min-width : 960px;
		min-height : 500px;
		margin : auto;
		background : #F0F0F0;
	}

	div.header{
		height : 100px;
		background : #C0C0C0;
	}

	div.main-content{
		background : #CCC;
	}

	div.sidebar{
		background : #FFF;
	}

	div.footer{
		height : 100px;
		text-align : center;
		background : #C0C0C0;
	}</pre>
<p>And this is how our final HTML file should look like:</p>
<pre class="html">	&lt;div class="unit layout"&gt;
	  &lt;div class="unit header"&gt;
	    &lt;h1&gt;Header&lt;/h1&gt;
	  &lt;/div&gt;
	  &lt;div class="unit full-height on-2 columns same-height"&gt;
	    &lt;div class="elastic column full-height main-content"&gt;
	      &lt;div class="container" style="padding:10px"&gt;
	        Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
	      &lt;/div&gt;
	    &lt;/div&gt;
	    &lt;div class="fixed column full-height sidebar" style="width: 320px;"&gt;
	      &lt;div class="container" style="padding:10px"&gt;
	        Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
	      &lt;/div&gt;
	    &lt;/div&gt;
	  &lt;/div&gt;
	  &lt;div class="unit footer"&gt;
	    Elastic CSS Framework Two Column Layout
	  &lt;/div&gt;
	&lt;/div&gt;</pre>
<p><strong>UPDATE</strong>: Working demo <a href="http://elasticss.com/wp-content/uploads/demos/two-column-layout/index.html" target="_blank">here</a></p>
<p>See, its pretty easy to make layouts with Elastic CSS Framework, now it is up to you to add some grpahics, icons and typography.</p>
<p>Thanks for reading and feel free to comment.</p>
]]></content>
		<link rel="replies" type="text/html" href="http://elasticss.com/two-columns-based-layout/#comments" thr:count="7" />
		<link rel="replies" type="application/atom+xml" href="http://elasticss.com/two-columns-based-layout/feed/atom/" thr:count="7" />
		<thr:total>7</thr:total>
	<feedburner:origLink>http://elasticss.com/two-columns-based-layout/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Fernando Trasviña</name>
						<uri>http://twitter.com/azendal</uri>
					</author>
		<title type="html"><![CDATA[Elastic V2.0 RC]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Elasticss/~3/mDP7AgviRv0/" />
		<id>http://elasticss.com/?p=200</id>
		<updated>2009-06-23T18:25:30Z</updated>
		<published>2009-06-23T18:19:42Z</published>
		<category scheme="http://elasticss.com" term="Elastic" /><category scheme="http://elasticss.com" term="updates" />		<summary type="html"><![CDATA[Elastic 2.0 is here. and several important changes are included. Now there is support for adaptive columns, layouts, elastic-height, and more. check it out.]]></summary>
		<content type="html" xml:base="http://elasticss.com/releasing-v20-rc/"><![CDATA[<p>In the last weeks we had low activity on our repository and in the website, the reason?<br />
We where working on the next mayor release of the framework.</p>
<p>This release is mainly focused on advanced layout features, and the engine performance. Most of the time our core team and colaborators were m on the new syntax(yes syntax has been changed).</p>
<p>To some of you that have using the previous versions of the framework that may think, why a change? Well as we developed the framework we added features, and a syntax had to be created in most of the cases, but we felt the syntax a lil bloated, and we went in the hunt for a change.</p>
<p>The results are quite promissing, the syntax maintains its legibility, but has been simplified. all columns now are handled by the class columns, fixed-column, elastic-colmumn and column are all handled by column, now fixed and elastic are modifiers. to explain this a little better here is the new syntax description:</p>
<pre style="width:100%; overflow:auto;">unit [full-height] [elastic-height]
columns [on-#] [same-height] [adaptive-#-#]
column [span-#] [final]
container [same-height] [full-height] [horizontal-center] [vertical-center] [center] [bottom]
* [full-width] [position-#] [display #]
                         |___________|

unit &lt;&lt; columns
column &lt;&lt; columns</pre>
<p>We also added two new cool features:</p>
<p>adaptive-#-#: This will let you create adaptive layouts based on a range for column width. layouts: this is similar to the CSS3 layout notion, but with the syntax of elastic using only class names.</p>
<p>The reason to release this as RC is that we need testing mainly for IE7 and IE6. but we are developing projects with this new version and it has worked well up to now, when we get to testing, we will see if any improvements are required, but syntax should remain the same from RC to final.</p>
]]></content>
		<link rel="replies" type="text/html" href="http://elasticss.com/releasing-v20-rc/#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://elasticss.com/releasing-v20-rc/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://elasticss.com/releasing-v20-rc/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Javier Ayala</name>
						<uri>http://www.twitter.com/javi_ayala</uri>
					</author>
		<title type="html"><![CDATA[Challenge: Grid of boxes]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Elasticss/~3/TAw4Fhbo7Qs/" />
		<id>http://elasticss.com/?p=166</id>
		<updated>2009-05-30T00:57:12Z</updated>
		<published>2009-05-29T22:18:29Z</published>
		<category scheme="http://elasticss.com" term="Challenges" /><category scheme="http://elasticss.com" term="notdone" />		<summary type="html"><![CDATA[One of the most common problems that web designers has to deal with is when a client ask to have some kind of grid-based on their webdesign. For some of you this might be a piece of cake, but the real challenge cames when you can&#8217;t set specific height when you are dealing with a [...]]]></summary>
		<content type="html" xml:base="http://elasticss.com/challenge-grid-of-boxes/"><![CDATA[<p>One of the most common problems that web designers has to deal with is when a client ask to have some kind of grid-based on their webdesign. For some of you this might be a piece of cake, but the real challenge cames when you can&#8217;t set specific height when you are dealing with a loop that can have big or small amount of text on it.</p>
<h3>The Study Case:</h3>
<p>Suppose you are working with wordpress, and you need to make some kind of grid out of the information that The Loop is going to throw you away. What would you do to show the information in a grid made out of divs?</p>
<h3>The Example image:</h3>
<p><img class="aligncenter size-full wp-image-167" title="gridbox" src="http://elasticss.com/wp-content/uploads/gridbox.png" alt="gridbox" width="600" height="500" /></p>
<h3>The Limitations:</h3>
<p>You can only use CSS and Javascript to solve this challenge.</p>
<h3>Good Luck</h3>
]]></content>
		<link rel="replies" type="text/html" href="http://elasticss.com/challenge-grid-of-boxes/#comments" thr:count="4" />
		<link rel="replies" type="application/atom+xml" href="http://elasticss.com/challenge-grid-of-boxes/feed/atom/" thr:count="4" />
		<thr:total>4</thr:total>
	<feedburner:origLink>http://elasticss.com/challenge-grid-of-boxes/</feedburner:origLink></entry>
	</feed>
