<?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 Schaeffer - Web Design and SharePoint Branding &#187; Design</title>
	<atom:link href="http://kyleschaeffer.com/tag/design/feed/" rel="self" type="application/rss+xml" />
	<link>http://kyleschaeffer.com</link>
	<description>Web Design &#38; SharePoint Branding</description>
	<lastBuildDate>Wed, 01 Feb 2012 23:01:50 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Design Patterns in SharePoint</title>
		<link>http://kyleschaeffer.com/sharepoint/design-patterns/</link>
		<comments>http://kyleschaeffer.com/sharepoint/design-patterns/#comments</comments>
		<pubDate>Thu, 26 Jan 2012 03:32:40 +0000</pubDate>
		<dc:creator>Kyle</dc:creator>
				<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[Patterns]]></category>

		<guid isPermaLink="false">http://kyleschaeffer.com/?p=1108</guid>
		<description><![CDATA[Last week, I was happy to present at SusQtech&#8217;s &#8220;30 on Thursdays&#8221; weekly webinar event.  This is a great series of free webinars from some talented speakers, and the succinct format is a great opportunity to learn something new without &#8230; <a href="http://kyleschaeffer.com/sharepoint/design-patterns/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Last week, I was happy to present at SusQtech&#8217;s &#8220;<a href="http://www.susqtech.com/webinars">30 on Thursdays</a>&#8221; weekly webinar event.  This is a great series of free webinars from some talented speakers, and the succinct format is a great opportunity to learn something new without a huge investment of your time.<span id="more-1108"></span></p>
<p>My topic was <em>Design Patterns in SharePoint</em>, which is an introduction to the concept of design patterns, and how to apply them to your SharePoint environment.  Luck you, we have been recording these webinars, and they&#8217;re freely available on our website. Feel free to view the webinar video below, and check out the <a href="http://www.susqtech.com/Webinars/Pages/Archived-Webinars.aspx">webinar archive</a> for any and all webinars that we&#8217;ve recorded in the past.</p>
<p>As mentioned in the video, I will be teaching a <a href="http://www.susqtech.com/training/classes/Pages/SharePoint-Styling-Branding-March-22-23-2012.aspx">SharePoint design class in the Netherlands starting on March 22</a>.  If you are looking for design training and can make it to the class, please feel free to sign up.</p>
<iframe src="http://www.youtube.com/embed/ud-KuCao_sY?version=3&amp;wmode=transparent" width="560" height="340" title="YouTube video player" style="background-color:#000;display:block;margin-bottom:0;max-width:100%;" frameborder="0" allowfullscreen></iframe><p style="font-size:11px;margin-top:0;"><a href="http://www.youtube.com/watch?v=ud-KuCao_sY" target="_blank" title="Watch on YouTube">Watch this video on YouTube</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://kyleschaeffer.com/sharepoint/design-patterns/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>From &#8220;Developer&#8221; to &#8220;Designer&#8221;</title>
		<link>http://kyleschaeffer.com/best-practices/from-developer-to-designer/</link>
		<comments>http://kyleschaeffer.com/best-practices/from-developer-to-designer/#comments</comments>
		<pubDate>Thu, 25 Aug 2011 16:34:16 +0000</pubDate>
		<dc:creator>Kyle</dc:creator>
				<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[Web Browsers]]></category>

		<guid isPermaLink="false">http://kyleschaeffer.com/?p=964</guid>
		<description><![CDATA[It&#8217;s easy to forget how a website really works. I mean really works. I&#8217;ve had the pleasure of working with many brilliant and talented developers (programmers) who could bend the functionality of any application or server-side platform at the drop &#8230; <a href="http://kyleschaeffer.com/best-practices/from-developer-to-designer/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s easy to forget how a website really works. I mean <em>really works</em>. I&#8217;ve had the pleasure of working with many brilliant and talented developers (programmers) who could bend the functionality of any application or server-side platform at the drop of a hat. They are problem-solvers, as is everyone in this industry of the online.<span id="more-964"></span></p>
<p>With most developers, I&#8217;ve found that there can be a disconnect between how I understand websites, and how they&#8217;ve come to understand them. Not just <em>a </em>disconnect: <em>The Disconnect</em>. If you work in a team environment, you know the feeling. I say &#8220;element,&#8221; and you say &#8220;control.&#8221; I say &#8220;script,&#8221; and you say &#8220;method.&#8221; Most developers are ultimately, completely, and entirely focused on the server-side application.</p>
<p>That&#8217;s okay. I need my developers, and they need me. It&#8217;s a good relationship for all of us, with our complimentary skills, tools, and techniques. They make it work, and I make it look good.</p>
<h2>How to Connect</h2>
<p>Overcoming the <em>Disconnect</em> is all about education, on both sides of the fence. Developers and designers alike would benefit from understanding how the technology that they use comes together. The grand finale of everything that we do online ends up in a single place, where it can be seen, read, clicked, and tested: the browser window.</p>
<p>As a designer, that&#8217;s where my beautiful designs will end up, and they somehow need to be translated from Photoshop into HTML and CSS that works well with the server-side application. Good designers understand the technology before they create the designs. Likewise, as developers, the controls and methods that you create are all somehow translated into HTML, whether you&#8217;ve recognized that or not. Understanding the output of what you do in the application is just as important as making the application work.</p>
<h2>Don&#8217;t Forget the Browser</h2>
<p>This is where it all ends up. Everything that we do as designers, developers, project managers, or architects: it all comes together in the browser window. The browser is the tool that is used to present all of your hard work, everything that you&#8217;ve done throughout an entire project. With so much responsibility resting upon the shoulders of the browser, why is it that so many people ignore it completely?</p>
<p>Back in <em>The Day</em>, the browser is all there was. In 1989, Tim Berners-Lee created the world&#8217;s first web server. When requested, it <em>served</em> up documents to be viewed inside the very first web browser. These documents were pure HTML, and the browser interpreted that language in order to create Hyper-Text documents that could be <em>linked</em> together. As you probably know, this simple concept caught on, and by the mid 1990&#8242;s, the Internet had become arguably the most influential product of Man in the 20th century.</p>
<p>Everyone that works in the industry of the world wide web should pay their respects to the oft-neglected browser. It has so much power, and it is the tool that allows us to do what we do. The browser is everything. The W3C and WHATWG can make all the recommendations they want: nothing really happens until browsers support it. In the mid 2000&#8242;s, the W3C started working on a recommendation called XHTML 2.0. It failed. The browser manufacturers didn&#8217;t like it, and that&#8217;s why we&#8217;re now working with HTML5 instead of XHTML2. Similarly, Microsoft created something called the XMLHTTPRequest in the early- to mid-2000&#8242;s, and everyone loved it. The major browsers quickly adopted this technology, and AJAX was born.</p>
<p>The point is, the browser truly has the power in web application development. It doesn&#8217;t matter if you&#8217;re a programmer or a designer: you need to understand how technology works inside the confines of this little window. In all the amazing technology that surrounds the Internet, it&#8217;s really based on a few simple languages: HTML, CSS, and JavaScript.</p>
<h2>Making Requests</h2>
<p>Web browsers are fairly simple applications. In essence, they do two things: make requests, and handle responses. A request might be something like &#8220;show me the document at KyleSchaeffer.com,&#8221; or &#8220;give me the image at /images/kittens.jpg.&#8221; The server that you&#8217;re requesting from then responds and the browser does something with the response. It all sounds very simple, but it&#8217;s so easy to forget this fundamental layer of web technology. I&#8217;ve helped troubleshoot dozens of web applications, and my first question is always &#8220;What request is the browser making?&#8221;</p>
<p>This entire process is called an <strong>HTTP request</strong>. HTTP requests are sent by your browser every time you type something into the address bar. The first requests is almost always an HTML document, and then the browser subsequently makes additional requests for things like CSS files, JavaScript, and images. Even if your web application is running on PHP or ASP.NET or SharePoint, the server is returning an HTML document, which subsequently loads additional resources. Simple, right?</p>
<h3>1. The Request</h3>
<p>Every HTTP request has a <strong>URI</strong>, or Uniform Resource Identifier. That&#8217;s a fancy way of saying the <em>address</em> of the resource you&#8217;re requesting. The address can be both absolute (<code>http://kyleschaeffer.com/images/kittens.jpg</code>) or relative (<code>/images/kittens.jpg</code>). The browser sends this request to the &#8220;Internet,&#8221; which routes the request to the appropriate server, somewhere <em>out there</em>. The browser then waits for a response.</p>
<h3>2. The Response</h3>
<p>After sending a request, the server that you requested the document from will send back a <em>response</em>. Again, the browser handles the responses, and each resource that is requested is handled differently. First of all, the browser reads the HTTP <strong>response code</strong>, which is an indication of the status of your request. The most common HTTP response codes are:</p>
<ol>
<li><strong>200 OK</strong> - The most common response; the resource you requested was found</li>
<li><strong>301 Moved Permanently</strong> - The resources has moved, and the browser will redirect the request to the new location</li>
<li><strong>304 Not Modified</strong> - The resource was found, and your browser already has the most recent version in the browser cache (yay!)</li>
<li><strong>401 Unauthorized</strong> - You need to sign in to see this resource</li>
<li><strong>403 Forbidden</strong> - You&#8217;re not allowed to see this</li>
<li><strong>404 Not Found</strong> - The resource you requested does not exist</li>
<li><strong>408 Request Time-Out</strong> - That took too long, sorry</li>
<li><strong>500 Internal Server Error</strong> - Something went wrong!</li>
</ol>
<p>My descriptions of each response are less than technical, but you get the idea. If you&#8217;ve ever wondered what the &#8220;404&#8243; in &#8220;404 Not Found&#8221; meant, it&#8217;s the HTTP response code for &#8220;not found.&#8221; For a more comprehensive list of HTTP response codes, visit the <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec6.html">W3C&#8217;s documentation</a>.</p>
<p>Another important element of the HTTP response is the <strong>Content Type</strong>. This tells your browser how to handle the requested resource when it&#8217;s downloaded. Unlike on your computer, your browser does not decide how to use a resource based on it&#8217;s file extension! It&#8217;s all about the content type. Some of the more clever server-side programmers can actually utilize this element of the HTTP response to create server-side scripts that actually disguise themselves as other types of content (like a PHP script pretending to be JSON or XML).</p>
<h3>3. Execution</h3>
<p>At this point, the browser now knows the HTTP response code, and the resource content type. Using this information, it&#8217;s time to make something happen. The browser downloads the resource, and presents it inside the browser window. Browsers can sometimes handle resource requests differently, so this is where you get into the nuances of browser testing. One browser might handle HTML and CSS requests slightly different from another, so testing your applications is merely a practice of testing how these HTTP responses are handled.</p>
<h2>From &#8220;Developer&#8221; to &#8220;Designer&#8221;</h2>
<p>Bridging the divide between developers and designers is all about understanding how the different technologies of the web come together. The browser window is the one place where the user experience, the architecture, the design, the program, the database, and everything else that goes on behind the scenes comes to fruition and is finally presented. Clients pay for you to meet needs and requirements, but what they ultimately expect is something that appears inside the little box that they call the Internet. Embrace it, learn it, love it, know it inside and out, and you&#8217;ll find that disconnecting from <em>The Disconnect</em> is not so difficult after all.</p>
]]></content:encoded>
			<wfw:commentRss>http://kyleschaeffer.com/best-practices/from-developer-to-designer/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>SharePoint Design in Five Minutes</title>
		<link>http://kyleschaeffer.com/sharepoint/sharepoint-design-in-five-minutes/</link>
		<comments>http://kyleschaeffer.com/sharepoint/sharepoint-design-in-five-minutes/#comments</comments>
		<pubDate>Fri, 10 Jun 2011 13:57:03 +0000</pubDate>
		<dc:creator>Kyle</dc:creator>
				<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[Video]]></category>

		<guid isPermaLink="false">http://kyleschaeffer.com/?p=938</guid>
		<description><![CDATA[You can now download my free SharePoint theme, Medazio, on SharePointDesigNerds.com. We&#8217;re still working on cleaning up the site while it&#8217;s in &#8220;draft&#8221; version, but feel free to sign up, browse a couple of the themes that we&#8217;ve uploaded, post &#8230; <a href="http://kyleschaeffer.com/sharepoint/sharepoint-design-in-five-minutes/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>You can now download my free SharePoint theme, Medazio, on <a href="http://www.sharepointdesignerds.com">SharePointDesigNerds.com</a>. We&#8217;re still working on cleaning up the site while it&#8217;s in &#8220;draft&#8221; version, but feel free to sign up, browse a couple of the themes that we&#8217;ve uploaded, post your amazing SharePoint spotlights, and give us feedback on the design, navigation, and functionality in the site.<span id="more-938"></span></p>
<p><strong>Update 8/17/2011:</strong> The &#8220;Medazio&#8221; theme can now be downloaded directly from <a href="http://www.susqtech.com/medazio">SusQtech.com/medazio</a>.</p>
<h2>The Video</h2>
<p>While building the Medazio theme, I recorded over 11 hours of video in order to document the entire SharePoint design and customization process. From creative sketching to design in Photoshop to actual coding of CSS and HTML in SharePoint Designer 2010, you can see the entire project from start to finish, compressed into about five minutes of rapid SharePoint Design fury. Check out the video, download the theme, and see first-hand how SharePoint is truly a viable and impressive publishing platform for your design-savvy projects.</p>
<p><iframe src='http://player.vimeo.com/video/19591245?title=0&amp;byline=0&amp;portrait=0' width='605' height='340' frameborder='0'></iframe><br />
Watch <a href="http://vimeo.com/19591245">SharePoint Design in Five Minutes</a> on <strong>Vimeo</strong>.</p>
]]></content:encoded>
			<wfw:commentRss>http://kyleschaeffer.com/sharepoint/sharepoint-design-in-five-minutes/feed/</wfw:commentRss>
		<slash:comments>19</slash:comments>
		</item>
		<item>
		<title>Responsive Layouts Using CSS Media Queries</title>
		<link>http://kyleschaeffer.com/best-practices/responsive-layouts-using-css-media-queries/</link>
		<comments>http://kyleschaeffer.com/best-practices/responsive-layouts-using-css-media-queries/#comments</comments>
		<pubDate>Tue, 03 May 2011 02:23:03 +0000</pubDate>
		<dc:creator>Kyle</dc:creator>
				<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[Columns]]></category>
		<category><![CDATA[CSS3]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[Layout]]></category>

		<guid isPermaLink="false">http://kyleschaeffer.com/?p=898</guid>
		<description><![CDATA[The days of the desktop are numbered. In the past, designing a web interface involved targeting a screen resolution in the vicinity of 960 pixels wide. For many years, this worked, and it worked well, because 99% of online users &#8230; <a href="http://kyleschaeffer.com/best-practices/responsive-layouts-using-css-media-queries/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<div>
<p>The days of the desktop are numbered. In the past, designing a web interface involved targeting a screen resolution in the vicinity of 960 pixels wide. For many years, this worked, and it worked well, because 99% of online users could easily read and scroll at that resolution, regardless of the browser, operating system, or machine they were using. <em>Times have changed.</em><span id="more-898"></span></p>
<p>The supreme rule of desktop design began to wane in the past couple of years. With the explosion of the mobile browser phenomenon (largely due to devices like the iPhone, Blackberry, and the Android operating system), online traffic began to show the first signs of diversification. With increasing numbers of users on these mobile devices, the distinction between <em>mobile</em> and <em>desktop</em> content was born. As you most likely have noticed, many online publishers have chosen to neatly dissect their content into two distinct applications that serve two distinct types of devices. You have &#8220;mobile&#8221; versions of many websites available today, which often offer similar or identical content to what can be found on the desktop version of that same website. Very simply, the web server detects the device that&#8217;s requesting the content, and serves up a different document (or redirects to a different location) depending on the device being used.</p>
<p>Today, this dichotomy between mobile and desktop content persists as the most popular strategy for serving up web content to a multitude of devices. The technical implementation of this strategy differs from site to site, but the end result is the same: a design and layout that targets a single device or resolution. This has been a great approach for many online publishers because it offers so much flexibility in the appearance of mobile content. By segregating a design into two entirely different implementations, the limits to what can be done on a mobile site are nearly limitless. As with every design, however, there are disadvantages to this approach that cannot be overlooked:</p>
<ul>
<li><strong>Increased effort</strong> – it is more difficult to create and maintain two separate design layouts simultaneously.</li>
<li><strong>Publishing concerns</strong> – creating a division between mobile and desktop content begs the question: where does the content come from? Should all desktop content be available on the mobile site? Do you publish everything twice (once for desktop, once for mobile users), or do you dual-publish to both mediums simultaneously?</li>
<li><strong>Planning for diversification</strong> – is &#8220;mobile vs. desktop&#8221; really good enough?</li>
</ul>
<p>The last disadvantage listed here is perhaps the most important point to consider. Recent history has shown that targeting a single device (i.e. the desktop) did not withstand the test of time. Is the simple distinction between &#8220;mobile&#8221; and &#8220;desktop&#8221; content really good enough?</p>
<h3>Mobile is important, but not end-all.</h3>
<p>The truth of the matter is that mobile devices are taking off. According to <a href="http://www.businessinsider.com/mary-meekers-web-2010-11#-10" target="_blank">Mary Meeker of Morgan Stanley</a>, the sale of &#8220;smartphones&#8221; is expected to overtake PC sales (both desktops and notebooks) by next year. Browsing statistics are showing this trend as well. <a href="http://gs.statcounter.com/" target="_blank">StatCounter</a> shows that about 6.5% of all users in North America are browsing on mobile devices. You can count on about one in twenty users experiencing your online content on a three inch screen – how does your content stack up in this scenario? If you haven&#8217;t thought about it yet, it&#8217;s time to start.</p>
<p>The growth of the smartphone landscape and the diversification of browsing statistics are the driving factor behind the explosion of mobile-friendly site design. Today, this practice is entirely acceptable, but don&#8217;t count on anything in this industry to stick for more than a few years. Mobile devices aren&#8217;t the only new kids on the block.</p>
<h3>Enter the tablet.</h3>
<p>Tablet devices like the iPad and similar devices that utilize the Android operating system have been somewhat of a curveball in the industry of web design. They&#8217;re not quite mobile devices, and they&#8217;re not quite desktops, but rather somewhere in between. In the current design landscape, where everything has been neatly divided between mobile and desktop content, many designers are choosing to place tablets into the &#8220;mobile&#8221; category, serving up tablet content in like kind. This does not always go over well with tablet users, who justifiably feel that the tablet offers unique advantages of a desktop computer, namely a better browsing experience than what can be had on a smaller mobile device.</p>
<p>What, then, do we do with these users?</p>
<h2>Responsive Web Design</h2>
<p>The ongoing problem is that as designers, we&#8217;ve set our minds on this idea that a web interface is going to be displayed on a screen that is 1024 pixels wide (or larger). It&#8217;s a desktop mindset; anything smaller than 1024 is a &#8220;mobile&#8221; device and generally gets a pixel value of about 320 pixels. All devices that access our online content must adhere to one of these two layouts – there are two numbers, and nothing in between.</p>
<p>The trouble for web designers is that internet connectivity is rapidly spreading to a vast array of devices and products that people use every day. Someone might access your online portal from a desktop, phone, notebook, netbook, tablet, or even some consumer appliances. The Nintendo Wii, for instance, comes loaded with an Opera browser that&#8217;s quite good, and is hindered only by the fact that many televisions only have a resolution that is 480 to 720 pixels wide. At this resolution, many website layouts simply don&#8217;t provide an enjoyable user experience due to poor formatting and display on smaller screens. Furthermore, there is no end in sight. Expect this diversification of internet-ready devices to increase in the coming years, and plan to change the way you design and create layouts for the web.</p>
<p>The great thing is, whether you recognize it or not, this is actually a very good thing. Web layouts have been too rigid and design-centric for a long time now, and forcing designers to apply layouts to a multitude of devices will encourage them to create content that can be consumed in a variety of mediums. In the end, this translates into a better experience for the user, who doesn&#8217;t have to worry about what device they are on, what resolution they&#8217;ve chosen, or what issues they may encounter. <a href="http://ethanmarcotte.com/" target="_blank">Ethan Marcotte</a> sums it up best in his article, &#8220;<a href="http://www.alistapart.com/articles/responsive-web-design/" target="_blank">Responsive Web Design</a>&#8221; from A List Apart:</p>
<blockquote><p>Rather than tailoring disconnected designs to each of an ever-increasing number of web devices, we can treat them as facets of the same experience. We can design for an optimal viewing experience, but embed standards-based technologies into our designs to make them not only more flexible, but more adaptive to the media that renders them. In short, we need to practice responsive web design.</p></blockquote>
<p><strong>Responsive web design</strong> is creating web layouts that can adapt to a multitude of displays and devices. Using this technique, you can eliminate the need to create device-centric designs (like a &#8220;mobile&#8221; site), and allow your content to be displayed from a single source, on an unlimited number of mediums.</p>
<h2>Techniques for Responsive Web Design</h2>
<p>Responsive web design is not &#8220;one big thing.&#8221; It&#8217;s a collection of disciplines and techniques that you employ to ensure that your designs can appear fluidly on a multitude of display sizes. The fundamental change that you have to make to start creating responsive designs is to ask yourself with everything that you do: what happens with this content when the display shrinks? Plan for a multitude of resolutions from the very beginning. By mere acknowledgement and foresight, you&#8217;ll find that the challenge of creating a responsive layout is not so difficult to overcome.</p>
<h3>1. Layout Width</h3>
<p>The most important element of flexibility that must be employed in your responsive design is a fluid layout width. This is the condemning factor that breaks many designs when they are viewed on smaller display screens. Create wrapper, content, and column widths that can stretch display ideally in different resolutions. There is no &#8220;trick&#8221; to this technique, it&#8217;s merely a change in the way you create columns in your style sheets. Here&#8217;s an example:</p>
<pre>#wrapper {
  width: 80%;
  margin: auto;
  max-width: 1200px;
}</pre>
<p>This is a simple example of a fluid design width. Setting a max-width on your design is a good idea to salvage any formatting issues for users on very large resolution monitors.</p>
<h3>2. Responsive Design and Column Widths</h3>
<p>In most designs, you might be working with multiple column widths to display content in a number of different ways. In your style sheet, you could simply apply a percentage width to each column, but this technique is generally not ideal. In many cases, a sidebar column may include fixed-width elements like advertisements, menus, or text that does not necessarily adapt in any beneficial way as the width of your layout grows. Instead, you may choose to adapt only a single column as the layout width changes. This is a common layout structure that can easily be created within your existing style sheet. Consider the following example:</p>
<pre>#wrapper {
  width: 80%;
  margin: auto;
  max-width: 1200px;
}
<strong>#column-main {</strong>
<strong>  margin-left: 200px;</strong>
<strong>}</strong>
<strong>#column-sidebar {</strong>
<strong>  width: 200px;</strong>
<strong>  float: left;</strong>
<strong>}</strong></pre>
<p>In this example, the &#8220;main&#8221; column will always fill the width of the layout area, and the sidebar column (in this example, on the left) will always remain exactly 200 pixels wide.</p>
<h3>3. What about images?</h3>
<p>A common concern when moving from a fixed-width to a fluid layout is HTML images (the &lt;img&gt; element). An image file, for the most part, is a fixed-size file that does not scale as your design width decreases. This results in some rather unsavory presentation bugs, like large images being drawn beyond the edge of the browser window. The solution is a simple addition to your design&#8217;s style sheet:</p>
<pre>img {
  max-width: 100%;
}<span style="font-size: 13px; line-height: 19px; color: #444444; font-family: Georgia, 'Bitstream Charter', serif; white-space: normal;"> </span></pre>
<p>This simple addition causes any images in your design to display at full size by default. As the width of the design layout shrinks so that the image is too wide to display in the confines of it&#8217;s parent element, the image too, begins to shrink.</p>
<p>It&#8217;s worth noting that the image scaling ability of Internet Explorer is admittedly poor at best. Ethan Marcotte shares his very handy <a href="http://unstoppablerobotninja.com/entry/fluid-images/" target="_blank">Fluid Images</a> script to help alleviate your scalable image woes.</p>
<h3>4. No More Zoom</h3>
<p>Many mobile devices and tablets utilize a &#8220;zoom&#8221; feature to display content that is too large to fit on smaller display screens. This is an important utility for mobile and tablet users, but it creates a detrimental experience for users, as they have to constantly zoom in, pan, and zoom out in order to browse your web document&#8217;s content. You can disable this zooming behavior by way of a simple &lt;meta&gt; element in your design&#8217;s header.</p>
<pre>&lt;meta name="viewport" content="width=device-width, minimum-scale=1.0, maximum-scale=1.0" /&gt;</pre>
<p>This meta element is only interpreted by a number of browsing devices (namely smartphones and tablets). <strong>You should only disable the zoom feature if it enhances users&#8217; ability to consume content on your site</strong>. If you&#8217;ve formatted your design layout so that users don&#8217;t need to pan or zoom, the zoom feature actually impairs the user from navigating your content (which only needs to scroll vertically). If you&#8217;ve incorrectly formatted your layout, however, disabling the zoom feature will only further infuriate your users, as you are removing a very important navigation capability of the browser.</p>
<h3>5. CSS Media Queries</h3>
<p>The final and most powerful technique that you can employ for responsive web design is a fairly new feature of CSS technology called the <strong>media query</strong>. Very simply, CSS media queries allow you to apply changes to your site&#8217;s design based on the viewing size and capability of the device on which your content is displayed. This is an extremely powerful tool for creating responsive designs, and it has garnered support across all major mobile browsers (including Safari, Chromium, Opera, and even the forthcoming Internet Explorer Mobile [Windows Phone 7]). Here&#8217;s a simple example of using a media query in your design&#8217;s style sheet:</p>
<pre>#wrapper {
  width: 80%;
  margin: auto;
  max-width: 1200px;
  <strong>min-width: 800px;</strong>
}
<strong>@media screen and (max-width: 800px) {</strong>
<strong>  #wrapper {</strong>
<strong>    width: 90%;</strong>
<strong>    min-width: 0;</strong>
<strong>  }</strong>
<strong>}</strong></pre>
<p>In this example, we use the same fluid layout as before, but we&#8217;ve added a new minimum width (800 pixels) to the style sheet. If the width of the screen drops below 800 pixels, all of the styles defined in our media query will take effect, and the wrapper will be resized to 90% of the design width (with no minimum width).</p>
<p>The power of media queries becomes more apparent in a layout with columns. Consider the following example:</p>
<pre>#wrapper {
  width: 80%;
  margin: auto;
  max-width: 1200px;
  <strong>min-width: 800px;</strong>
}
#column-main {
  margin-left: 200px;
}
#column-sidebar {
  width: 200px;
  float: left;
}
@media screen and (max-width: 800px) {
  #wrapper {
    width: 90%;
    min-width: 0;
  }
  <strong>#column-main {</strong>
