<?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>Kyle Larson Web Design Articles &#187; Blog</title>
	<atom:link href="http://www.kylejlarson.com/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.kylejlarson.com</link>
	<description>kylejlarson.com - Web Design Blog of Kyle J Larson</description>
	<lastBuildDate>Wed, 05 Jun 2013 05:31:51 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>How SimCity Taught Me to Design Websites</title>
		<link>http://www.kylejlarson.com/blog/2013/how-sim-city-taught-me-to-design-websites/</link>
		<comments>http://www.kylejlarson.com/blog/2013/how-sim-city-taught-me-to-design-websites/#comments</comments>
		<pubDate>Sun, 17 Feb 2013 23:50:20 +0000</pubDate>
		<dc:creator>Kyle Larson</dc:creator>
				<category><![CDATA[Architecture]]></category>
		<category><![CDATA[Design Process]]></category>

		<guid isPermaLink="false">http://www.kylejlarson.com/?p=1187</guid>
		<description><![CDATA[The path to building a great city in SimCity is very similar to designing and optimizing a successful website. Here's what I learned from the game!]]></description>
				<content:encoded><![CDATA[<p>The fun I had putting my passion and energy into playing the game SimCity 2000 as a kid explains why I love building websites. When SimCity 2000 came out I purchased a copy for my Mac and was immediately hooked. The game was fun to play, required imagination, and was a perfect intersection of my interests in design, strategy, and planning. I spent hours designing all kinds of different cities, experimenting with different layouts, reading gigantic manuals on strategy, and discussing the game with friends. I got a chance to test out a beta of the <a href="http://www.simcity.com/">new SimCity game</a> coming out this year and it made me realize that the skills I learned playing the game translate perfectly into my real-world job, designing websites.</p>
<p><img class="fullImage" alt="simcity 2000 city" src="http://www.kylejlarson.com/blog/wp-content/uploads/2013/02/simcity_city.jpg" /> <em>One of my original cities from 1997.</em></p>
<h2>Start with a Goal</h2>
<p>The first key to building a successful city is knowing what your goal is. Do you want a giant metropolis, an entertainment destination, a giant bank account, or the happiest sims in the world? You can have multiple goals, but you should decide what is most important to you for the inevitable time when you&#8217;ll have to make a tough decision (do you sacrifice some monthly income to improve pollution and make people happier?).</p>
<p>This is exactly how you should begin your web design process. Decide what your site&#8217;s primary goal is and what you&#8217;ll need to provide to your users to achieve that goal. You should evaluate anything else you build into the site (or product) and make sure it supports your goal instead of holding you back.</p>
<h2>Plan Ahead</h2>
<p>In SimCity and web design, planning ahead is crucial to achieving your goal. Growing a city requires close attention to a variety of factors including: the distance from your sims to city services, a logical network of roads, and the correct ratios of housing and employment. Good web design begins with gathering content and deciding how it should be organized. Starting with a good foundation makes it easier to scale without having problems. If you don&#8217;t plan these things out, you&#8217;re going to spend a lot of time and money trying to fix them later.</p>
<p><img class="fullImage" alt="simcity 2000 planning" src="http://www.kylejlarson.com/blog/wp-content/uploads/2013/02/simcity_zones.jpg" /><br />
<em>An organized city.</em></p>
<h2>Get Feedback and Optimize</h2>
<p>SimCity is all about making decisions based on the feedback that the game provides you. It is filled with advice for you to leverage including: a team of advisors, charts, graphs, overlays, and the monthly newspaper. You can also learn a lot just by watching how your city develops and how your sims behave. This is where the game really gets fun. With your goal in mind, target something that you&#8217;d like to improve and start to experiment. You&#8217;ve got all the data immediately available to decide what is successful and what to continue tweaking.</p>
<p><img class="fullImage" alt="SimCity 2000 Feedback" src="http://www.kylejlarson.com/blog/wp-content/uploads/2013/02/simcity_feedback.jpg" /></p>
<p>Managing a website works almost exactly the same way, you just have to set up the tools to provide feedback. These items can include: <a href="http://www.google.com/analytics/">Google Analytics</a> for statistics, <a href="https://www.optimizely.com/">Optimizely</a> for A/B testing, <a href="http://www.usertesting.com/">Usertesting.com</a> for visual feedback, <a href="http://www.crazyegg.com/">Crazy Egg</a> for data mapping, and online forms for conducting user surveys. Once you have all this data coming in you can start tweaking things just like you did in SimCity and see what works.</p>
<h2>Don&#8217;t be Afraid to Adjust</h2>
<p>Part of any good design process is being willing to acknowledge when something isn&#8217;t working and change it. In SimCity, the bulldozer tool is your best friend. You&#8217;ll need to remove polluting buildings, fix roads with traffic issues, and clear space to fill in things you might have missed along the way. The web works in a similar way. Something may have seemed like a great idea to begin with, but if it&#8217;s getting in the way of your primary goal you&#8217;ll need to reassess. Don&#8217;t be afraid to cut a feature, simplify a design, or re-write content. Often cutting can be just as important as building.</p>
<p><img class="fullImage" alt="SimCity 2000 Bulldozer" src="http://www.kylejlarson.com/blog/wp-content/uploads/2013/02/simcity_bulldoze.jpg" /></p>
<h2>Connect to Your Neighbors</h2>
<p>In SimCity you can connect your roads to your neighbors so people can move between cities and strike deals to share resources. It&#8217;s important to realize you can&#8217;t be the best at everything and that&#8217;s why you need to work with your neighbors. Keep your focus on your primary goal and don&#8217;t waste your time trying to build something that you can get for a small fee. In web design these things could include textures, photography, copywriting, code snippets, scripts, and plugins. Web design is also about community. Share your findings on social media, blogs, forums and keep the conversation going. The community makes everyone&#8217;s work stronger.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kylejlarson.com/blog/2013/how-sim-city-taught-me-to-design-websites/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Finding a Better Web Design Process</title>
		<link>http://www.kylejlarson.com/blog/2012/finding-a-better-web-design-process/</link>
		<comments>http://www.kylejlarson.com/blog/2012/finding-a-better-web-design-process/#comments</comments>
		<pubDate>Mon, 10 Dec 2012 07:02:30 +0000</pubDate>
		<dc:creator>Kyle Larson</dc:creator>
				<category><![CDATA[Architecture]]></category>
		<category><![CDATA[Design Process]]></category>

		<guid isPermaLink="false">http://www.kylejlarson.com/blog/?p=767</guid>
		<description><![CDATA[Creating a successful website is all about process. A good design process helps you get the ideas out of your head and into a format that can help you make logical design decisions.]]></description>
				<content:encoded><![CDATA[<p>Creating a successful website is all about process. A good design process helps you get the ideas out of your head and into a format that can help you make logical design decisions. Breaking the process down into chunks lets you focus on the most important choices first, without getting bogged down in minutia like using a lighter shade of blue, finding the perfect stock photo, or increasing the size of a logo. This article will walk through my approach to the web design process and how it can be used to create a better website.</p>
<h2>Step 1: Content</h2>
<p>The first step of any good website process <strong>absolutely</strong> needs to be getting content! This content includes analyzing an existing site, surveying stakeholders, doing user research, and much more. We&#8217;re going to take this content and turn it into a fully-functional design. Starting the process without it is like building a house without a foundation; it may end up looking pretty, but it&#8217;s not going to take long before it crumbles down.</p>
<p>This article assumes you&#8217;re starting with this content and here are some resources for getting that done:</p>
<ul>
<li><a href="http://www.amazon.com/gp/product/0321808304/ref=as_li_qf_sp_asin_tl?ie=UTF8&amp;camp=1789&amp;creative=9325&amp;creativeASIN=0321808304&amp;linkCode=as2&amp;tag=twincitieship-20">Content Strategy for the Web, 2nd Edition</a><img style="border: none !important; margin: 0px !important;" alt="" src="http://www.assoc-amazon.com/e/ir?t=twincitieship-20&amp;l=as2&amp;o=1&amp;a=0321808304" width="1" height="1" border="0" /> &#8211; Amazon</li>
<li><a href="http://www.smashingmagazine.com/2010/03/17/starting-out-organized-website-content-planning-the-right-way/">Starting Out Organized: Website Content Planning the Right Way</a> &#8211; Smashing Magazine</li>
</ul>
<h2>Step 2: Project Analysis</h2>
<p>After you&#8217;ve got all your content, the next step is to take it and break it into pieces that will help guide your architectural and design decisions.</p>
<p>These design items include:</p>
<ul>
<li><em>A list of user goals</em> &#8211; What are users trying to accomplish?</li>
<li><em>A list of stakeholder goals</em> &#8211; What do the stakeholders in the project want to accomplish?</li>
<li><em>Brand guides and styles</em> &#8211; Is the site professional, fun, artistic, modern, or rugged?</li>
</ul>
<p>Your architectural pieces will include (<a href="http://www.visio.com">Visio</a> &amp; <a href="http://www.omnigroup.com/products/omnigraffle/">Omnigraffle</a> are useful for site maps and diagrams):</p>
<ul>
<li><em>A site map</em> &#8211; How will the user navigate through the site? How can content be logically grouped?</li>
<li><em>User flow diagrams</em> - What steps will the user take to accomplish their goals?</li>
<li><em>Back-end requirements</em> &#8211; What technologies will be used to make the site functional?</li>
</ul>
<p><a href="http://www.kylejlarson.com/blog/wp-content/uploads/2012/12/user_flow.png"><img class="aligncenter size-large wp-image-797 fullImage" title="user_flow" alt="user flow" src="http://www.kylejlarson.com/blog/wp-content/uploads/2012/12/user_flow.png" /></a></p>
<h2>Step 3: Sketching (Low-Fidelity)</h2>
<p>Once I have all the requirements, content, and architecture defined for a website, I start sketching. I think this is an extremely important part of the process because it lets you create a bunch of layouts very quickly. If you went straight to Photoshop or another mock-up tool you&#8217;ll tend to waste time not focusing on the essentials. My goal is to &#8216;fail fast&#8217; in the early stages of a design, before the productivity and mental costs of failing are much higher. You&#8217;ll find that each time a design doesn&#8217;t work, you learn something that improves the subsequent designs.</p>
<p>When doing your first sketches, it&#8217;s important to only focus on organization and placement of key content, not on the quality of your sketch. The goal isn&#8217;t to present these first sketches to stakeholders. It may be helpful to use a whiteboard or other large-tipped marker to prevent being tempted to add too much detail. Consider sketching any significant sections of your site, not just the homepage.</p>
<p><a href="http://www.kylejlarson.com/blog/wp-content/uploads/2012/12/chief_2012_sketches.jpg"><img class="aligncenter size-large wp-image-795 fullImage" title="chief_2012_sketches" alt="sketches" src="http://www.kylejlarson.com/blog/wp-content/uploads/2012/12/chief_2012_sketches.jpg" /></a></p>
<div class="callout texture">
<h3>Build &gt; Test &gt; Refine</h3>
<p>Every piece of the design process follows the same pattern: Build, Test, Refine. Our goal is to start working with our ideas in this cycle as fast as possible. Sketches are very fast to build, provide enough information to visually test, and require minimal effort to refine. To test your sketches, focus on what you learned from the content discovery and make sure the layout accomplishes user and stakeholder goals.</p>
</div>
<p>Once you&#8217;ve completed your discovery by sketching, you can either create a slightly more detailed sketch to show others involved in the project or you can take the concept to a higher-fidelity.</p>
<h2>Step 4: Choose a Path</h2>
<p>Many designers have a favorite process that they swear by to continue the design from here. They may suggest jumping into Photoshop or Illustrator, working in code, or creating wireframes. I think all of these are valid next steps, but it&#8217;s important to look at the big picture and decide what is going to be most useful for the project you&#8217;re currently working on. Don&#8217;t follow design dogma. I&#8217;ll outline a few options for your next step and when I use each of them.</p>
<p>If you&#8217;re working with many stakeholders and need stages of approval, it will make sense to create a <strong>medium fidelity</strong> mockup from your sketches. Typically, this is a good idea and can save you a lot of headaches down the road. By taking this approach you can apply the build, test, and refine process without being locked in to a particular design. If you&#8217;re working on a small site, a very minimally designed site, or don&#8217;t need buy-off you may choose to go straight into your <strong>high-fidelity</strong> design.</p>
<h2>Medium-Fidelity</h2>
<p>A medium-fidelity design takes our initial sketches and gives them some additional definition. In this stage, don&#8217;t focus on the colors, textures, and pixel-precision of the final site. Just like the sketches, this stage allows further refinement without investing so much time that it&#8217;s painful to have some failures to learn from. Medium-fidelity mockups are extremely useful for getting buy-off from stakeholders and conducting user-testing. They can be created using a tool for a static layout, by writing code to allow functionality testing, or both.</p>
<p>Wireframes and task flows allow you to build an accurate representation of a site in a short amount of time. These can be shown to users and stakeholders to get immediate feedback without loosing them on emotional reactions they may have to how something is designed. Some tools you may find useful in this process are <a href="http://www.visio.com">Visio</a>, <a href="http://www.omnigroup.com/products/omnigraffle/">Omnigraffle</a>, and <a href="http://www.balsamiq.com/">Balsamiq</a>. I&#8217;ve had a lot of success using Balsamiq for this process.</p>
<p><a href="http://www.kylejlarson.com/blog/wp-content/uploads/2012/12/screentool_balsamiq.jpg"><img class="aligncenter size-large wp-image-804 fullImage" title="screentool_balsamiq" alt="balsamiq wireframe" src="http://www.kylejlarson.com/blog/wp-content/uploads/2012/12/screentool_balsamiq.jpg" /></a></p>
<p>Medium-fidelity designs can also be created in HTML, CSS, and simple JavaScript to give the feeling of actually using a website. One benefit of this method is that you&#8217;ve already started a code-base that you can expand on once you&#8217;re in the final stages of building the site. If you&#8217;re building a <a href="http://www.alistapart.com/articles/responsive-web-design/">responsive website</a> (a site that adapts to various screen sizes), this can be extremely useful for testing before having a lot of complex code. If you&#8217;re interested in user testing, you could use a service like <a href="http://www.usertesting.com/">usertesting.com</a> to get immediate feedback.</p>
<p><a href="http://www.kylejlarson.com/blog/wp-content/uploads/2012/12/responsive_mockup.jpg"><img class="aligncenter size-large wp-image-806 fullImage" title="responsive_mockup" alt="responsive mockup" src="http://www.kylejlarson.com/blog/wp-content/uploads/2012/12/responsive_mockup.jpg" /></a></p>
<h2>High-Fidelity</h2>
<p>The final stage of the design process is creating the high-fidelity design. This design is the culmination of all the research, building, testing, and refining that you&#8217;ve done. In this stage, you have the option of creating your design in a graphics program or going straight to code. I find that if I&#8217;m doing a very complex site, with a lot of textures and graphics, that it&#8217;s easier to make at least part of the template in Photoshop so I can write my code to the design. This way I don&#8217;t have to do as much code clean-up from my experimentation with styling. A less complex design or a responsive site lends itself to designing in code because it&#8217;ll typically be faster to reach the testing phase.</p>
<p style="text-align: center;"><img class="aligncenter size-full wp-image-827 fullImage" title="high_fidelity" alt="" src="http://www.kylejlarson.com/blog/wp-content/uploads/2013/01/chief_2012.jpg" /></p>
<h2>Various Tips</h2>
<ul>
<li>Having problems with clients requesting &#8216;Frankenstein&#8217; designs (combining elements of multiple designs into one)? Instead of providing different high-fidelity designs, get medium-fidelity mock-ups in their hands to make important decisions before they get emotional about design elements.</li>
<li>Make sure to pass along any technical requirements, if you&#8217;re working with a developer or server team, so they can work on them in tandem with your design process.</li>
<li>Always get all your ideas out of your head and store them somewhere (paper or electronic). They&#8217;re much easier to test this way and you won&#8217;t forget something important.</li>
</ul>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kylejlarson.com/blog/2012/finding-a-better-web-design-process/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>iPhone 5 Web Design</title>
		<link>http://www.kylejlarson.com/blog/2012/iphone-5-web-design/</link>
		<comments>http://www.kylejlarson.com/blog/2012/iphone-5-web-design/#comments</comments>
		<pubDate>Thu, 13 Sep 2012 20:25:49 +0000</pubDate>
		<dc:creator>Kyle Larson</dc:creator>
				<category><![CDATA[Mobile]]></category>

		<guid isPermaLink="false">http://www.kylejlarson.com/blog/?p=695</guid>
		<description><![CDATA[A guide on building websites for iPhone 5. Details on the iPhone 5 screen resolution and how to get your website or web app ready.]]></description>
				<content:encoded><![CDATA[<p>Apple&#8217;s newest phone, the iPhone 5, was announced yesterday and it will be available to the public on September 21st. The biggest change for web designers to be aware of is the new screen dimensions. While app developers will have to make updates for their apps to run in full screen, our websites will simply have more available screen real estate. Web designers should be aware of what will be displayed before scrolling (what is above the fold) and how to update the start-up image for your web app.</p>
<h2>iPhone 5 Resolution</h2>
<p>The iPhone 5 resolution has increased to 1,136 x 640 px at the same 326 pixels per inch (ppi) as previous Retina Devices. The iPhone automatically scales the viewport to fit 980 px so it works well with most webpages without any changes. If you&#8217;d like to specifically target the default screen size of the iPhone for a mobile site you can add the following metatag:</p>
<pre><code>&lt;meta name="viewport" content="initial-scale=1.0"&gt;</code></pre>
<p>Apple has a reference of the available options for the <a href="http://developer.apple.com/library/safari/#documentation/appleapplications/reference/SafariHTMLRef/Articles/MetaTags.html">viewport metatag</a>.</p>
<p>The default full screen size of the iPhone 5 is 320 x 568 px (w x h). This is half of the screen resolution because of the pixel doubling in a Retina Display. If you&#8217;re looking to see what will be displayed &#8216;above the fold&#8217; (what the user can see before scrolling), you&#8217;ll also need to keep in mind the size of the OS bar and the browser UI. Here are the key numbers you&#8217;ll need to know for previous versions of the iPhone and the iPhone 5:</p>
<h2>iPhone Resolution Comparison</h2>
<p><img src="http://www.kylejlarson.com/blog/wp-content/uploads/2012/09/iphone_resolution.jpg" alt="iphone 5 resolution comparison" title="iphone_resolution" width="700" height="574" class="aligncenter size-full wp-image-701" /></p>
<style>
.iphoneDataTable td, .iphoneDataTable th {border: 1px solid #ccc; padding: 15px;}
.iphoneDataTable th {font-weight: bold; background: #eee;}
#dataBlank {border: 0 !important;}
</style>
<table class="iphoneDataTable" width="100%">
<tr>
<td id="dataBlank"></td>
<th>iPhone 1-4s</th>
<th>iPhone 5</th>
</tr>
<tr>
<th>Portrait (WxH)</th>
<td>320 x 356 px<br /> (320 x 416* / 320 x 460**)</td>
<td>320 x 444 px<br /> (320 x 504* / 320 x 548**)</td>
</tr>
<tr>
<th>Landscape (WxH)</th>
<td>480 x 196 px<br /> (480 x 256* / 480 x 300**)</td>
<td>568 x 196 px<br /> (568 x 256* / 568 x 300**)</td>
</tr>
</table>
<p><em class="smallText">* &#8211; measurements without the browser navigation bar</em><br />
<em class="smallText">** &#8211; measurements without any browser chrome for a web app</em></p>
<p>If you are building a website that you would like to work well on many devices, I&#8217;d highly recommend looking into responsive webdesign. Ethan Marcotte has a great article on <a href="http://www.alistapart.com/articles/responsive-web-design/">Responsive Web Design</a> at A List Apart to get you started.</p>
<h2>iPhone 5 Web App Not Fullscreen</h2>
<p>If you&#8217;re having issues with your web app not running at full screen on iPhone 5 (web app is letterboxed), it is likely due to an issue with the viewport metatag. The new iPhone doesn&#8217;t seem to like the width being set in the metatag. When you remove it, the issue is fixed. For example:<br />
Broken Code:</p>
<pre><code>&lt;meta name="viewport" content="user-scalable=0, initial-scale=1.0, width=device-width"&gt;</code></pre>
<p>Working Code:</p>
<pre><code>&lt;meta name="viewport" content="user-scalable=0, initial-scale=1.0"&gt;</code></pre>
<h2>iPhone 5 Startup Image</h2>
<p><em>Updated based on code shared by K K in the comments below.</em></p>
<p>If you&#8217;d like to make your website a web app so users can save it to their phone and run it similar to an app, you can make an iPhone startup image to display while the page is loading.</p>
<p>First make sure you do not have width in your viewport metatag, that seems to make web apps run in the smaller mode, as mentioned above.</p>
<p>Then add the web app metatag:</p>
<pre><code>&lt;meta name="apple-mobile-web-app-capable" content="yes" /&gt;</code></pre>
<p>Then create graphics at these sizes for compatibility with each phone:</p>
<table class="iphoneDataTable" style="margin-bottom:20px;">
<tr>
<th>iPhone 1 &#8211; 3gs:</th>
<td>320 x 460 px</td>
</tr>
<tr>
<th>iPhone 4 &#8211; 4s:</th>
<td>640 x 920 px</td>
</tr>
<tr>
<th>iPhone 5:</th>
<td>640 x 1096 px</td>
</tr>
</table>
<p>Then add the code in your page&#8217;s header to link to them:</p>
<pre><code>&lt;link rel="apple-touch-startup-image" href="images/ios_startup.png"&gt; 
&lt;link rel="apple-touch-startup-image" href="images/ios_startup@2x.png" sizes="640x920"&gt;
&lt;link rel="apple-touch-startup-image" href="images/ios_startup-large@2x.png" sizes="640x1096"&gt;</code></pre>
<h2>iPhone 5 Retina Images</h2>
<p>The iPhone 5 supports retina images just like the iPhone 4 &#038; 4s. There are a variety of methods for adding these images, but the basic concept is to create an image at 2x the size you&#8217;d like it displayed and then tell the browser to display it at half of that size. The Retina Device will see the extra pixels in the image and display them. I&#8217;ve written a blog post on some methods for <a href="http://www.kylejlarson.com/blog/2012/creating-retina-images-for-your-website/">adding Retina images to your website</a> for reference. The startup images described above are Retina-ready.</p>
<h2>iPhone 5 Web App Icons</h2>
<p>The iPhone 5&#8242;s icons are the same resolution as the Retina iPhone 4/4s. Here is a blog post describing <a href="http://www.kylejlarson.com/blog/2012/adding-an-icon-for-iphone-ipad-android-to-your-website/">how to create an app icon for your site</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kylejlarson.com/blog/2012/iphone-5-web-design/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Creating Retina Images for Your Website</title>
		<link>http://www.kylejlarson.com/blog/2012/creating-retina-images-for-your-website/</link>
		<comments>http://www.kylejlarson.com/blog/2012/creating-retina-images-for-your-website/#comments</comments>
		<pubDate>Fri, 06 Jul 2012 15:00:44 +0000</pubDate>
		<dc:creator>Kyle Larson</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Mobile]]></category>

		<guid isPermaLink="false">http://www.kylejlarson.com/blog/?p=430</guid>
		<description><![CDATA[This guide will help you get started making your websites and web apps look amazingly sharp on Apple's newest devices with retina images!]]></description>
				<content:encoded><![CDATA[<style>
table td, table th {padding: 5px 20px 5px 0;}
table {margin-bottom: 20px;}
</style>
<p>Apple&#8217;s newest devices feature the Retina Display, a screen that packs double as many pixels into the same space as older devices. For designers this immediately brings up the question, &#8220;What can I do to make my content look outstanding on these new iPads and iPhones?&#8221;. First there are a few tough questions to consider, but then this guide will help you get started making your websites and web apps look amazingly sharp with Retina images!</p>
<p><img class="aligncenter size-full wp-image-1129 fullImage" alt="retina image comparison" src="http://www.kylejlarson.com/blog/wp-content/uploads/2012/07/retina_test.jpg" /></p>
<h2>Things to Consider When Adding Retina Images</h2>
<p>The main issue with adding retina images is that the images are double as large and will take up extra bandwidth (this won&#8217;t be an issue for actual iOS apps, but this guide is covering web sites &amp; web apps only). If your site is mostly used on-the-go over a 3G network it may not be wise to make all your graphics high-definition, but maybe choose only a select few important images. If you&#8217;re creating something that will be used more often on a WI-FI connection or have an application that is deserving of the extra wait for hi-res graphics these steps below will help you target only hi-res capable devices.</p>
<h2>Creating Retina Icons for Your Website</h2>
<p>When users add your website or web app to their homescreen it will be represented by an icon. These sizes (<a href="http://developer.apple.com/library/ios/#DOCUMENTATION/UserExperience/Conceptual/MobileHIG/IconsImages/IconsImages.html">from Apple</a>) are as follows:<br />
<img class="alignright size-full wp-image-476" title="ios_icons_retina" alt="ios icon samples" src="http://www.kylejlarson.com/blog/wp-content/uploads/2012/04/ios_icons_retina.png" width="340" height="150" /></p>
<table>
<tbody>
<tr>
<th>iPhone</th>
<td>57 x 57</td>
</tr>
<tr>
<th>Retina iPhone</th>
<td>114 x 114</td>
</tr>
<tr>
<th>iPad</th>
<td>72 x 72</td>
</tr>
<tr>
<th>Retina iPad</th>
<td>144 x 144</td>
</tr>
</tbody>
</table>
<p>For each of these images you create you can link them in the head of your document like this (if you want the device to add the round corners remove -precomposed):</p>
<pre><code>&lt;link href="touch-icon-iphone.png" rel="apple-touch-icon-precomposed" /&gt;
&lt;link href="touch-icon-ipad.png" rel="apple-touch-icon-precomposed" sizes="72x72" /&gt;
&lt;link href="touch-icon-iphone4.png" rel="apple-touch-icon-precomposed" sizes="114x114" /&gt;
&lt;link href="touch-icon-ipad3.png" rel="apple-touch-icon-precomposed" sizes="144x144" /&gt;</code></pre>
<p>If the correct size isn&#8217;t specified the device will use the smallest icon that is larger than the recommended size (i.e. if you left out the 114px the iPhone 4 would use the 144px icon).</p>
<h2>Retina Background Images</h2>
<p>Background images that are specified in your CSS can be swapped out using media queries. You&#8217;ll first want to generate two versions of each image. For example &#8216;bgPattern.png&#8217; at 100px x 100px and &#8216;bgPattern@2x.png&#8217; at 200px x 200px. It will be useful to have a standard naming convention such as adding @2x for these retina images. To add the new @2x image to your site simply add in the media query below (You can add any additional styles that have background images within the braces of the same media query):</p>
<pre><code>.repeatingPattern {
     background: url(../images/bgPattern.png) repeat;
     background-size: 100px 100px;
}

@media only screen and (-webkit-min-device-pixel-ratio: 2) {
     .repeatingPattern {
          background: url(../images/bgPattern@2x.png) repeat;
     }
}</code></pre>
<h2>JavaScript for Retina Image Replacement</h2>
<p>For your retina images that aren&#8217;t backgrounds the best option seems to be either creating graphics with CSS, using SVG, or replacing your images with JavaScript. Just like the background images, you&#8217;ll want to create a normal image and one &#8216;@2x&#8217; image. Then with JavaScript you can detect if the pixel ratio of the browser is 2x, just like you did with the media query:</p>
<pre><code>if (window.devicePixelRatio == 2) {

//Replace your img src with the new retina image

}</code></pre>
<p>If you&#8217;re using jQuery you could quickly replace all your images like this very basic example below. It&#8217;s a good idea to add a class to identify the images with hi-res versions so you don&#8217;t replace any others by mistake. I&#8217;ve added a class=&#8221;hires&#8221; for this example. Also make sure you have the standard (non-retina) image height and width set in the HTML:</p>
<pre><code>&lt;img class="hires" alt="" src="search.png" width="100" height="100" /&gt;
&lt;script type="text/javascript"&gt;
$(function () {

	if (window.devicePixelRatio == 2) {

          var images = $("img.hires");

          // loop through the images and make them hi-res
          for(var i = 0; i &lt; images.length; i++) {

            // create new image name
            var imageType = images[i].src.substr(-4);
            var imageName = images[i].src.substr(0, images[i].src.length - 4);
            imageName += "@2x" + imageType;

            //rename image
            images[i].src = imageName;
          }
     }

});
&lt;/script&gt;</code></pre>
<h2>Server-Side Retina Images</h2>
<p>If you&#8217;d like to implement a server-side retina image solution, I recommend checking out <a href="http://retina-images.complexcompulsions.com/">Jeremy Worboys&#8217; Retina Images</a> (which he also posted in the comments below). His solution uses PHP code to determine which image should be served. The benefit of this solution is that it doesn&#8217;t have to replace the small image with the retina one so you&#8217;re using less bandwidth, especially if you have lots of images that you&#8217;re replacing.</p>
<h2>Website Optimization for Retina Displays</h2>
<p>If you&#8217;re looking for additional information on creating Retina images, I&#8217;ve recently had a short book published called <a href="http://www.optimizeforretina.com/">Website Optimization for Retina Displays</a> that covers a range of related topics. It contains some of what is above, but also includes samples for many different situations for adding Retina images. It explains the basics of creating Retina images, backgrounds, sprites, and borders. Then it talks about using media queries, creating graphics with CSS, embedding fonts, creating app icons, and more tips for creating Retina websites.</p>
<p><a href="http://www.optimizeforretina.com/"><img src="http://www.kylejlarson.com/blog/wp-content/uploads/2012/07/retina-banner.jpg" alt="retina website book" class="fullImage" /></a></p>
<p><em>article originally published April 6, 2012</em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.kylejlarson.com/blog/2012/creating-retina-images-for-your-website/feed/</wfw:commentRss>
		<slash:comments>38</slash:comments>
		</item>
		<item>
		<title>Adding an Icon for iPhone, iPad &amp; Android to Your Website</title>
		<link>http://www.kylejlarson.com/blog/2012/adding-an-icon-for-iphone-ipad-android-to-your-website/</link>
		<comments>http://www.kylejlarson.com/blog/2012/adding-an-icon-for-iphone-ipad-android-to-your-website/#comments</comments>
		<pubDate>Thu, 19 Apr 2012 14:20:35 +0000</pubDate>
		<dc:creator>Kyle Larson</dc:creator>
				<category><![CDATA[HTML]]></category>
		<category><![CDATA[Mobile]]></category>

		<guid isPermaLink="false">http://kylejlarson.com/blog/?p=156</guid>
		<description><![CDATA[Add custom icons to your website for the iPhone, iPad, and Android for users that save it to their homescreen to look like an App.]]></description>
				<content:encoded><![CDATA[<style><!--
#iconChart {margin-bottom: 20px;} #iconChart th, #iconChart td {border: 1px solid #ccc; padding: 10px; text-align: center;} #iconChart th {font-weight: bold;}
--></style>
<p>Many sites currently add a favicon before launch that is visible in your user&#8217;s browser tabs and bookmarks, but lots of sites are still missing icons for iOS. By adding an iOS icon, anyone who decides to save your webpage to the home screen of their iPhone, iPad, or Android* will see a nice app-like icon rather than an image of your page.</p>
<p>The first step is creating an image. To support the newest high resolution iPhone and iPad you&#8217;ll want to create several different sized images (The device will take the nearest size larger than it&#8217;s default size if you don&#8217;t have them all). You can save your images as PNGs to any directory on your site.</p>
<p><img class="aligncenter size-full wp-image-1131 fullImage" alt="ios icons" src="http://www.kylejlarson.com/blog/wp-content/uploads/2012/04/ios_icons.jpg" /></p>
<p>Here is a table of the current <a href="http://developer.apple.com/library/ios/#documentation/userexperience/conceptual/mobilehig/IconsImages/IconsImages.html">iOS icon sizes from Apple</a>:</p>
<table id="iconChart">
<tbody>
<tr>
<th>iPhone</th>
<th>iPhone Hi-Res</th>
<th>iPad</th>
<th>iPad Hi-Res</th>
</tr>
<tr>
<td>57&#215;57</td>
<td>114&#215;114</td>
<td>72&#215;72</td>
<td>144&#215;144</td>
</tr>
</tbody>
</table>
<p>Next you&#8217;ll just add a simple bit of code to the HEAD of your site so the devices can find your images (iOS will find these automatically if they are in your site&#8217;s root directory, but it&#8217;s recommended to include it):</p>
<pre><code style="font-size: 10px;">		&lt;link href="apple-touch-icon-precomposed.png" rel="apple-touch-icon-precomposed" /&gt;
		&lt;link href="apple-touch-icon-72x72-precomposed.png" rel="apple-touch-icon-precomposed" sizes="72x72" /&gt;
		&lt;link href="apple-touch-icon-114x114-precomposed.png" rel="apple-touch-icon-precomposed" sizes="114x114" /&gt;
		&lt;link href="apple-touch-icon-144x144-precomposed.png" rel="apple-touch-icon-precomposed" sizes="144x144" /&gt;</code></pre>
<p>If you&#8217;d like Apple devices to add rounded corners, a drop shadow, and reflection to your icon automatically you can remove the precomposed portion:</p>
<pre><code>		&lt;link href="apple-touch-icon.png" rel="apple-touch-icon" /&gt;</code></pre>
<p>If you&#8217;re creating your iOS icon image you can find templates for use around the web; here&#8217;s a <a href="http://dribbble.com/shots/461654-iOS-App-Icon-Template">good template from Louie Mantia</a> that covers all the sizes.</p>
<p><img class="aligncenter size-full wp-image-606" title="ios_icons_phone" alt="ios icons iphone" src="http://www.kylejlarson.com/blog/wp-content/uploads/2010/09/ios_icons_phone.jpg" width="320" height="480" /></p>
<p>* Note on Android Devices: versions 1.5 &amp; 1.6 work with the &#8220;-precomposed&#8221; images only and 2.1 &amp; new will read the tag without &#8220;-precomposed&#8221;.</p>
<p>** Updated this old article from Sept 3, 2010 to reflect changes with the new iPad</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kylejlarson.com/blog/2012/adding-an-icon-for-iphone-ipad-android-to-your-website/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Animated Search Box with HTML5 Placeholder</title>
		<link>http://www.kylejlarson.com/blog/2012/animated-search-box-with-html5-placeholder/</link>
		<comments>http://www.kylejlarson.com/blog/2012/animated-search-box-with-html5-placeholder/#comments</comments>
		<pubDate>Mon, 16 Apr 2012 20:29:12 +0000</pubDate>
		<dc:creator>Kyle Larson</dc:creator>
				<category><![CDATA[HTML]]></category>
		<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://www.kylejlarson.com/blog/?p=481</guid>
		<description><![CDATA[Let users know what they can enter in your search by creating an animated search box using an HTML5 placeholder.]]></description>
				<content:encoded><![CDATA[<style>
#navBar {background: url(http://www.kylejlarson.com/blog/wp-content/uploads/2012/04/bg_navBar.jpg) repeat-x; height: 44px; margin-bottom: 20px;}
#searchBox {background: #1f1f1f; border: 1px solid #606060; border-radius: 5px; box-shadow: 0 0 4px #000000 inset; color: #fff; font-size: 13px; margin: 6px; padding: 5px 25px 5px 4px; width: 172px;}
#searchButton {position: absolute; margin: 12px 0 0 -26px;}	
</style>

<p>Search is one of the most important functions on large websites. Search engines like Google have made vast improvements in search and as a result many users quickly look toward search as a means of navigation. This tutorial shows how you can make an animated search box with the HTML5 placeholder element to show users all the different types of searches they can run on your site.</p>

<h2>The HTML 5 Placeholder</h2>
<p>HTML 5 introduced a number of new options we can use when building forms. The placeholder allows us to add &#8216;hint&#8217; text to the background of an input or textarea that disappears when the user begins typing in the field. This is a great new addition, as the only way to do this previously was with javascript.</p>

<p>As with many new HTML features there are some browser support issues. This will work in all modern versions of Chrome, Safari, Opera, and Firefox. If you are using Internet Explorer this will only work starting in version 10, so we&#8217;ll need to add a fallback for those users.</p>

<div id="navBar"><input id="searchBox" type="text" placeholder="Search Our Site"><input id="searchButton" type="image" src="http://www.kylejlarson.com/blog/wp-content/uploads/2012/04/icon_searchMag.png"></div>

<h2>Creating the HTML Placeholder</h2>
<p>To start off we&#8217;ll create a form field and add a placeholder to it. I&#8217;ve also added some CSS to make it look nice (to fix alignment bugs in IE you may need to place the two inputs on the same line of code):</p>
<pre><code>&lt;style&gt;
     #navBar {
          background: url(bg_navBar.jpg) repeat-x;
          height: 44px;
     }
     #searchBox {
          background: #1f1f1f;
          border: 1px solid #606060;
          border-radius: 5px;
          box-shadow: 0 0 4px #000000 inset;
          color: #fff;
          font-size: 13px;
          margin: 6px;
          padding: 5px 25px 5px 4px;
          width: 172px;
     }
     #searchButton {
          position: absolute; 
          margin: 12px 0 0 -26px;
     }
&lt;/style&gt;

&lt;div id="navBar"&gt;
     &lt;input id="searchBox" type="text" placeholder="Search Our Site"&gt;
     &lt;input id="searchButton" type="image" src="icon_searchMag.png"&gt;
&lt;/div&gt;</code></pre>

<h2>Animating the HTML Placeholder</h2>
<p>Next step we&#8217;ll add in <a href="http://jquery.com/">jQuery</a> and write a script to make an animated search box by changing the content of the placeholder:</p>
<pre><code>...
&lt;div id="navBar"&gt;
     &lt;input id="searchBox" type="text" placeholder="Search Our Site"&gt;
     &lt;input id="searchButton" type="image" src="icon_searchMag.png"&gt;
&lt;/div&gt;

&lt;script type="text/javascript" src="jquery.min.js"&gt;&lt;/script&gt;
&lt;script&gt;
     function changePlaceholder() {
          
          // create our list of different placeholders we'll use
          var placeHolders = new Array(),
          placeHolders[0] = "Search for Toys";
          placeHolders[1] = "Search for Video Games";
          placeHolders[2] = "Search for DVDs";
          
          // x will be our counter for what placeholder we're currently showing
          var x = 0;
          
          // change the placeholder to the current number of our counter
          $('#searchBox').attr('placeholder', placeHolders[x]);

          // increase the counter
          x++;
	  
          // if we've hit the last placeholder then start over
          if(x &gt;= placeHolders.length) {
               x = 0;
          }
	  
          // run this function again in 3 seconds to keep the loop going	
          setTimeout('changePlaceholder()', 3000);
     }
	
     // start running the changePlaceholder function after 3 seconds
     t = setTimeout('changePlaceholder()', 3000);
&lt;/script&gt;</code></pre>

<h2>Fix for IE</h2>
Now we have a working animated placeholder in most browsers, but it still doesn&#8217;t show anything in IE 9 or below. For these older browsers we&#8217;ll just make a static placeholder. There are a number of jQuery scripts out there that solve this issue. I found <a href="https://github.com/mathiasbynens/jquery-placeholder">Mathias Bynens&#8217; solution</a> to work perfect for this.  Just download the script, link to it in your code, and add the function to run it in your script:</p>

<pre><code>&lt;script type="text/javascript" src="jquery.placeholder.min.js"&gt;&lt;/script&gt;
&lt;script&gt;
     $(function() {
          $('input, textarea').placeholder();        
     });
&lt;/script&gt;</code></pre>

<p>Great, now we&#8217;re just about done with the animated search box but we have an issue&#8230; when the changePlaceholder function runs it breaks the fix! To solve this we&#8217;ll put in a conditional comment to keep the loop from running on IE. Just add this after your /script tag:</p>

<pre style="font-size: 12px">
&lt;!--[if lte IE 9 ]>
<code>     &lt;script&gt;
          clearTimeout(t);
     &lt;/script&gt;</code>
&lt;![endif]-->
</pre>



<script type="text/javascript">
	$(function() {
		$('input, textarea').placeholder();        
	});

	function changePlaceholder() {
		
		$('#searchBox').attr('placeholder', placeHolders[x]);
		x++;
		
		if(x >= placeHolders.length) {
			x = 0;
		}
		
		setTimeout('changePlaceholder()', 3000);
	}
	
	var placeHolders = new Array(),
	x = 0;
	
	placeHolders[0] = "Search for Toys";
	placeHolders[1] = "Search for Video Games";
	placeHolders[2] = "Search for DVDs";
	
	t = setTimeout('changePlaceholder()', 3000);

</script>

<!--[if lte IE 9 ]>
	<script>
		clearTimeout(t);
	</script>
<![endif]-->

<h2>Demo</h2>
<p>You can view the working version above or <a href="http://www.kylejlarson.com/files/placeholder_demo.zip">download the demo and files in a zip</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.kylejlarson.com/blog/2012/animated-search-box-with-html5-placeholder/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Fixed Elements and Scrolling Divs in iOS 5</title>
		<link>http://www.kylejlarson.com/blog/2011/fixed-elements-and-scrolling-divs-in-ios-5/</link>
		<comments>http://www.kylejlarson.com/blog/2011/fixed-elements-and-scrolling-divs-in-ios-5/#comments</comments>
		<pubDate>Fri, 11 Nov 2011 20:58:01 +0000</pubDate>
		<dc:creator>Kyle Larson</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Mobile]]></category>

		<guid isPermaLink="false">http://www.kylejlarson.com/blog/?p=384</guid>
		<description><![CDATA[How to create fixed and scrolling divs in iOS5 to make your iPhone or iPad site look like an App.]]></description>
				<content:encoded><![CDATA[<p>I&#8217;ve been playing around with creating a web app for iOS and testing some of the new features in mobile safari that were released with iOS 5. Fixed divs and the ability to scroll a div are common in iOS native apps but were difficult to implement in a web app. These have both been added in the new safari but they still require some work-arounds to make them function like you probably want.</p>
<h2>Fixed Elements</h2>
<p>The first versions of iOS didn&#8217;t support fixed elements. They would fix correctly to the screen, but then they would scroll along with the rest of your content. In iOS 5, fixed elements (e.g. position: fixed; bottom: 0;) work as expected. </p>
<p>Keep in mind you&#8217;ll want to use the iOS meta tags if you&#8217;re designing specifically for the device. The first line below prevents the default scaling for sites that aren&#8217;t built for to adapt to the screen size and the second allows you to save the site and run it without the browser bars.</p>
<pre>
<code>&lt;meta name="viewport" content="initial-scale = 1.0, user-scalable = no"&gt;
&lt;meta name="apple-mobile-web-app-capable" content="yes" /&gt;</code>
</pre>
<p>The first issue with the fixed elements is that your site will still have the &#8216;bounce&#8217; effect when scrolling past the top/bottom of your content that reveals the browser chrome (background beneath your page as it bounces). If your site doesn&#8217;t need to scroll this is a very simple fix, just add a line to prevent the default action when moving your finger:</p>
<pre>
<code>&lt;script type="text/javascript"&gt;
document.addEventListener('touchmove', function(event) {
     event.preventDefault();
}, false);
&lt;/script&gt;</code>
</pre>
<p>If you want scrolling areas, but don&#8217;t want the browser chrome to show then continue on!</p>
<h2>Scrolling Divs</h2>
<p>Another new feature in iOS 5+ is divs can finally scroll.  To make a div scroll you&#8217;ll just need to add the following (this example has a fixed header but adjust the positioning to fit your app):</p>
<pre>
<code>.scrollable {
position: absolute;
top: 50px;
left: 0;
right: 0;
bottom: 0;
overflow: scroll;
-webkit-overflow-scrolling: touch;
}</code>
</pre>
<p>The trick here is adding the -webkit-overflow-scrolling to anywhere you&#8217;d normally set your overflow. The downside of Apple&#8217;s implementation is that the div doesn&#8217;t bounce as you&#8217;d hope when you are already at the absolute top or bottom. Instead of bouncing the div being scrolled, it bounces the whole page and reveals the browser chrome. This is where you&#8217;ll need a javascript fix.</p>
<h2>Fixing the Scrolling Element</h2>
<p>Thanks to the development community there are several great options out there that you can implement. These include <a href="http://joehewitt.github.com/scrollability/">Scrollability</a> and <a href="http://cubiq.org/iscroll">iScroll</a>. My issue with iScroll was that it doesn&#8217;t play well with form elements if you have them in your app. At the time of this article, Scrollability&#8217;s author says it isn&#8217;t ready for release usage, but it seems to be a great solution if you want to test it. If you want your app to work well with old implementations of iOS you&#8217;ll need something similar to this (plus you&#8217;ll also need to code around the fixed elements issue), but for now we&#8217;re only addressing iOS 5+ and we&#8217;ll will save fallbacks for a different article.</p>
<p>The solution I like the best for iOS5 is also the simplest. Joe Lambert&#8217;s <a href="https://github.com/joelambert/ScrollFix">ScrollFix</a> increases the page slightly when at the top or bottom to make your div bounce instead of the whole browser. It&#8217;s very simple to add to an element that you already have scrolling:</p>
<pre>
<code>&lt;script type="text/javascript" src="scrollfix.js"&gt;&lt;/script&gt;

&lt;script type="text/javascript"&gt;
     var scrollingContent = document.getElementById("myScrollingDiv");
     new ScrollFix(scrollingContent);
&lt;/script&gt;</code>
</pre>
<p>If you have multiple scrolling divs just apply this again to those divs. For my app I&#8217;ve got several divs which either shown or hidden and each has this script applied. We&#8217;re almost there, but two possible issues still exist. When scrolling on our fixed elements and our scrolling elements that don&#8217;t have enough content to overflow the page, the browser chrome is still revealed.</p>
<h2>Preventing Fixed Headers from Showing Browser Chrome</h2>
<p>This is a pretty simple fix, similar to what was described above. In my fixed header I&#8217;ve got multiple elements, so I made sure that each element or it&#8217;s parent had the class &#8220;noBounce&#8221; and then applied the following script:</p>
<pre>
<code>document.addEventListener('touchmove', function(event) {
   if(event.target.parentNode.className.indexOf('noBounce') != -1 
|| event.target.className.indexOf('noBounce') != -1 ) {
	event.preventDefault(); }
}, false);</code>
</pre>
<p>This prevents the default bounce when dragging those classed elements, but doesn&#8217;t break the div that you want to scroll.</p>
<h2>Adapting for Elements That Don&#8217;t Overflow</h2>
<p>When creating my code some of the divs for my main content overflowed the browser window which triggers the scrollbar and bounce fix, but others didn&#8217;t. There are several ways to address this, but the easiest solution I came up with just extends all divs so they have at least a bit of scroll. To do that I added this jQuery script (you could do something similar in straight JS as well) to all my content divs:</p>
<pre>
<code>&lt;div class="scrollable"&gt;
     &lt;div class="contentWrapper"&gt;
          Your content
     &lt;/div&gt;
&lt;/div&gt;

&lt;script type="text/javascript"&gt;
     $('.contentWrapper').css('min-height', $(window).height() - 55 + 'px');
&lt;/script&gt;</code>
</pre>
<p>You&#8217;ll need to adjust the &#8220;- 55&#8243; portion based on your application. I have it in there to prevent it from having too much scroll because of my fixed header.</p>
<p>Here&#8217;s a really basic demo if you want to test it out in your mobile browser: <a href="http://www.kylejlarson.com/files/iosdemo/">kylejlarson.com/files/iosdemo/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.kylejlarson.com/blog/2011/fixed-elements-and-scrolling-divs-in-ios-5/feed/</wfw:commentRss>
		<slash:comments>19</slash:comments>
		</item>
		<item>
		<title>An Event Apart Minneapolis</title>
		<link>http://www.kylejlarson.com/blog/2011/an-event-apart/</link>
		<comments>http://www.kylejlarson.com/blog/2011/an-event-apart/#comments</comments>
		<pubDate>Sat, 20 Aug 2011 05:18:05 +0000</pubDate>
		<dc:creator>Kyle Larson</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[HTML]]></category>

		<guid isPermaLink="false">http://kylejlarson.com/blog/?p=372</guid>
		<description><![CDATA[An overview and notes from An Event Apart Minneapolis 2011.]]></description>
				<content:encoded><![CDATA[<p><a href="http://www.flickr.com/photos/localcelebrity/6025349561/" title="Eric Meyer by reallocalcelebrity, on Flickr"><img class="right" src="http://farm7.static.flickr.com/6134/6025349561_7e22653c37_m.jpg" width="240" height="160" alt="Eric Meyer"></a>Last week I had the opportunity to attend <a href="http://www.aneventapart.com/">An Event Apart</a> (AEA) when it stopped by Minneapolis. AEA is a conference &#8220;for people who make websites&#8221; taught by some of the best known names in web design. I had seen Jeffery Zeldman, Jason Santa Maria, Jeremy Keith, Jared Spool, Kristina Halvorson, and Luke Wroblewski speak at various trips to Austin for South by Southwest (SXSW), but all these talks were fresh content.</p>
<p>Every speaker did a great job and had tons of good information, but a few of the talks stood out and got me really excited about what I was learning. The talks that were the most inspirational for me were Eric Meyer&#8217;s talk about using flexible boxes, Nicole Sullivan on optimizing CSS, and Ethan Marcotte on responsive web design. The future of designing sites for multiple devices looks very promising with the combination of the flexible boxes and responsive design (media queries). The great part is that the boxes allow content to be reordered for different purposes where it has previously been difficult to do using floats (without absolute positioning).  If you don&#8217;t know about media queries check out the original <a href="http://www.alistapart.com/articles/responsive-web-design/">responsive design article</a>.</p>
<p>If you&#8217;ve got a chance to attend An Event Apart I&#8217;d highly recommend it. While it didn&#8217;t have the variety, scale, or full immersion in a sea of web geeks like SXSW, it had many of its own benefits.  At AEA there weren&#8217;t giant lines, missed panels that were at capacity, or most importantly &#8211; panels that didn&#8217;t have any valuable content. There wasn&#8217;t a session here that didn&#8217;t deliver!  Overall it was a much more focused and professionally delivered effort (food was also great and I got to sit next to Zeldman at lunch!).</p>
<p>I put together a <a href="http://www.kylejlarson.com/files/AEA_2011_Notes.pdf">PDF of my AEA notes</a> if you&#8217;d like to get an idea of what was covered.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kylejlarson.com/blog/2011/an-event-apart/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to Create Pie Charts with CSS3</title>
		<link>http://www.kylejlarson.com/blog/2011/how-to-create-pie-charts-with-css3/</link>
		<comments>http://www.kylejlarson.com/blog/2011/how-to-create-pie-charts-with-css3/#comments</comments>
		<pubDate>Thu, 27 Jan 2011 15:44:03 +0000</pubDate>
		<dc:creator>Kyle Larson</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[HTML]]></category>

		<guid isPermaLink="false">http://kylejlarson.com/blog/?p=303</guid>
		<description><![CDATA[Learn to use the latest features of CSS3 to create pie charts purely from code.]]></description>
				<content:encoded><![CDATA[<style>
     .pieContainer2 {
          height: 100px;
          width: 100px;
          float: right;
          margin: 0 0 20px 20px;
     }
     #pieSliceYellow .pie {
          background-color: #f2cd00;
          -webkit-transform:rotate(120deg);
          -moz-transform:rotate(120deg);
          -o-transform:rotate(120deg);
          transform:rotate(120deg);
     }
     #pieSliceBlue3 {
          -webkit-transform:rotate(120deg);
          -moz-transform:rotate(120deg);
          -o-transform:rotate(120deg);
          transform:rotate(120deg);
     }
     #pieSliceBlue3 .pie {
          background-color: #002095;
          -webkit-transform:rotate(120deg);
          -moz-transform:rotate(120deg);
          -o-transform:rotate(120deg);
          transform:rotate(120deg);
     }
     #pieSliceRed2 {
          -webkit-transform:rotate(240deg);
          -moz-transform:rotate(240deg);
          -o-transform:rotate(240deg);
          transform:rotate(240deg);
     }
     #pieSliceRed2 .pie {
          background-color: #950000;
          -webkit-transform:rotate(120deg);
          -moz-transform:rotate(120deg);
          -o-transform:rotate(120deg);
          transform:rotate(120deg);
     }
</style>
<div class="pieContainer2">
<div class="pieBackground"></div>
<div id="pieSliceYellow" class="hold">
<div class="pie"></div>
</div>
<div id="pieSliceBlue3" class="hold">
<div class="pie"></div>
</div>
<div id="pieSliceRed2" class="hold">
<div class="pie"></div>
</div>
</div>
<p>Last week I decided to update my online resume to make it a little more graphical, because well&#8230; I&#8217;m a designer. The first step was coming up with some good ways to represent data, and pie charts seemed like a good fit to show skill development. Pie charts are pretty simple to create using a spreadsheet program or a drawing program, but I wanted something out of the ordinary that didn&#8217;t require creating new graphics every time I update them. It seemed like it should be possible with the new capabilities of CSS3 so I started working on a solution.</p>
<p>The two most promising things I found were <a href="http://code.google.com/apis/chart/docs/chart_wizard.html">Google&#8217;s Chart Wizard</a>, (which uses javascript) and a <a href="http://atomicnoggin.ca/blog/2010/02/20/pure-css3-pie-charts/">CSS3 Pie Chart Article from Atomic Noggin</a>.  I wanted to do something purely with CSS &#038; HTML so I took the ideas from that article and tweaked them a bit to get the result that I wanted.</p>
<p>There were a few things that I wanted to do differently from the original article:</p>
<ol>
<li>In the article the pie pieces are pulled out from the sphere and I wanted a solid circle.</li>
<li>Once aligned as a solid sphere there were some rendering issues (in some browsers) aligning clipped shapes next to each other that left gaps between the shapes.</li>
<li>I wanted to be able to add styles to the full css pie chart such as a border or drop-shadow.</li>
</ol>
<h2>Creating a Drop-Shadowed Circle</h2>
<p>My first step was creating a circle that will be the bottom layer of the chart. This bottom circle will also hold any border or drop-shadow style. Additionally, I&#8217;ve put a div with a set height around the circle so it stays inline with the content (as the circles will be absolutely positioned to stay on top of each other). To create a circle, simply add a border-radius that is half the pixel value of the width of a square div. You&#8217;ll notice below I&#8217;ve used browser specific css tags (e.g. -moz-border-radius) for the CSS3 elements. Currently CSS3 support is varied between browsers. Eventually, as full support is included in browsers, you won&#8217;t need them any more and this will be much simpler to manage.</p>
<pre>
<code>&lt;style&gt;
     .pieContainer {
          height: 100px;
     }
     .pieBackground {
          background-color: grey;
          position: absolute;
          width: 100px;
          height: 100px;
          -moz-border-radius: 50px;
          -webkit-border-radius: 50px;
          -o-border-radius: 50px;
          border-radius: 50px;
          -moz-box-shadow: -1px 1px 3px #000;
          -webkit-box-shadow: -1px 1px 3px #000;
          -o-box-shadow: -1px 1px 3px #000;
          box-shadow: -1px 1px 3px #000;
     } 
&lt;/style&gt;
&lt;div id="pieContainer"&gt;
     &lt;div class="pieBackground"&gt;&lt;/div&gt;
&lt;/div&gt;</code>
</pre>
<style>
     .pieContainer {
          height: 100px;
          margin-bottom: 35px;
     }
     .pieBackground {
          background-color: grey;
          position: absolute;
          width: 100px;
          height: 100px;
          -moz-border-radius: 50px;
          -webkit-border-radius: 50px;
          -o-border-radius: 50px;
          border-radius: 50px;
          -moz-box-shadow: -1px 1px 3px #000;
          -webkit-box-shadow: -1px 1px 3px #000;
          -o-box-shadow: -1px 1px 3px #000;
          box-shadow: -1px 1px 3px #000;
     } 
.pie {
          position: absolute;
          width: 100px;
          height: 100px;
          -moz-border-radius: 50px;
          -webkit-border-radius: 50px;
          -o-border-radius: 50px;
          border-radius: 50px;
          clip: rect(0px, 50px, 100px, 0px);
     }
     .hold {
          position: absolute;
          width: 100px;
          height: 100px;
          -moz-border-radius: 50px;
          -webkit-border-radius: 50px;
          -o-border-radius: 50px;
          border-radius: 50px;
          clip: rect(0px, 100px, 100px, 50px);
     }
     .pieSlice1 .pie {
          background-color: #1b458b;
          -webkit-transform:rotate(50deg);
          -moz-transform:rotate(50deg);
          -o-transform:rotate(50deg);
          transform:rotate(50deg);
     }
</style>
<div class="pieContainer">
<div class="pieBackground"></div>
</div>
<h2>Adding a Slice to the CSS Pie Chart</h2>
<p>Next you&#8217;ll want to create a half circle by using clipping to hide the 2nd half.  Unless you want exactly 50% you&#8217;ll need to change the size of that circle by dropping it inside of a div that controls the rotation and use the inner div to adjust the size.  For the first slice we&#8217;ll start the outer div at 0 degrees, which is the default, so we&#8217;ll only need to edit that for additional slices. (* Note that I&#8217;m adding to the code above and only displaying the new CSS.)</p>
<pre>
<code>&lt;style&gt;
     .pie {
          position: absolute;
          width: 100px;
          height: 100px;
          -moz-border-radius: 50px;
          -webkit-border-radius: 50px;
          -o-border-radius: 50px;
          border-radius: 50px;
          clip: rect(0px, 50px, 100px, 0px);
     }
     .hold {
          position: absolute;
          width: 100px;
          height: 100px;
          -moz-border-radius: 50px;
          -webkit-border-radius: 50px;
          -o-border-radius: 50px;
          border-radius: 50px;
          clip: rect(0px, 100px, 100px, 50px);
     }
     #pieSlice1 .pie {
          background-color: #1b458b;
          -webkit-transform:rotate(50deg);
          -moz-transform:rotate(50deg);
          -o-transform:rotate(50deg);
          transform:rotate(50deg);
     }
&lt;/style&gt;

&lt;div class="pieContainer"&gt;
     &lt;div class="pieBackground"&gt;&lt;/div&gt;
     &lt;div id="pieSlice1" class="hold"&gt;&lt;div class="pie"&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;</code>
</pre>
<div class="pieContainer">
<div class="pieBackground"></div>
<div class="pieSlice1 hold">
<div class="pie"></div>
</div>
</div>
<h2>Large &#038; Multiple Slices</h2>
<p>If you&#8217;d like to make a slice take up more than 50% of the pie chart you&#8217;ll just need to add another pie div of the same color with a hold div wrapped around it.  To add a slice in a new color just change the background color.  Below is an example of making a slice over 50% and a second slice of a new color.</p>
<pre>
<code>&lt;style&gt;
     #pieSliceBlue .pie {
          background-color: #1b458b;
          -webkit-transform:rotate(180deg);
          -moz-transform:rotate(180deg);
          -o-transform:rotate(180deg);
          transform:rotate(180deg);
     }
     #pieSliceBlue2 {
          -webkit-transform:rotate(180deg);
          -moz-transform:rotate(180deg);
          -o-transform:rotate(180deg);
          transform:rotate(180deg);
     }
     #pieSliceBlue2 .pie {
          background-color: #1b458b;
          -webkit-transform:rotate(40deg);
          -moz-transform:rotate(40deg);
          -o-transform:rotate(40deg);
          transform:rotate(40deg);
     }
     #pieSliceRed {
          -webkit-transform:rotate(220deg);
          -moz-transform:rotate(220deg);
          -o-transform:rotate(220deg);
          transform:rotate(220deg);
     }
     #pieSliceRed .pie {
          background-color: #cc0000;
          -webkit-transform:rotate(140deg);
          -moz-transform:rotate(140deg);
          -o-transform:rotate(140deg);
          transform:rotate(140deg);
     }
&lt;/style&gt;

&lt;div class="pieContainer"&gt;
     &lt;div class="pieBackground"&gt;&lt;/div&gt;
     &lt;div id="pieSliceBlue" class="hold"&gt;&lt;div class="pie"&gt;&lt;/div&gt;&lt;/div&gt;
     &lt;div id="pieSliceBlue2" class="hold"&gt;&lt;div class="pie"&gt;&lt;/div&gt;&lt;/div&gt;
     &lt;div id="pieSliceRed" class="hold"&gt;&lt;div class="pie"&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;</code>
</pre>
<style>
     #pieSliceBlue .pie {
          background-color: #1b458b;
          -webkit-transform:rotate(180deg);
          -moz-transform:rotate(180deg);
          -o-transform:rotate(180deg);
          transform:rotate(180deg);
     }
     #pieSliceBlue2 {
          -webkit-transform:rotate(180deg);
          -moz-transform:rotate(180deg);
          -o-transform:rotate(180deg);
          transform:rotate(180deg);
     }
     #pieSliceBlue2 .pie {
          background-color: #1b458b;
          -webkit-transform:rotate(40deg);
          -moz-transform:rotate(40deg);
          -o-transform:rotate(40deg);
          transform:rotate(40deg);
     }
     #pieSliceRed {
          -webkit-transform:rotate(220deg);
          -moz-transform:rotate(220deg);
          -o-transform:rotate(220deg);
          transform:rotate(220deg);
     }
     #pieSliceRed .pie {
          background-color: #cc0000;
          -webkit-transform:rotate(140deg);
          -moz-transform:rotate(140deg);
          -o-transform:rotate(140deg);
          transform:rotate(140deg);
     }
