<?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>zomigi.com &#187; browsers</title>
	<atom:link href="http://zomigi.com/tags/browsers/feed/" rel="self" type="application/rss+xml" />
	<link>http://zomigi.com</link>
	<description>The professional blog of Zoe Mickley Gillenwater</description>
	<lastBuildDate>Wed, 28 Jul 2010 21:36:40 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Deal-breaker problems with CSS3 multi-columns</title>
		<link>http://zomigi.com/blog/deal-breaker-problems-with-css3-multi-columns/</link>
		<comments>http://zomigi.com/blog/deal-breaker-problems-with-css3-multi-columns/#comments</comments>
		<pubDate>Fri, 02 Apr 2010 15:36:48 +0000</pubDate>
		<dc:creator>Zoe Gillenwater</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[browsers]]></category>
		<category><![CDATA[columns]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[CSS3]]></category>
		<category><![CDATA[layout]]></category>
		<category><![CDATA[W3C]]></category>

		<guid isPermaLink="false">http://zomigi.com/?p=328</guid>
		<description><![CDATA[Firefox and Webkit support some of the CSS3 multi-column layout properties—but not very well. Unfortunately, the spec isn't very clear about what's correct. Until the spec is clearer and the browser problems are ironed out, multi-columns are useless to me.]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been playing around with the <a href="http://www.w3.org/TR/css3-multicol/">new multi-column properties of CSS3</a> (<code>column-count</code>, <code>column-width</code>, and so forth), and I&#8217;ve come to the conclusion that they&#8217;re sadly not ready to really use. Sure, use them in experimental sites, and maybe even in mainstream sites in small doses with very particular types of content. But for most content, I found that there&#8217;s not enough control over how the content is distributed between columns to make them reliable. I&#8217;m not sure if the browser behavior I&#8217;ve been seeing is correct or not; the spec is unfortunately not well defined enough to make it clear—at least to me—of how browsers ought to be handling some of the problems I ran across.</p>
<h3>Balancing column heights</h3>
<p>The first problem is how the browser should handle one or more extra lines of content if the amount of content cannot fill up each column equally. In my opinion, the extra content should come at the bottom of the first columns, so that columns further to the right are never longer than columns further to the left. This is pretty standard practice in print design, and having it any other way just looks really strange. At least to me. Take a look and you decide:<span id="more-328"></span></p>
<div id="attachment_343" class="wp-caption alignnone" style="width: 510px"><a href="http://zomigi.com/wp-content/uploads/2010/04/multicolumn_balance1.gif"><img class="size-full wp-image-343" title="multicolumn_balance1" src="http://zomigi.com/wp-content/uploads/2010/04/multicolumn_balance1.gif" alt="" width="500" height="55" /></a><p class="wp-caption-text">The last column has one extra list item and line than the previous columns.</p></div>
<div id="attachment_338" class="wp-caption alignnone" style="width: 510px"><a href="http://zomigi.com/wp-content/uploads/2010/04/multicolumn_balance2.gif"><img class="size-full wp-image-338" title="multicolumn_balance2" src="http://zomigi.com/wp-content/uploads/2010/04/multicolumn_balance2.gif" alt="" width="500" height="27" /></a><p class="wp-caption-text">Doesn&#39;t this look weird?</p></div>
<div id="attachment_343" class="wp-caption alignnone" style="width: 510px"><a href="http://zomigi.com/wp-content/uploads/2010/04/multicolumn_balance3.gif"><img class="alignnone size-full wp-image-339" title="multicolumn_balance3" src="http://zomigi.com/wp-content/uploads/2010/04/multicolumn_balance3.gif" alt="" width="500" height="220" /></a><p class="wp-caption-text">Another example of the last column being longest.</p></div>
<p>You can check out the <a href="http://www.zomigi.com/demo/multicolumn_balance.html">first demo page</a> yourself. Resize the window and see how each browser handles column number, placement, and height.</p>
<p>It seems like the <a href="http://www.w3.org/TR/css3-multicol/#filling-columns"><code>column-fill</code> property</a> is supposed to address this problem, but I may be misunderstanding what it&#8217;s supposed to do. In any case, my testing has shown that no browser supports it, even with browser-specific prefixes. So, we&#8217;re left with these unbalanced, awkward looking columns.</p>
<p>In some cases, I understand why the browser is making later columns taller than earlier ones. For instance, there&#8217;s a bottom margin on one of paragraphs that happens  to fall at the end of one of the columns, leaving a gap and making that  column shorter than the following column. I know there are cases when this behavior is desirable and necessary given the content. But we ought to be able to control it, and we can&#8217;t right now, and the default browser decisions about how to fill look weird to me in many cases.</p>
<h3>Flowing margin and padding across columns</h3>
<p>The second problem is how the browser should handle margin and padding on elements inside the columns. Webkit will let margin and padding be split in between columns; even when it doesn&#8217;t split a bottom margin, it will often let the entire margin show up at the top of a column. This can result in some extremely ugly and bizarre stuff:</p>
<div id="attachment_342" class="wp-caption alignnone" style="width: 510px"><a href="http://zomigi.com/wp-content/uploads/2010/04/multicolumn_margin1.gif"><img class="alignnone size-full wp-image-341" title="multicolumn_margin1" src="http://zomigi.com/wp-content/uploads/2010/04/multicolumn_margin1.gif" alt="" width="500" height="227" /></a><p class="wp-caption-text">Safari and Chrome break margin and padding between columns.</p></div>
<p>Check out the <a href="http://www.zomigi.com/demo/multicolumn_margin.html">second demo page</a> with extra margin and padding added.</p>
<p>Firefox, on the other hand, expands the height of the column area to accommodate the padding, and let&#8217;s margin escape out the bottom (margin collapsing at work, I guess) rather than letting it show up at the top of a column.</p>
<div id="attachment_342" class="wp-caption alignnone" style="width: 510px"><a href="http://zomigi.com/wp-content/uploads/2010/04/multicolumn_margin2.gif"><img class="size-full wp-image-342" title="multicolumn_margin2" src="http://zomigi.com/wp-content/uploads/2010/04/multicolumn_margin2.gif" alt="" width="500" height="156" /></a><br />
<p class="wp-caption-text">Firefox makes the bottom margins on the last items in the columns just  disappear, instead of splitting those margins across columns or allowing  them to show at the top of a column.</p></div>
<p>Again, the spec doesn&#8217;t seem to say anything about which implementation is correct (does it?), but in my opinion, the way Webkit handles it just has to be wrong. Margin and padding are never ever split, are they? And even if they are split in other non-column CSS layout scenarios, it certainly doesn&#8217;t make sense to do it in columns. Again, it breaks with print design conventions; while I know web design does not have to emulate print, there are certain typographic conventions that we&#8217;ve preserved on the web for readability&#8217;s sake, and breaking them would make most people say it looked &#8220;wrong.&#8221; I think this is one of those cases, and in my opinion, it&#8217;s the biggest deal-breaker for using columns right now. Or at least, using them in Webkit-based browsers.</p>
<p>Again, if there are fringe cases where it makes the most sense to split the margin and/or padding, by all means let&#8217;s do it. But we need a CSS property to control that, and it doesn&#8217;t look like there is one in the spec now. So for now, I hope Webkit changes how they handle this to match up with Firefox&#8217;s more intuitive choice, and that the W3C clarifies this in the spec.</p>
<h3>Breaking content across columns</h3>
<p>Finally, the third problem is that neither Firefox nor Webkit seem to support the <a href="http://www.w3.org/TR/css3-multicol/#column-breaks">column break properties</a>. For instance, adding <code>break-inside: avoid-column;</code> to the <code>li</code> elements should keep the content in each list item from breaking across columns. Unfortunately, it doesn&#8217;t work right now.</p>
<div id="attachment_340" class="wp-caption alignnone" style="width: 510px"><a href="http://zomigi.com/wp-content/uploads/2010/04/multicolumn_break1.gif"><img class="size-full wp-image-340" title="multicolumn_break1" src="http://zomigi.com/wp-content/uploads/2010/04/multicolumn_break1.gif" alt="" width="500" height="139" /></a><p class="wp-caption-text">The text &quot;Start sociis natoque end&quot; is all one list item, but both Webkit and Firefox break content within the list items.</p></div>
<p>The <a href="http://www.zomigi.com/demo/multicolumn_break.html">third demo page</a> is the same as the first one, but it has the <code>break-inside</code> properties added. As you can see, it behaves the same as the first demo.</p>
<p>Controlling breaking isn&#8217;t necessarily a big deal with a simple series of paragraphs, but it becomes more important on lists with brief list items, as shown in the image above, and when you have headings mixed in the text, as you definitely want to make sure that headings stay with their following text. Not having support for the breaking properties can really impede usability and limits the usefulness of multi-columns.</p>
<h3>Next steps? Workarounds?</h3>
<p>Given these problems, multi-column layout isn&#8217;t very useful to me right now. Honestly, it&#8217;s always been something that I&#8217;ve thought should be used only sparingly, in very particular cases. But with these problems, I&#8217;m not going to use it in <em>any </em>cases. I&#8217;m really hoping that the spec continues to evolve and that browsers continue to update their implementation of these features. (I&#8217;m mainly looking at you, Webkit.)</p>
<p>In the meantime, if anyone has any workarounds for these problems, I&#8217;d love to hear them!</p>
]]></content:encoded>
			<wfw:commentRss>http://zomigi.com/blog/deal-breaker-problems-with-css3-multi-columns/feed/</wfw:commentRss>
		<slash:comments>36</slash:comments>
		</item>
		<item>
		<title>Why browser zoom shouldn&#8217;t kill flexible layouts</title>
		<link>http://zomigi.com/blog/why-browser-zoom-shouldnt-kill-flexible-layouts/</link>
		<comments>http://zomigi.com/blog/why-browser-zoom-shouldnt-kill-flexible-layouts/#comments</comments>
		<pubDate>Tue, 16 Jun 2009 14:24:38 +0000</pubDate>
		<dc:creator>Zoe Gillenwater</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[browsers]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[elastic]]></category>
		<category><![CDATA[flexible]]></category>
		<category><![CDATA[layout]]></category>
		<category><![CDATA[liquid]]></category>
		<category><![CDATA[usability]]></category>

		<guid isPermaLink="false">http://zomigi.com/?p=56</guid>
		<description><![CDATA[All the major browsers now have zoom functions built in, which may make it seem like there's no longer any need for liquid or elastic layouts. Not so.]]></description>
			<content:encoded><![CDATA[<p>Now that all the major browsers  include the ability to zoom the entire page layout, rather than just increase text size, are liquid and elastic layouts obsolete? Can&#8217;t we just use fixed-width layouts and let the user zoom them if needed? The answer to that question depends on whether browser zoom solves all of the same problems than liquid and elastic layouts solve, and I don&#8217;t think it does.</p>
<p>Don&#8217;t get me wrong—it&#8217;s great that browsers have added this zoom ability. It&#8217;s yet another tool to give users more control to view web pages in a way that is most easy and enjoyable for them. But liquid and elastic layouts still offer a lot of benefits, as does plain old text resizing. Let&#8217;s go through the flexible layout benefits one by one and see if browser zooming on fixed-width layouts can deliver just as well.<br />
<span id="more-56"></span></p>
<h3>Prevent horizontal scrolling</h3>
<p>Liquid layouts get rid of the dreaded horizontal scrollbar (or <a href="http://adactio.com/journal/1559/">crawlbar</a>, as Jeremy Keith would have us say) for most users, since the layout adapts to whatever viewport size they&#8217;re currently using. This is a great boost to readability and overall usability. Browser zooming doesn&#8217;t do this automatically, and though it can be used to get rid of the horizontal scrollbar once it&#8217;s shown up, it produces unwanted side effects in the process.</p>
<p>Here&#8217;s an example from my own experience to illustrate what I mean. I usually keep my browser window at about 900 pixels wide, simply because that&#8217;s a width I find comfortable to read and visually pleasing, and because it fits well with the other windows I have open in my widescreen monitor. Browsing at 900 pixels means that most sites designed for a 1024 resolution produce a horizontal scrollbar for me. Now, I can zoom out of the page in order to make the whole layout smaller and make it fit in my window. But when I do this, the text size of the page gets smaller, since everything is smaller when you use browser zoom. Now I can&#8217;t read the page. All I wanted was the page to fit in my viewport, not for the text to change size. Liquid layouts are perfectly suited to this task, and browser zoom is not.</p>
<h3>Take advantage of screen real estate</h3>
<p>Liquid layouts allow you to make full use of the area available in the viewport, showing more or less content, depending on what will fit at any given moment. Browser zoom doesn&#8217;t do this. You can zoom in to fill up the viewport, but again, this just makes everything bigger, instead of showing more content to the user who has the space for it.</p>
<h3>Allow users to choose their own line lengths</h3>
<p>Liquid layouts essentially allow users to choose the line length, or number of text characters per line of text, that is most comfortable for them to read. Although most people will find the same, optimal line length easily readable (75 to 100 characters seems to be best for most people for on-screen reading), there are certain people who favor long or short lines of text, and those people who <em>do</em> make a conscious choice about their line lengths deserve to have this preference respected.</p>
<p>Browser zooming with fixed-width layouts doesn&#8217;t give users this ability to adjust the line length to fit their needs. Instead, the line length is fixed at a particular value that varies only based on the user&#8217;s text size. Users with large default text sizes may get much shorter line lengths than they prefer, for instance, and changing the zoom level will only preserve these un-ideal line lengths for them.</p>
<h3>Set an optimal line length</h3>
<p>Elastic layouts also don&#8217;t give users the ability to change the line length to suit their needs, but they do give the designer the ability to choose a line length that will be ideal for the majority of users. You might think you can do this with a fixed-width layout as well—and you could, if all your users had the same text size. If everyone kept the 16-pixel default text size, you could make your layout a fixed number of pixels and know exactly how many text characters would fit across each line. Then, if the users needed to zoom in to make the text bigger and easier for them to read, this same, optimal line length would be preserved, just with larger text characters.</p>
<p>But it doesn&#8217;t work this way in the real world. Not everyone uses the default text size. Some people make it bigger due to vision problems or other disabilities. Some people make it bigger because they have such a huge resolution on their huge monitor. Some people simply have the dpi on their machines set to 120 instead of 96, which makes all text throughout their system bigger. All of these users are going to have a different line length than the one you intended in your fixed-width layout. This won&#8217;t happen in an elastic layout, because its width will always be based on the user&#8217;s default or current text size, keeping line lengths constant.</p>
<p>But it doesn&#8217;t work this way in the real world. Not everyone uses the default text size, and those that don&#8217;t are going to have a different line length than the one you intended in your fixed-width layout. This won&#8217;t happen in an elastic layout, because its width will always be based on the user&#8217;s default or current text size, keeping line lengths constant.</p>
<h3>Preserve design proportions</h3>
<p>Elastic layouts give you more control over where text falls in relation to other design components on the page. No matter the text size, your design remains proportional and visually consistent (depending on if you choose to make the images scale too, of course). Again, you might think you can accomplish this with fixed-width layouts and browser zoom, but variable user text sizes make it impossible to know where a piece of text is going to fall on a fixed-width page.</p>
<h3>Make text more readable</h3>
<p>All of the  benefits of liquid and elastic layouts that I&#8217;ve gone over have to do with respecting user preferences and  making text easier to read. It seems to me that this is the goal of browser zoom as well, and in many cases it does make text easier for the user to read. But browser zoom also scales images. In some cases, this is probably desirable, as the user may want to get a better look at an image as well as the text. But,  images scaled through zooming are going to be pixellated and blurry, so zooming may not help the user at all. And, I&#8217;m willing to bet that in most cases, users have no need or desire to view your logo or sidebar ad at three times its original size, and that the now-huge images are just getting in their way. (That&#8217;s why I reset Firefox, my default browser, to <a href="http://support.mozilla.com/en-US/kb/Text+Zoom">just scale text instead of zooming</a>.)</p>
<p>If you have images that you think the user will want to get a closer look at, you can choose to scale only these images using easy CSS tricks. You can set up your images and CSS in such a way that the images will have little distortion or blurriness when scaled dynamically by the browser. The other images can all remain a constant size, so that they don&#8217;t get in the way of users with very large text and contribute to horizontal scrollbars, float drops, or other nasty things that can happen when you put huge images into web pages. And of couse, if a user <em>does</em> want to scale one of the non-scalable images, they can always use the browser zoom function as a backup method.</p>
<h3>Conclusion</h3>
<p>Again, I have to stress that  zooming is a great function for browsers to include. Also, fixed-width layouts are not evil—they are ideal in certain situations. But liquid and elastic layouts have a lot of benefits that fixed-width layouts in combination with browser zoom can&#8217;t necessarily match. Luckily, I&#8217;m <a href="http://adactio.com/journal/1576">not the only one</a> who recognizes this. Don&#8217;t use browser zooming as a reason to stop—or never start—making flexible layouts.</p>
<p>If you want more detail on all these benefits of flexible layouts, check out the <a href="http://www.flexiblewebbook.com/bonus.html">free sample of Chapter 1</a> of my book, <a href="http://www.flexiblewebbook.com">Flexible Web Design: Creating Liquid and Elastic Layouts with CSS</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://zomigi.com/blog/why-browser-zoom-shouldnt-kill-flexible-layouts/feed/</wfw:commentRss>
		<slash:comments>40</slash:comments>
		</item>
	</channel>
</rss>