<strong>    margin-left: 0;</strong>
<strong>  }</strong>
<strong>  #column-sidebar {</strong>
<strong>    width: auto;</strong>
<strong>    float: none;</strong>
<strong>  }</strong>
}</pre>
<p>In this example, when the width of the device screen drops below 800 pixels, we completely reformat the appearance of the columns in our design. Rather than displaying a fixed-width sidebar column, at 800 pixels or less, this design switches to a stacked column layout (with the sidebar displaying on top or below the main column). This preserves space on smaller screens, and provides an easy way to display multiple columns on devices that aren&#8217;t suited for column-based layouts.</p>
<p>The great part about media queries is that you can define multiple queries in your style sheet. You can have a design layout for desktop machines, a new layout for tablets, and yet another new layout for smaller devices like mobile phones. The number of variations is limited only by what you can do within your style sheet. Furthermore, the latest versions of desktop browsers like Firefox, Safari, Chromium, and even Internet Explorer will recognize media queries as you resize the browser window, allowing you to test your variations on the fly. If you&#8217;re using said modern browser, simply resize this window to see how my design responds to new device sizes.</p>
<h2>Looking Forward</h2>
<p>Responsive web design is an important next step in presentation on the web. Expect the device landscape to broaden and diversify, and expect your job as a designer to increasingly become the curator of a flexible and fluid online experience that is more focused on content and less on pixels or devices. The idea of &#8220;mobile vs. desktop&#8221; is fairly new and very strong, but the mobile distinction will likely become an element of features and convenience, rather than an element of presentation, as it is so largely viewed today.</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://kyleschaeffer.com/best-practices/responsive-layouts-using-css-media-queries/feed/</wfw:commentRss>
		<slash:comments>21</slash:comments>
		</item>
		<item>
		<title>Designing Body Type</title>
		<link>http://kyleschaeffer.com/best-practices/designing-body-type/</link>
		<comments>http://kyleschaeffer.com/best-practices/designing-body-type/#comments</comments>
		<pubDate>Thu, 15 Jul 2010 21:26:55 +0000</pubDate>
		<dc:creator>Kyle</dc:creator>
				<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[Text]]></category>

		<guid isPermaLink="false">http://www.kyleschaeffer.com/?p=612</guid>
		<description><![CDATA[Header text gets all the love, doesn&#8217;t it? From Photoshop to the browser window, the focus seems to be on design elements like logos, navigation, and of course, header type. It&#8217;s great fun to use tools like Typekit to make &#8230; <a href="http://kyleschaeffer.com/best-practices/designing-body-type/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Header text gets all the love, doesn&#8217;t it? From Photoshop to the browser window, the focus seems to be on design elements like logos, navigation, and of course, header type. It&#8217;s great fun to use tools like <a href="http://typekit.com">Typekit</a> to make your header text something a little less than ordinary. It defines your site, gives you a unique look and feel, and gives readers that oh-so-scannable sensation they know and love. When you really think about it, however, readers aren&#8217;t there for the header text. The headers serve as an essential tool to quickly find what you&#8217;re looking for, but the real prize here is the body text, isn&#8217;t it? This is where your information is, this is where you write and communicate to readers, and this is an area of design that cannot be neglected. Sadly, it often is.<span id="more-612"></span></p>
<p>Body text is often an after-thought in design. We have all been guilty of this at some point in our careers. When you implement your CSS, you might simply throw a <code>body { font-family: blah, blah blah; }</code> into the CSS, and after that you move on. You&#8217;ve probably figured out the whole base font size <em>thing</em> too, which can help, but there&#8217;s so much more you can do. Let&#8217;s look at a number of things to help your body type become something a bit more visually appealing and readable.</p>
<h2>Text Color</h2>
<p>Hopefully you&#8217;ve already figured this one out, but I dare not exclude it for the sake of accuracy. Probably the single most important thing you can do to your body text is change both the color of the text as well as the background color of the area shown behind the text. Here&#8217;s a few pointers:</p>
<ul>
<li>Readers generally prefer dark text on a light background. There are a few impressive exceptions to this rule, but for the most part, it&#8217;s best to stick with the old &#8220;dark on light&#8221; tried-and-true formula.</li>
<li>While contrast is important, don&#8217;t take it too far. Black text (<code>#000000</code>) on a white background (<code>#ffffff</code>) is perhaps a bit too much contrast. Opting for a slightly lighter shade of text can make it easier on your readers&#8217; eyes. If I&#8217;m working on a white background, I generally choose a font color that is at or in the general vicinity of <code>#666666</code> (don&#8217;t be afraid to add a subtle hue of color too, but keep it dark).</li>
<li>Add some variety by slightly changing the color of elements in your body text like darker <code>&lt;strong&gt;</code> text or lighter <code>&lt;li&gt;</code> items. You don&#8217;t have to stick with a single color for all text in the entire design.</li>
<li>Keep the focus on your article or body text. If you have a sidebar or widgets that appear to the side of your actual body text, try lightening their text color (or reducing contrast with a different background color) to make sure that users focus on the real content of the page.</li>
</ul>
<h2>Font Size</h2>
<p>Another obvious and quite important element of your body text style is the font size. There are <a href="http://www.kyleschaeffer.com/best-practices/css-font-size-em-vs-px-vs-pt-vs/">a number of different ways</a> to establish a default font size for your text. While the method of setting your font sizes is a matter of debate, there are a few best practices you should be aware of.</p>
<ul>
<li>It&#8217;s easiest on your users to set the <code>body</code> font size at <code>62.5%</code>, and use <code>ems</code> to size your fonts from there (<code>.wrapper { font-size: 1.3em; }</code> would set the font size to 13 pixels in height).</li>
<li>Choose a base font size of at least 12 pixels in height. There are exceptions to every rule, but you&#8217;ll find that users are frustrated by tiny font sizes, and are apt to leave a site even before using the handy browser zoom feature.</li>
<li>Deviate from the base font size only where it makes sense in the overall theme of the design. Consistency is key. Set default CSS styles for things like the <code>&lt;small&gt;</code> tag and headers.</li>
</ul>
<h2>Font Family</h2>
<p>Fonts are a bit tricky in web design, basically because you&#8217;re forced to choose one of about ten fonts that are used on every other website in the world. <a href="http://typekit.com">Typekit</a> is great for header text, but you&#8217;re better off using regular web-friendly fonts for your body text. Here&#8217;s a few pointers:</p>
<ul>
<li><strong>Serif vs. Sans-Serif:</strong> First choose the font style you&#8217;ll be working with. Choose something that fits with your design&#8217;s overall theme or concept. Serif fonts like Times and Georgia give your site a vintage and book-like feel. They are flowing, artistic, and regal in theme. Sans-serif fonts like Arial or Helvetica can be used to portray a clean, professional, and strong atmosphere in your design.</li>
<li>Choose a <a href="http://www.ampsoft.net/webdesign-l/WindowsMacFonts.html" target="_blank">common font</a> for your body text that is available on both Mac and PC platforms. There are some great fonts on the Mac, but you&#8217;ll want to design your site so that it looks good no matter what device is accessing it.</li>
<li>It&#8217;s completely acceptable to add a &#8220;nice to have&#8221; font into your design, such as Helvetica or Myriad Pro. These fonts can gracefully degrade to Arial without jarring the layout of your page too much.</li>
<li>Georgia and Times are not the only serif fonts available! Try experimenting with fonts like Book Antiqua or Platino Linotype, which have a more book-like and artistic feel.</li>
<li>Courier New is a great fixed-width font best used for displaying CSS, HTML, or some kind of code to your readers.</li>
<li>Don&#8217;t forget other elements in your design! By default, text boxes, buttons, and select menus will not use the body font family and/or size, so make sure to set a consistent font on all elements in your design.</li>
<li>Don&#8217;t use Comic Sans.</li>
</ul>
<h2>Margin, Spacing, and Line Height</h2>
<p>This is probably the most overlooked element of body type design. After you&#8217;ve developed the <strong>character</strong> design of your body type, take a step back and examine the <strong>paragraph</strong> style.</p>
<ul>
<li>Unless you specify otherwise, the lines of text in your design are drawn very close together, and it can be difficult for readers to follow as they read down the page. Add a bit of CSS such as <code>p { line-height: 1.5em; }</code> to make this text easier on the eyes.</li>
<li>Likewise, paragraphs of text have default margins applied to them that may make them appear too close together or too far away from the headers that appear above them. Try adding some CSS such as <code>p { margin: 0 0 1.5em 0; }</code> to standardize the spacing around paragraphs.</li>
<li>Paragraph text is not the only thing you&#8217;ll see in a page. Don&#8217;t forget to style other HTML elements like lists (<code>&lt;ul&gt;</code> or <code>&lt;ol&gt;</code>), the horizontal rule (<code>&lt;hr /&gt;</code>), and block quotes or call-out boxes.</li>
</ul>
<h2>Be Creative</h2>
<p>Following these rules isn&#8217;t a guaranteed way to make your body type look amazing, and breaking any or all of these rules certainly doesn&#8217;t guarantee that your design will be ugly and fail. In the end, it&#8217;s all about being creative and paying attention to all the tiny details that go into making a website look amazing. The difference between a good design and a bad one can be very subtle. Create something fun, stick to a theme, and take note of every visual detail that appears on the page, body type included.</p>
]]></content:encoded>
			<wfw:commentRss>http://kyleschaeffer.com/best-practices/designing-body-type/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Announcing ThePeev.com</title>
		<link>http://kyleschaeffer.com/personal/announcing-thepeev/</link>
		<comments>http://kyleschaeffer.com/personal/announcing-thepeev/#comments</comments>
		<pubDate>Thu, 11 Mar 2010 19:40:34 +0000</pubDate>
		<dc:creator>Kyle</dc:creator>
				<category><![CDATA[Personal]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[Projects]]></category>
		<category><![CDATA[Website]]></category>

		<guid isPermaLink="false">http://www.kyleschaeffer.com/?p=474</guid>
		<description><![CDATA[I am pleased to announce the launch of my latest project, ThePeev.com. The Peev is a quick and dirty WordPress site designed for the sole purpose of serving as my personal artistic outlet. I&#8217;m posting doodles and sketches regarding all &#8230; <a href="http://kyleschaeffer.com/personal/announcing-thepeev/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I am pleased to announce the launch of my latest project, <a href="http://thepeev.com/">ThePeev.com</a>. The Peev is a quick and dirty WordPress site designed for the sole purpose of serving as my personal artistic outlet. I&#8217;m posting doodles and sketches regarding all the things in life that may or may not bother you. I had a lot of fun creating the site, which came together nicely from concept to complete in less than eight hours of work. What&#8217;s your pet peeve? Visit <a href="http://thepeev.com/">ThePeev.com</a> and let me know.</p>
]]></content:encoded>
			<wfw:commentRss>http://kyleschaeffer.com/personal/announcing-thepeev/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Image Buttons and Accessibility</title>
		<link>http://kyleschaeffer.com/best-practices/image-buttons-and-accessibility/</link>
		<comments>http://kyleschaeffer.com/best-practices/image-buttons-and-accessibility/#comments</comments>
		<pubDate>Thu, 19 Nov 2009 21:29:32 +0000</pubDate>
		<dc:creator>Kyle</dc:creator>
				<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[Images]]></category>
		<category><![CDATA[Text]]></category>
		<category><![CDATA[XHTML]]></category>

		<guid isPermaLink="false">http://www.kyleschaeffer.com/?p=358</guid>
		<description><![CDATA[Image buttons are a fairly common occurrence in web media. As with everything else in web design, you have a dizzying arsenal of methods from which you can choose to create this type of design element, and choosing the right &#8230; <a href="http://kyleschaeffer.com/best-practices/image-buttons-and-accessibility/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Image buttons are a fairly common occurrence in web media. As with everything else in web design, you have a dizzying arsenal of methods from which you can choose to create this type of design element, and choosing the right method can greatly aid in your design&#8217;s accessibility, performance, and SEO-friendliness.<span id="more-358"></span></p>
<h2>Concerning Accessibility</h2>
<p>Accessibility is chiefly important for a web designer (or at least, it should be). When you create your HTML, keep things as simple as possible. Assume that every single user who visits your site will (1) not have CSS support, (2) will disable all images on your page, and (3) will not have JavaScript enabled. If you design your HTML in this fashion, you&#8217;ll find that creating accessible content is much easier to do. Once you have an accessible document that works on all systems, you can use the fantastic features of CSS and client-side scripting to really bring your site to life. These &#8220;nice to have&#8221; features (style, scripting, etc.) are not essential to the structure of your document or the content that&#8217;s contained within. When it comes down to it, users are after your content, so that&#8217;s priority number one.</p>
<h2>A Simple Example</h2>
<p>With that in mind, let&#8217;s say we wanted to create an image that links to another page (this is so very simple, but it serves as a great example of this technique). Because we&#8217;re assuming that users have disabled all images, we certainly don&#8217;t want to use the <code>&lt;img/&gt;</code> tag for our link, because those users without image support simply won&#8217;t see it. For that reason, our link will look like any other link on the site.</p>
<pre>&lt;a class="learnGuitar" href="http://www.mahalo.com/how-to-play-guitar-for-newbies"&gt;Learn Guitar&lt;/a&gt;</pre>
<p>I know&#8230;this is really simple, but stay with me; I promise we&#8217;re going somewhere with this. Our very simple HTML has passed our criteria:  users with CSS disabled will see the link, as will users without images or script. It&#8217;s very simply an accessible link on our page, read as easily by normal users as it is by search engines or even people using screen readers. Next, for users who can utilize our &#8220;nice to have&#8221; features, we&#8217;ll add a bit of CSS to make our image appear.</p>
<pre>.learnGuitar {
	display: block;
	width: 200px;
	height: 50px;
	background: url('/path/to/learn-guitar.png');
	text-indent: -9999em;
}</pre>
<p>As you can see, we&#8217;re using the <code>text-indent</code> CSS property to bump our text out of the way, and in it&#8217;s place, we&#8217;re using <code>background</code> to set an image for our link. All you have to do for your own image is adjust the width, height, and background URL to match. What you get when you&#8217;re all done is this:</p>
<style type="text/css">.learnGuitar{display: block;width: 200px;height: 50px;background: url('http://kyleschaeffer.com/wordpress/wp-content/uploads/2009/11/learn-guitar.png');text-indent: -9999em;}.learnGuitar:hover{border-style: none;background-color: transparent;}</style>
<p><a class="learnGuitar" href="http://www.mahalo.com/how-to-play-guitar-for-newbies">Learn Guitar</a></p>
<h2>Adding a Hover Image</h2>
<p>Easy and accessible CSS image replacement! It looks great, but let&#8217;s take it one more level to really make sure users know that our button DESERVES to be clicked. Let&#8217;s add a hover style. I&#8217;m going to use an image &#8220;sprite&#8221; for the hover image, which means that both our static and hover states are contained within the same image. Here&#8217;s my *single* image that&#8217;s used for this type of style:</p>
<p><img src="http://kyleschaeffer.com/wordpress/wp-content/uploads/2009/11/learn-guitar-hover.png" alt="Learn Guitar Image Sprite" title="Image sprite - note that both button states are contained within the same image!" width="200" height="100" /></p>
<p>We&#8217;ll adjust our CSS to account for our new hover image. Note that the <code>height</code> and <code>width</code> attributes will not change! The hover-state image will be &#8220;clipped,&#8221; so that it&#8217;s only visible when users move their mouse cursor over our image button.</p>
<pre>.learnGuitar {
	display: block;
	width: 200px;
	height: 50px;
	background: url('/path/to/learn-guitar.png') top;
	text-indent: -9999em;
}
.learnGuitar:hover {
	background-position: 0 -50px;
}</pre>
<p>Now, when users move their mouse cursor over our image button, the CSS will &#8220;slide&#8221; the background image so that the hover state is displayed instead of the static state.</p>
<style type="text/css">.learnGuitarHover{display: block;width: 200px;height: 50px;background: url('http://kyleschaeffer.com/wordpress/wp-content/uploads/2009/11/learn-guitar-hover.png') top;text-indent: -9999em;}.learnGuitarHover:hover{background-position: 0 -50px;border-style: none;background-color:transparent;}</style>
<p><a class="learnGuitarHover" href="http://www.mahalo.com/how-to-play-guitar-for-newbies">Learn Guitar</a></p>
<p>Crafting your image buttons in this fashion can really save on performance and download times. Perhaps more importantly, your site will be much more &#8220;friendly&#8221; to visually impaired users using screen readers, and you&#8217;ll find that search engines will have an easier time understanding what your links and other content are all about.</p>
<p>Let me know if you have any questions or comments!</p>
]]></content:encoded>
			<wfw:commentRss>http://kyleschaeffer.com/best-practices/image-buttons-and-accessibility/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Reusable Transparent CSS Rounded Corners</title>
		<link>http://kyleschaeffer.com/best-practices/reusable-transparent-css-rounded-corners/</link>
		<comments>http://kyleschaeffer.com/best-practices/reusable-transparent-css-rounded-corners/#comments</comments>
		<pubDate>Thu, 24 Sep 2009 21:45:09 +0000</pubDate>
		<dc:creator>Kyle</dc:creator>
				<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[Corners]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[XHTML]]></category>

		<guid isPermaLink="false">http://www.kyleschaeffer.com/?p=296</guid>
		<description><![CDATA[In retrospective, there are definitely some areas where I could have improved on my Karate Corners design. I decided to take a second look and write a quick post that details how I create corners today, after almost a year &#8230; <a href="http://kyleschaeffer.com/best-practices/reusable-transparent-css-rounded-corners/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>In retrospective, there are definitely some areas where I could have improved on my <a href="http://www.kyleschaeffer.com/tutorials/karate-corners-easy-rounded-corners-xhtml-no-script/">Karate Corners</a> design. I decided to take a second look and write a quick post that details how I create corners today, after almost a year of evolution in the ever-changing world of web design. This is absolutely the most simple and efficient way to create rounded corners using strictly CSS and HTML.<span id="more-296"></span></p>
<p>Rounded corners are all the rage; they have been for some time now. There are <a href="http://www.kyleschaeffer.com/best-practices/rounded-corners-in-mozilla-and-safari/">pure CSS</a> approaches to implementing this type of design, but occasionally your clients demand that your user experience be consistent across all browsers. Whether it&#8217;s time to stop using HTML and images for rounded corners is still a <a href="http://www.kyleschaeffer.com/best-practices/a-whole-new-web/">matter of debate</a>. Nonetheless, I think every designer finds themselves doing this from time to time.</p>
<h2>Say No to Images</h2>
<p>I&#8217;ve found that many designs contain various types of rounded box styles on the same page. In my previous tutorial, this would demand that you create a separate corner image for each style of box. If you have a box with a red background, you&#8217;ll need to create a corner image with red corners. That makes sense from a visual perspective. From a data perspective, however, it&#8217;s not the best approach. If you think about it, the only thing you&#8217;re really &#8220;downloading&#8221; when you download a corner image is the curvature of your box&#8217;s edge. Wouldn&#8217;t it be better if we could somehow reuse that data on every box style everywhere else in your design?</p>
<p>Well, you can! How gloriously fantastic! Well&#8230;don&#8217;t get all excited just yet. There are a few limitations to this. <strong>This will only work when your rounded box appears on a solid color.</strong> For instance, the text you&#8217;re reading right now is on a solid white background. We can easily add rounded boxes to this page because of the solid color. This doesn&#8217;t really work if your background is an image or a gradient color.</p>
<h2>Meet the Sprite</h2>
<p>So, you have a solid background color, and you&#8217;re ready to add some rounded corner boxes to your page. The only really important thing here is your corners image. In Photoshop or an image editing software of your choice, create a square image. Basically, your image is all four box corners stuck together, so make it symmetrical. Fill your image with the background color of your page, and then delete a circle out of the middle of the square. It&#8217;s that easy! Here&#8217;s what it should look like when you&#8217;re done:</p>
<p><img src="http://kyleschaeffer.com/wordpress/wp-content/uploads/2009/09/TransparentCorners.png" alt="Transparent Corners Image" /></p>
<p>In case you&#8217;re not Photoshop-savvy, I have created a few templates that you can download and use.</p>
<ul>
<li><a href="http://www.kyleschaeffer.com/wordpress/wp-content/uploads/2009/09/TransparentCorners-10.psd">TransparentCorners-10.psd</a> &#8211; 10&#215;10 pixel corner image template</li>
<li><a href="http://www.kyleschaeffer.com/wordpress/wp-content/uploads/2009/09/TransparentCorners-15.psd">TransparentCorners-15.psd</a> &#8211; 15&#215;15 pixel corner image template</li>
<li><a href="http://www.kyleschaeffer.com/wordpress/wp-content/uploads/2009/09/TransparentCorners-20.psd">TransparentCorners-20.psd</a> &#8211; 20&#215;20 pixel corner image template</li>
</ul>
<h2>The Markup</h2>
<p>Now that we have this nice fancy reusable transparent corner image, it&#8217;s time to create the HTML that will be used to house our beautiful box and its contents. Here&#8217;s the basic setup:</p>
<pre>&lt;div class="box red"&gt;
	&lt;div class="corner TL"&gt;&lt;/div&gt;
	&lt;div class="corner TR"&gt;&lt;/div&gt;
	&lt;div class="corner BL"&gt;&lt;/div&gt;
	&lt;div class="corner BR"&gt;&lt;/div&gt;
	&lt;p&gt;This is your box content. Lorem ipsum dolor sit amet.&lt;/p&gt;
&lt;/div&gt;</pre>
<p>Pretty simple, right? We have an outer &#8220;box&#8221; <code>&lt;div/&gt;</code>, a <code>&lt;div/&gt;</code> for each corner, and then our content that will appear inside the box.</p>
<h2>The Style</h2>
<p>Our HTML doesn&#8217;t do much by itself. Most of the work to be done is going to be done in our CSS style sheet. In an attached style sheet, add the following CSS:</p>
<pre>.box {
	position: relative;
	padding: 1em;
}
.red {
	background: #cc0000;
	color: #fff;
}
.corner {
	position: absolute;
	width: 10px;
	height: 10px;
	background: url(/path/to/cornerImage.png) no-repeat;
}
.TL {
	top: 0;
	left: 0;
	background-position: 0 0;
}
.TR {
	top: 0;
	right: 0;
	background-position: 100% 0;
}
.BL {
	bottom: 0;
	left: 0;
	background-position: 0 100%;
}
.BR {
	bottom: 0;
	right: 0;
	background-position: 100% 100%;
}</pre>
<p>As you can see, we&#8217;re really trying to keep this simple. Basically, we have an outer &#8220;box&#8221; style, a &#8220;red&#8221; style that sets the box&#8217;s background color to red, and finally individual &#8220;corner&#8221; styles that will automatically position themselves at the edges of our content, regardless of the height/width of that content. Groovy.</p>
<h2>The Result</h2>
<p>I&#8217;ve created a simple &#8220;white&#8221; background corner image for use on this page. What you get when you put all of this together is a very flexible corner system that requires very little HTML and CSS to implement:</p>
<style type="text/css">.box { position: relative; padding: 1em; margin: 0 0 1em 0; } .red { background: #cc0000; color: #fff; } .corner { position: absolute; width: 20px; height: 20px; background: url(/wordpress/wp-content/uploads/2010/09/cornersWhite.png) no-repeat; } .TL { top: 0; left: 0; background-position: 0 0; } .TR { top: 0; right: 0; background-position: 100% 0; } .BL { bottom: 0; left: 0; background-position: 0 100%; } .BR { bottom: 0; right: 0; background-position: 100% 100%; }</style>
<div class="box red">
<div class="corner TL"></div>
<div class="corner TR"></div>
<div class="corner BL"></div>
<div class="corner BR"></div>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque justo felis, molestie rutrum blandit vitae, pellentesque vitae risus. Nunc hendrerit eleifend lectus. Aenean interdum facilisis sem eget laoreet. Morbi in nisl nec neque auctor volutpat. Nam sodales felis id magna cursus ac pretium libero mollis.
</p></div>
<p>And the coolest part&#8230;</p>
<h2>It&#8217;s Reusable!</h2>
<p>The coolest part about using transparent images for our corners is that we can apply these corners to just about anything on our page that we want to. For instance, I could create some additional box styles (other than &#8220;red&#8221;) by adding a bit of CSS.</p>
<pre>.red {
	background: #cc0000;
	color: #fff;
}
.blue {
	background: #00cc00;
	color: #fff;
}
.green {
	background: #0000cc;
	color: #fff;
}
.gray {
	background: #dedede;
	color: #666;
}</pre>
<p>After changing our box&#8217;s class (<code>class="box blue"</code>, <code>class="box green"</code>, etc.), we would get:</p>
<style type="text/css">.blue { background: #00cc00; color: #fff; } .green { background: #0000cc; color: #fff; } .gray { background: #dedede; color: #666; } .oneThird { float: left; width: 31.3%; margin: 0 2% 0 0; } .oneThirdBottom { clear: both; }</style>
<div class="oneThird">
<div class="box red">
<div class="corner TL"></div>
<div class="corner TR"></div>
<div class="corner BL"></div>
<div class="corner BR"></div>
<p>Suspendisse potenti. Morbi eget turpis urna. Fusce tincidunt sem mollis lacus euismod rhoncus sagittis est placerat.</p>
<p>&nbsp;</p>
</div>
</div>
<div class="oneThird">
<div class="box blue">
<div class="corner TL"></div>
<div class="corner TR"></div>
<div class="corner BL"></div>
<div class="corner BR"></div>
<p>Suspendisse potenti. Morbi eget turpis urna. Fusce tincidunt sem mollis lacus euismod rhoncus sagittis est placerat.</p>
<p>&nbsp;</p>
</div>
</div>
<div class="oneThird">
<div class="box green">
<div class="corner TL"></div>
<div class="corner TR"></div>
<div class="corner BL"></div>
<div class="corner BR"></div>
<p>Suspendisse potenti. Morbi eget turpis urna. Fusce tincidunt sem mollis lacus euismod rhoncus sagittis est placerat.</p>
<p>&nbsp;</p>
</div>
</div>
<div class="box gray" style="clear: both;">
<div class="corner TL"></div>
<div class="corner TR"></div>
<div class="corner BL"></div>
<div class="corner BR"></div>
<p>Gray is the new &#8220;red&#8221;. Vestibulum iaculis varius laoreet. Ut et condimentum nunc. Suspendisse eleifend congue dolor, non consequat ante tristique sit amet.</p>
</div>
<p>That&#8217;s really cool, but this doesn&#8217;t even touch the limits of how you can apply this. In addition to solid color boxes, we could also apply this to photos and gradients (which would be much harder in a more traditional corner system). Our corners really don&#8217;t care what type of content they&#8217;re applied on, they only really care about the background color. Let&#8217;s try it out on some different page elements (accompanying HTML and CSS are included for each style):</p>
<h2>The Mini Profile</h2>
<h3>HTML:</h3>
<pre>&lt;div class="box photo"&gt;
	&lt;div class="corner TL"&gt;&lt;/div&gt;
	&lt;div class="corner TR"&gt;&lt;/div&gt;
	&lt;div class="corner BL"&gt;&lt;/div&gt;
	&lt;div class="corner BR"&gt;&lt;/div&gt;
	&lt;h3&gt;My Profile&lt;/h3&gt;
	&lt;img src="kyle.jpg" alt="Me" /&gt;
&lt;/div&gt;</pre>
<h3>CSS:</h3>
<pre class="brush:css">.photo {
	width: 200px;
	padding: 0;
}
.photo h3 {
	background: #000;
	color: #fff;
	padding: 10px 20px;
	margin: 0;
	font-size: 1em;
}</pre>
<style type="text/css">.myPhoto { width: 200px; padding: 0; } .myPhoto h3 { background: #000; color: #fff; padding: 10px 20px; margin: 0; font-size: 1em; }</style>
<div class="box myPhoto">
<div class="corner TL"></div>
<div class="corner TR"></div>
<div class="corner BL"></div>
<div class="corner BR"></div>
<h3>My Profile</h3>
<p><img style="padding: 0; border: 0; margin: 0;" src="http://kyleschaeffer.com/wordpress/wp-content/uploads/2008/10/kyle.jpg" alt="Me" /></div>
<h2>The Gradient</h2>
<h3>HTML:</h3>
<pre>&lt;div class="box blueGradient"&gt;
	&lt;div class="corner TL"&gt;&lt;/div&gt;
	&lt;div class="corner TR"&gt;&lt;/div&gt;
	&lt;div class="corner BL"&gt;&lt;/div&gt;
	&lt;div class="corner BR"&gt;&lt;/div&gt;
	&lt;p&gt;Notice the gradient background image!&lt;/p&gt;
&lt;/div&gt;</pre>
<h3>CSS:</h3>
<pre>.blueGradient {
	background: url(gradient-image.png) repeat-x;
	color: #fff;
}</pre>
<style type="text/css">.blueGradient { background: #a9e4f7; background: -moz-linear-gradient(top, #a9e4f7 0%, #0fb4e7 100%); background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#a9e4f7), color-stop(100%,#0fb4e7)); filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#a9e4f7', endColorstr='#0fb4e7',GradientType=0 ); background: -o-linear-gradient(top, #a9e4f7 0%,#0fb4e7 100%); }</style>
<div class="box blueGradient">
<div class="corner TL"></div>
<div class="corner TR"></div>
<div class="corner BL"></div>
<div class="corner BR"></div>
<p>Notice the gradient background image! Lorem ipsum dolor sit amet, consectetur adipiscing elit. In facilisis posuere purus, vitae sagittis enim sodales at. Proin in purus et metus vestibulum cursus. Vivamus volutpat dolor quis lectus cursus et lobortis felis iaculis. Aenean ut enim magna, sit amet convallis mi. In hac habitasse platea dictumst. In hac habitasse platea dictumst.</p>
</div>
<p>We&#8217;ve accomplished all of the styles you see above using a single image and some fancy CSS footwork. This really minimizes the impact of your corners on page download times, especially if you&#8217;re using a number of different styles on a single background color. No scripts, no confusing HTML, simple markup, and a single image. Happy styling.</p>
]]></content:encoded>
			<wfw:commentRss>http://kyleschaeffer.com/best-practices/reusable-transparent-css-rounded-corners/feed/</wfw:commentRss>
		<slash:comments>25</slash:comments>
		</item>
		<item>
		<title>A Very Simple CSS Chat Bubble</title>
		<link>http://kyleschaeffer.com/tutorials/a-very-simple-css-chat-bubble/</link>
		<comments>http://kyleschaeffer.com/tutorials/a-very-simple-css-chat-bubble/#comments</comments>
		<pubDate>Mon, 14 Sep 2009 13:38:19 +0000</pubDate>
		<dc:creator>Kyle</dc:creator>
				<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[XHTML]]></category>

		<guid isPermaLink="false">http://www.kyleschaeffer.com/?p=293</guid>
		<description><![CDATA[Each time you implement a new design element into your site, there are a vast array of approaches you can take to achieve the same outcome. Often times, I feel that the most simple of solutions is the best one. &#8230; <a href="http://kyleschaeffer.com/tutorials/a-very-simple-css-chat-bubble/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Each time you implement a new design element into your site, there are a vast array of approaches you can take to achieve the same outcome. Often times, I feel that the <a href="http://www.kyleschaeffer.com/best-practices/the-wisdom-of-simplicity/">most simple of solutions</a> is the best one. When implementing the &#8220;user comments&#8221; feature into <a href="http://thumbsticks.com">ThumbSticks.com</a>, I decided to wrap each user comment in a sort of &#8220;chat bubble box,&#8221; much like you would see in a comic book story. I experimented with various solutions that gave me different amounts of flexibility and performance, but I eventually settled on a very simple solution that resulted in what I think is an elegant CSS chat bubble.<span id="more-293"></span></p>
<h2>The Idea</h2>
<p>First of all, I will say that <strong>this approach only really works if you know the maximum size of your comment data</strong>. On ThumbSticks.com, for instance, users can&#8217;t enter comments that are over 300 characters in length, so I have a good idea of how large each comment box could possibly get. Rather than splicing my comment box into multiple images (which is more flexible, but decreases page performance and increases download times), I decided to create a single image that is used to wrap each comment chat bubble:</p>
<h3>The Image</h3>
<p><img src="http://kyleschaeffer.com/wordpress/wp-content/uploads/2009/09/commentBg.png" alt="Comment Chat Bubble" width="477" height="300" /></p>
<p>Basically, my chat bubble boxes can shrink to any size, but they can&#8217;t grow beyond the height of this image. If you know exactly how large your data can get, this is a really simple solution to implement. All that I need to show my chat bubbles is a bit of HTML and CSS.</p>
<h2>The Nitty-Gritty</h2>
<h3>HTML:</h3>
<pre>&lt;div class=&quot;bubble&quot;&gt;
	&lt;div class=&quot;bubbleHeader&quot;&gt;&lt;/div&gt;
	&lt;div class=&quot;bubbleInner&quot;&gt;
		&lt;p&gt;Lorem ipsum dolor sit amet.&lt;/p&gt;
	&lt;/div&gt;
&lt;/div&gt;</pre>
<h3>CSS:</h3>
<pre>.bubble {
	width: 477px;
	background: url('/path/to/commentBg.png') no-repeat;
	background-position: 100% 100%;
}
.bubbleHeader {
	height: 20px;
	background: url('/path/to/commentBg.png') no-repeat;
	background-position: 100% 0;
}
.bubbleInner {
	padding: 0 20px 10px 37px;
}</pre>
<p>Make sure you change &#8220;/path/to/comment.Bg.png&#8221; to reflect the actual path to the background image you&#8217;re using. Once you&#8217;ve dropped this into your design, you should see something that <a href="http://thumbsticks.com/games/xbox-360/call-of-duty-world-at-war">looks a little like this</a>.</p>
<p>Good luck, and happy styling!</p>
]]></content:encoded>
			<wfw:commentRss>http://kyleschaeffer.com/tutorials/a-very-simple-css-chat-bubble/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>The Wisdom of Simplicity</title>
		<link>http://kyleschaeffer.com/best-practices/the-wisdom-of-simplicity/</link>
		<comments>http://kyleschaeffer.com/best-practices/the-wisdom-of-simplicity/#comments</comments>
		<pubDate>Fri, 24 Jul 2009 18:38:11 +0000</pubDate>
		<dc:creator>Kyle</dc:creator>
				<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[XHTML]]></category>

		<guid isPermaLink="false">http://www.kyleschaeffer.com/?p=237</guid>
		<description><![CDATA[Web designers would be wise to approach every situation with one thing in mind: simplicity. Simplicity is the cornerstone of designing a well-structured and highly flexible HTML/CSS design. I&#8217;ve found that all too often, many designers approach a website with &#8230; <a href="http://kyleschaeffer.com/best-practices/the-wisdom-of-simplicity/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Web designers would be wise to approach every situation with one thing in mind: simplicity. Simplicity is the cornerstone of designing a well-structured and highly flexible HTML/CSS design. I&#8217;ve found that all too often, many designers approach a website with one thing in mind: the &#8220;look&#8221; of the fully rendered site. They approach each page or screen with a definitive pixel-perfect image in their heads, and they execute the design process to produce each pixel as it was originally intended.<span id="more-237"></span></p>
<p>The truth of the matter is that a web document is a compilation of various highly organized computer languages (XML, HTML, CSS, JavaScript, etc.). The web designer has the difficult task of considering the &#8220;art&#8221; of the design as well as the technical architecture of it. A truly skilled web designer has the ability to think both creatively and logically.  A designer bridges the gap between design and development, which is sometimes a very difficult task; a task made far more feasible by the utilization of simplicity.</p>
<h2>A Simple Example</h2>
<p>I use the word &#8220;simplicity&#8221; in a very generic sense; it&#8217;s a very broad term, so I&#8217;d like to use a few examples to show how simplicity can be a great aid in web design.  Take, for instance, the anchor tag (<code>&lt;a/&gt;</code>).  The anchor tag is at the very foundation of HTML; it is the most basic implementation of the concept of the internet:  the hyperlink.  It&#8217;s so simple in and of itself, how could designers possibly do anything at all to mar it&#8217;s glorious simplicity?</p>
<p><strong>Here are two anchor tags.  They appear quite identical, but the behavior of each is remarkably different.  Which one is better?</strong></p>
<style type="text/css">	.complexLink { display: block; width: 15em; padding: 1em 0; margin: 0 2em 2em 0; float: left; background: #f0f0f0; border: 1px #e0e0e0 solid; -moz-border-radius: 1em; -webkit-border-radius: 1em; text-align: center; }
.complexLink:hover { border-color: #c0c0c0; }
.complexLink a { color: #555; }
.complexLink a:hover { color: #d56e1c; text-decoration: none; }
.simpleLink { display: block; width: 15em; padding: 1em 0; margin: 0 2em 2em 0; float: left; background: #f0f0f0; color: #555; border: 1px #e0e0e0 solid; -moz-border-radius: 1em; -webkit-border-radius: 1em; text-align: center; }
.simpleLink:hover { color: #d56e1c; border-color: #c0c0c0; text-decoration: none; }
</style>
<p><span class="complexLink"><a href="javascript:alert('The art of art, the glory of expression and the sunshine of the light of letters, is simplicity.\n~ Walt Whitman');">A Simple Link</a></span> <a class="simpleLink" href="javascript:alert('Design is not just what it looks like and feels like. Design is how it works.\n~ Steve Jobs');">A Simple Link</a></p>
<div style="clear: both;">&nbsp;</div>
<p>Did you notice a difference? At first glance, they are identical, but the interactive behavior of each link is quite different. Move your mouse cursor over each link, and notice the difference in clickable area on each link. On the first anchor tag, only the text &#8220;A Simple Link&#8221; is hyperlinked. The padded area around the link is not. The second link, however, is fully hyperlinked (the entire padded area is clickable).</p>
<h2>Visual Interactivity</h2>
<p>This is a demonstration of the fundamental elements of simplicity in design. A user who visits your site doesn&#8217;t care how you&#8217;ve formatted your CSS and HTML, or how you&#8217;ve scripted page behavior to allow for access to your data. The user only cares about navigating to the content they&#8217;re interested in. When a user sees a visual element on the page (such as the links above), they want to move their mouse pointer to that element and click. If a particular page element has some level of interactive behavior associated with it, the <em>entire element</em> should react to that behavior.</p>
<h2>Logical Simplicity</h2>
<p>Treating page elements in this fashion can also help eliminate extraneous HTML and CSS. Again, using the example above, let&#8217;s look at the source code of these two different links and examine their differences.</p>
<div style="width: 45%; margin: 0 4% 0 0; float: left;">
<h3>Scenario 1 (Complex)</h3>
<pre>&lt;style type=&quot;text/css&quot;&gt;
.complexLink {
	display: block;
	width: 15em;
	padding: 1em 0;
	margin: 0 2em 2em 0;
	float: left;
	background: #f0f0f0;
	border: 1px #e0e0e0 solid;
	-moz-border-radius: 1em;
	-webkit-border-radius: 1em;
	text-align: center;
}
.complexLink:hover {
	border-color: #c0c0c0;
}
.complexLink a {
	color: #555;
}
.complexLink a:hover {
	color: #d56e1c;
	text-decoration: none;
}
&lt;/style&gt;
&lt;span class=&quot;complexLink&quot;&gt;&lt;a href=&quot;...&quot;&gt;A Simple Link&lt;/a&gt;&lt;/span&gt;</pre>
</div>
<div style="width: 45%; margin: 0 4% 0 0; float: left;">
<h3>Scenario 2 (Simple)</h3>
<pre>&lt;style type=&quot;text/css&quot;&gt;
.simpleLink {
	display: block;
	width: 15em;
	padding: 1em 0;
	margin: 0 2em 2em 0;
	float: left;
	background: #f0f0f0;
	color: #555;
	border: 1px #e0e0e0 solid;
	-moz-border-radius: 1em;
	-webkit-border-radius: 1em;
	text-align: center;
}
.simpleLink:hover {
	color: #d56e1c;
	border-color: #c0c0c0;
	text-decoration: none;
}
&lt;/style&gt;
&lt;a class=&quot;simpleLink&quot; href=&quot;...&quot;&gt;A Simple Link&lt;/a&gt;</pre>
</div>
<div class="clear"></div>
<p>The code above relates to the first and second links, respectively. At first, the two links seemed almost identical, but now the differences are really starting to show. Not only is our more complex example (the first link) more difficult for the user to interpret, but it&#8217;s also more work for you as the designer because you have more elements, layers, and styles to deal with.</p>
<h2>Now Repeat</h2>
<p>It might be somewhat trivial to look at an anchor tag in such depth, but this type of design methodology extends into every aspect of web development. From HTML to CSS, from JavaScript to server-side programming, simplicity is an essential element of a good design. You&#8217;ll find that adopting this mentality can increase your productivity, lower the costs of site re-design, and expedite efforts to troubleshoot and resolve rendering problems in your web application. Less really <em>is</em> more.</p>
<p>Take a moment, take your time, and think about each and every element that you design as an independent function of logic and art. Think about the best way to approach every control, and apply uncompromising simplicity wherever possible.</p>
]]></content:encoded>
			<wfw:commentRss>http://kyleschaeffer.com/best-practices/the-wisdom-of-simplicity/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