</style>
<div class="pieContainer">
<div class="pieBackground"></div>
<div id="pieSliceBlue" class="hold">
<div class="pie"></div>
</div>
<div id="pieSliceBlue2" class="hold">
<div class="pie"></div>
</div>
<div id="pieSliceRed" class="hold">
<div class="pie"></div>
</div>
</div>
<h2>IE Fallback</h2>
<p>As expected, this doesn&#8217;t work in any Internet Explorer browsers below version 9.  If you&#8217;re concerned about IE users, a simple way to fix this is adding a <a href="http://www.quirksmode.org/css/condcom.html">conditional comment</a> for IE with a jpg of whatever charts you&#8217;re trying to display.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kylejlarson.com/blog/2011/how-to-create-pie-charts-with-css3/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
		<item>
		<title>URL Structure Tips</title>
		<link>http://www.kylejlarson.com/blog/2011/url-structure-tips/</link>
		<comments>http://www.kylejlarson.com/blog/2011/url-structure-tips/#comments</comments>
		<pubDate>Tue, 11 Jan 2011 20:26:21 +0000</pubDate>
		<dc:creator>Kyle Larson</dc:creator>
				<category><![CDATA[Architecture]]></category>
		<category><![CDATA[Design Process]]></category>

		<guid isPermaLink="false">http://kylejlarson.com/blog/?p=260</guid>
		<description><![CDATA[Carefully considering the location of your pages can greatly help users by making links semantic and easy to remember.]]></description>
				<content:encoded><![CDATA[<p><img class="aligncenter size-full wp-image-1070 imgRight" alt="crane" src="http://www.kylejlarson.com/blog/wp-content/uploads/2011/01/url_structure_thumb.jpg" width="300" />When working through the architecture and coding of a website the URL structure is often overlooked. Carefully considering the location of your pages can greatly help users by making links semantic and easy to remember. It&#8217;s easiest to start this process when doing a redesign or a new site, but its worth investing the time and effort at any point.</p>
<p>When determining your URL structure, the first place to start is with your site&#8217;s architecture (site map / navigation). The structure of your URLs should reflect how your users navigate your site. Typically, you&#8217;ll want to find large buckets and group your content using directories (<span class="highlight">yourdomain.com/company</span> &#8211; <span class="highlight">yourdomain.com/products</span> &#8211; <span class="highlight">yourdomain.com/articles</span>). You should have an index page in each of those directories that leads to any additional content within, which can be in their own subdirectories. Apple does a good job of this, creating consistant URLs where expected, like <span class="highlight">apple.com/iphone</span> &amp; <span class="highlight">apple.com/iphone/features</span>.</p>
<h2>Folders vs Subdomains</h2>
<p>I recommend using subdomains (e.g. <span class="highlight">products.yourdomain.com</span>), as alternative to folders, only when there is a clear division of content. For example if you ran a second site that is intended for another purpose entirely from your main site, such as a site for investors, a subdomain may be a good choice. In Apple&#8217;s case they keep their marketing product information at <span class="highlight">apple.com</span> and their online store at <span class="highlight">store.apple.com</span>. There are several reasons for this, but the biggest two in my mind are that search engines typically consider subdomains as a different site when indexing and that many users aren&#8217;t savvy enough to understand subdomains (if you create them make sure you can type www before the subdomain and it will still forward correctly).</p>
<h2>Dynamic Pages</h2>
<p>Semantic URLs can become difficult when creating dynamic product or article pages. There are many sites with pages like this <span class="highlight">domain.com/store/product.php?id=1234</span> instead of something more logical like <span class="highlight">domain.com/store/productName</span>. If you&#8217;re using blog software like WordPress you can easily change this setting. In WordPress simple go to settings &gt; permalinks and choose one of the available options or create your own structure. For users of CMS systems take a look and see if such an options is available; if not take a look on google for &#8220;URL Rewriting&#8221; to create custom paths to your content.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kylejlarson.com/blog/2011/url-structure-tips/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Design Process: The Rule of Three</title>
		<link>http://www.kylejlarson.com/blog/2010/design-process-the-rule-of-three/</link>
		<comments>http://www.kylejlarson.com/blog/2010/design-process-the-rule-of-three/#comments</comments>
		<pubDate>Mon, 08 Nov 2010 17:31:55 +0000</pubDate>
		<dc:creator>Kyle Larson</dc:creator>
				<category><![CDATA[Design Process]]></category>

		<guid isPermaLink="false">http://kylejlarson.com/blog/?p=223</guid>
		<description><![CDATA[Is creating a certain number of designs for clients critical to the design process?]]></description>
				<content:encoded><![CDATA[<p>Having a solid web design process is critical for efficiently creating quality work. On Happycog&#8217;s Cognition Blog, Chris Cashdollar posted about their process of <a href="http://cognition.happycog.com/article/the-magic-number">creating three unique designs</a> to present to a client. When I first started doing freelance work for clients I followed the rule of three without question, but over time I&#8217;ve changed my process based on the project that I&#8217;m working on.</p>
<h2>The Benefit of Three</h2>
<p>Overall, following the rule of creating three mockup designs for a project is useful for many of the reasons that Chris mentions in his article. Creating multiple designs forces you to solve the same problem in a variety of ways and each subsequent design is informed by your previous discoveries. It also shows your client that you&#8217;re focused on delivering options that best fit their goals and helps foster discussion over the solutions.</p>
<h2>Third Wheel</h2>
<p>While creating three designs has many benefits, I no longer follow it as a hard rule. There are two reasons I suspect that the rule of three is more effective in Chris&#8217;s case:</p>
<ol>
<li>Happy Cog&#8217;s projects are likely larger in time and scope than mine</li>
<li>Chris mentions having a separate designer for each design</li>
</ol>
<p>Nearly all of my projects are designed by myself with input only from the client (and sometimes friends if I want some other feedback). This, combined with most projects being quicker and on a smaller budget, means that often presenting three full designs isn&#8217;t always an effective option. I feel with the total hours allotted to the project, my time is often better spent focusing on one or two well thought-out designs. Also on smaller projects the third iteration can feel like a chore, and it isn&#8217;t as innovative as the first concepts where a lot of the discovery took place.</p>
<h2>An Alternative Process for Freelancers</h2>
<p>The number of concepts I present to a client depends on the project.  For a small job, I typically focus on generating one or two concepts and then iterating based on feedback. I find that much of the creativity lost by not doing three designs can be generated in the initial sketching phase. By sketching out designs before getting onto the computer, I can quickly come up with many different ideas and then take several into a larger, more detailed sketches. Following this process, it&#8217;s easy to see what is going to work and what doesn&#8217;t work so well. Sketches can also be shown to the client for feedback before coming up with your final concept to present. Working this way also helps prevent clients requesting a &#8220;frankendesign&#8221; combining elements of each of the three designs you show them. I prefer to work this way, rather than trying to force three designs, as each client has a different budget, different expectations and a different level of involvement in the process.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kylejlarson.com/blog/2010/design-process-the-rule-of-three/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>How to Setup Your Site for the iPhone</title>
		<link>http://www.kylejlarson.com/blog/2010/how-to-setup-your-site-for-the-iphone/</link>
		<comments>http://www.kylejlarson.com/blog/2010/how-to-setup-your-site-for-the-iphone/#comments</comments>
		<pubDate>Fri, 22 Oct 2010 20:29:48 +0000</pubDate>
		<dc:creator>Kyle Larson</dc:creator>
				<category><![CDATA[HTML]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[Apple]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[iPhone]]></category>

		<guid isPermaLink="false">http://kylejlarson.com/blog/?p=201</guid>
		<description><![CDATA[Learn some settings you can add to your website to target the iPhone.]]></description>
				<content:encoded><![CDATA[<p><img class="aligncenter size-full wp-image-1072 imgRight" alt="iphone app" src="http://www.kylejlarson.com/blog/wp-content/uploads/2010/10/setup_iphone_thumb.jpg" width="300" />I&#8217;ve been working on some mobile apps lately and realizing how simple it is to get started making your site more iPhone compatible. You can either create a separate site specifically for mobile or create a mobile stylesheet to be applied to specific devices. There are some great arguments out there for each option, but what I&#8217;m discussing here is just the introductory steps that work for either method. In writing this I&#8217;m also considering how I&#8217;d like to apply those ideas to my site here.</p>
<p>If you&#8217;re planning to create an additional stylesheet rather than a completely new codebase, you&#8217;ll want to start by specifying the stylesheet to use with a media query. Ethan Marcotte has a great article called <a href="http://www.alistapart.com/articles/responsive-web-design/">Responsive Web Design</a> that expands upon this idea on A List Apart. To target an iPhone/iPod specifically you can use this code right after your main stylesheet in your header:</p>
<pre><code>	&lt;link href="iphone.css" rel="stylesheet" media="only screen and (max-device-width: 480px)" type="text/css" /&gt;</code></pre>
<h2>Control the Page Size</h2>
<p>Next you&#8217;ve got a handful of settings that will help make your site similar to a native iPhone app. If you want your page to resize to the device, you can use this line in your header:</p>
<pre><code>&lt;meta name="viewport" content="width = device-width" /&gt;</code></pre>
<p>or if you&#8217;re setting your page width in CSS and would prefer to use a specific scale (with or without the option to disallow users from zooming the page) you can use:</p>
<pre><code>&lt;meta name="viewport" content="initial-scale = 1.0, user-scalable = no" /&gt;</code></pre>
<h2>Add a Custom Icon &amp; Startup Image</h2>
<p>There are also meta tags for use when your site is added to the home screen of a user&#8217;s device (press the &#8216;+&#8217; in mobile safari to add to the home screen). The first is <a href="http://kylejlarson.com/blog/2010/adding-an-icon-for-iphone-ipad-android-to-your-website/">adding a custom icon to your site</a> that I wrote a previous post about. In addition, you can add a startup screen to give an app like feel. To add a startup image create a png that is 320 x 460 pixels and add this line of code to the header:</p>
<pre><code>	&lt;link href="/your_image.png" rel="apple-touch-startup-image" /&gt;</code></pre>
<h2>Make it Look Like an App</h2>
<p>You can make your site look more like an app when people save it to their home screen by hiding the top bar that loads with safari and changing the color of the status bar. Before you do this you&#8217;ll want to make sure you&#8217;re site is setup so it can be easily navigated without needing the back button. To remove the Safari controls add this meta tag to your header:</p>
<pre><code>&lt;meta name="apple-mobile-web-app-capable" content="yes" /&gt;</code></pre>
<p>And to change the status bar (network name, time, battery level) from the default grey to either &#8220;black&#8221; or &#8220;black-translucent&#8221;:</p>
<pre><code>&lt;meta name="apple-mobile-web-app-status-bar-style" content="black" /&gt;</code></pre>
<p>Note that if you change the status bar to translucent the site will sit underneath it. Make sure that there is no critical content hidden behind the bar.</p>
<p>These simple lines of code are a great way to get started setting up your site for Apple&#8217;s devices. If you&#8217;d like to go into some more detail, <a href="http://developer.apple.com/library/safari/#documentation/AppleApplications/Reference/SafariWebContent/Introduction/Introduction.html">Apple&#8217;s Safari Reference Library</a> is a great place to get started. Then to take this to the next level I&#8217;d recommend digging into <a href="http://jqtouch.com/">jQTouch</a> or <a href="http://www.sencha.com/">Sencha</a>. Both of these tools will create an even more app-like experience with animated transitions and app-like bars &amp; buttons using javascript (which you&#8217;ll want to have a strong knowledge of to use to their full potential).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kylejlarson.com/blog/2010/how-to-setup-your-site-for-the-iphone/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
