<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-6018812889154195855</id><updated>2011-04-21T22:57:43.755-04:00</updated><category term='tables'/><category term='hack'/><category term='obfuscation'/><category term='jQuery'/><category term='Firefox'/><category term='CSS'/><category term='debugging'/><category term='Javascript'/><category term='dynamic'/><category term='browser compatibility'/><category term='HTML'/><category term='web development'/><category term='IE'/><category term='image'/><category term='cascading'/><title type='text'>An Accumulation of Pixels</title><subtitle type='html'>I work as a template developer for a company in the Indianapolis area.  This is a blog for the random problems or nifty tricks I've come across in CSS and Javascript. In my job, I use the Plone content management system.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://cdw9.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6018812889154195855/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://cdw9.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Chrissy Wainwright</name><uri>http://www.blogger.com/profile/17103901246039423434</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_RPFMRkaFYHY/TOdIhPuAvHI/AAAAAAAAAA8/-aJaFNsSR3M/S220/chrissy.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>20</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-6018812889154195855.post-5509847707383970979</id><published>2009-05-22T15:45:00.003-04:00</published><updated>2009-05-22T15:48:23.383-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='IE'/><category scheme='http://www.blogger.com/atom/ns#' term='CSS'/><category scheme='http://www.blogger.com/atom/ns#' term='browser compatibility'/><category scheme='http://www.blogger.com/atom/ns#' term='hack'/><title type='text'>IE8 CSS Hack</title><content type='html'>So the quick hack I found last night does indeed work.  Here is the breakdown of IE hacks:&lt;br /&gt;&lt;br /&gt;div {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;color: black; /* works for all browsers */&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;color: red\9; /* works for IE8 and below */&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;*color: green; /* works for IE7 and below */&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;_color: blue; /* works for IE6 and below */&lt;br /&gt;}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6018812889154195855-5509847707383970979?l=cdw9.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cdw9.blogspot.com/feeds/5509847707383970979/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6018812889154195855&amp;postID=5509847707383970979' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6018812889154195855/posts/default/5509847707383970979'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6018812889154195855/posts/default/5509847707383970979'/><link rel='alternate' type='text/html' href='http://cdw9.blogspot.com/2009/05/ie8-css-hack.html' title='IE8 CSS Hack'/><author><name>Chrissy Wainwright</name><uri>http://www.blogger.com/profile/17103901246039423434</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_RPFMRkaFYHY/TOdIhPuAvHI/AAAAAAAAAA8/-aJaFNsSR3M/S220/chrissy.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6018812889154195855.post-7463481365593528715</id><published>2009-05-21T21:23:00.003-04:00</published><updated>2009-05-21T21:43:56.156-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='IE'/><category scheme='http://www.blogger.com/atom/ns#' term='CSS'/><category scheme='http://www.blogger.com/atom/ns#' term='browser compatibility'/><title type='text'>Browser Review: Internet Explorer 8</title><content type='html'>Internet Explorer 8 has been out for a little while now, so I wanted to share some thoughts.  Firefox is my main browser, so I haven't really played around with IE8's features, just used it for testing.  Here are my observations so far:&lt;br /&gt;&lt;br /&gt;They did a good job a fixing some display issues that were broken in IE6 and IE7.  For the most part, I have been able to find myself not worrying about how things look in IE8.  Unfortunately, there are a few quirks - things I've found that work fine in IE6/7, but not 8.  I mean, what the heck?  Why do they fix some things, then break others?  It just adds to the endless frustration that is Internet Explorer.&lt;br /&gt;&lt;br /&gt;For those differences I found in IE6/7 vs. FF, I was just able to use the star and underscore hacks. (properties like "*width: 500px" will only display for IE7 and below, while "_width: 500px" will display for IE6 and below). At this point, I have not yet found a &lt;span style="font-style:italic;"&gt;simple&lt;/span&gt; hack that will work with IE8. (A quick web search just now proved otherwise, but I have not tested it yet.  I will write a new post if it does work.)&lt;br /&gt;&lt;br /&gt;One thing I have found helpful in IE8 is its "Compatibility Mode".  It allows you to view a website as IE7 would see it.  I have found it's not perfect - it does not always display things the same way standalone IE7 would, but it is much better than using MultipleIE (which is not perfect, either).&lt;br /&gt;&lt;br /&gt;So overall, IE8 isn't bad, but I still look forward to the day we will no longer have to fix our code just so it will look all right in outdated and incompetent browsers.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6018812889154195855-7463481365593528715?l=cdw9.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cdw9.blogspot.com/feeds/7463481365593528715/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6018812889154195855&amp;postID=7463481365593528715' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6018812889154195855/posts/default/7463481365593528715'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6018812889154195855/posts/default/7463481365593528715'/><link rel='alternate' type='text/html' href='http://cdw9.blogspot.com/2009/05/browser-review-internet-explorer-8.html' title='Browser Review: Internet Explorer 8'/><author><name>Chrissy Wainwright</name><uri>http://www.blogger.com/profile/17103901246039423434</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_RPFMRkaFYHY/TOdIhPuAvHI/AAAAAAAAAA8/-aJaFNsSR3M/S220/chrissy.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6018812889154195855.post-6010724609538101695</id><published>2009-04-29T08:51:00.002-04:00</published><updated>2009-04-29T08:59:33.226-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='jQuery'/><title type='text'>Using Variables in jQuery</title><content type='html'>I occasionally use variables and for loops with jQuery in order to change certain items on a page.  A good example of this would be my &lt;a href="http://cdw9.blogspot.com/2008/11/e-mail-obfuscation-with-jquery.html"&gt;obfuscation script&lt;/a&gt;, modified to work for any number of obfuscated e-mails on a page.&lt;blockquote&gt;jq(".replaceAt").replaceWith("@");&lt;br /&gt;    &lt;br /&gt;    obfnum = jq(".obfuscate").length;&lt;br /&gt;    &lt;br /&gt;    for(i = 0; i &lt; obfnum; i++) {&lt;br /&gt;         jq(".obfuscate").eq(i).attr("href", "mailto:"+jq('.obfuscate').eq(i).text());&lt;br /&gt;    }&lt;/blockquote&gt;Notice the use of .eq(i).  I have never had a problem with this, but the same method does not work if I were to do jq(".obfuscate:eq(i)"), which is quite necessary at times I want to change something inside of .obfuscate, and not .obfuscate itself. A quick Google search helped me find the solution:&lt;blockquote&gt;jq(".obfuscate:eq("+i+")")&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6018812889154195855-6010724609538101695?l=cdw9.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cdw9.blogspot.com/feeds/6010724609538101695/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6018812889154195855&amp;postID=6010724609538101695' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6018812889154195855/posts/default/6010724609538101695'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6018812889154195855/posts/default/6010724609538101695'/><link rel='alternate' type='text/html' href='http://cdw9.blogspot.com/2009/04/using-variables-in-jquery.html' title='Using Variables in jQuery'/><author><name>Chrissy Wainwright</name><uri>http://www.blogger.com/profile/17103901246039423434</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_RPFMRkaFYHY/TOdIhPuAvHI/AAAAAAAAAA8/-aJaFNsSR3M/S220/chrissy.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6018812889154195855.post-6808107389014313279</id><published>2009-04-08T13:06:00.002-04:00</published><updated>2009-04-08T13:59:31.309-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='image'/><category scheme='http://www.blogger.com/atom/ns#' term='CSS'/><title type='text'>Fun Backgrounds</title><content type='html'>I have seen a few sites recently that use this nifty effect: movement of certain images when you resize your browser window.  It's  hard to explain, so here are some examples:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://css-tricks.com/examples/StarryNight/"&gt;http://css-tricks.com/examples/StarryNight/&lt;/a&gt;&lt;br /&gt;&lt;a href="http://silverbackapp.com/"&gt;http://silverbackapp.com/&lt;/a&gt;&lt;br /&gt;&lt;a href="https://www.redbrickhealth.com/"&gt;https://www.redbrickhealth.com/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Pretty spiffy and super easy.  They use multiple background images with attachment: scroll and various position percentages.  Can't wait to try it out on a site.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6018812889154195855-6808107389014313279?l=cdw9.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cdw9.blogspot.com/feeds/6808107389014313279/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6018812889154195855&amp;postID=6808107389014313279' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6018812889154195855/posts/default/6808107389014313279'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6018812889154195855/posts/default/6808107389014313279'/><link rel='alternate' type='text/html' href='http://cdw9.blogspot.com/2009/04/fun-backgrounds.html' title='Fun Backgrounds'/><author><name>Chrissy Wainwright</name><uri>http://www.blogger.com/profile/17103901246039423434</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_RPFMRkaFYHY/TOdIhPuAvHI/AAAAAAAAAA8/-aJaFNsSR3M/S220/chrissy.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6018812889154195855.post-5076963743387705811</id><published>2009-03-17T13:05:00.002-04:00</published><updated>2009-03-17T13:09:16.984-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='image'/><category scheme='http://www.blogger.com/atom/ns#' term='CSS'/><category scheme='http://www.blogger.com/atom/ns#' term='browser compatibility'/><title type='text'>IE Image Scaling Quick Fix</title><content type='html'>I never knew this existed, but just came across &lt;a href="http://css-tricks.com/ie-fix-bicubic-scaling-for-images/"&gt;this article&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;To make Internet Explorer properly scale images, add this into your CSS: &lt;blockquote&gt;img { -ms-interpolation-mode: bicubic; }&lt;/blockquote&gt; nice and easy :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6018812889154195855-5076963743387705811?l=cdw9.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cdw9.blogspot.com/feeds/5076963743387705811/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6018812889154195855&amp;postID=5076963743387705811' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6018812889154195855/posts/default/5076963743387705811'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6018812889154195855/posts/default/5076963743387705811'/><link rel='alternate' type='text/html' href='http://cdw9.blogspot.com/2009/03/ie-image-scaling-quick-fix.html' title='IE Image Scaling Quick Fix'/><author><name>Chrissy Wainwright</name><uri>http://www.blogger.com/profile/17103901246039423434</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_RPFMRkaFYHY/TOdIhPuAvHI/AAAAAAAAAA8/-aJaFNsSR3M/S220/chrissy.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6018812889154195855.post-3345030941278186691</id><published>2009-02-07T13:46:00.003-05:00</published><updated>2009-02-07T14:01:50.682-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CSS'/><category scheme='http://www.blogger.com/atom/ns#' term='debugging'/><category scheme='http://www.blogger.com/atom/ns#' term='Firefox'/><title type='text'>Firefox Extensions</title><content type='html'>There are a ton of Firefox Extensions available to help web developers do their job.  Here are the ones I use:&lt;br /&gt;&lt;br /&gt;&lt;a href="https://addons.mozilla.org/en-US/firefox/addon/60"&gt;&lt;strong&gt;Web Developer&lt;/strong&gt;&lt;/a&gt;: I don't use this one very often, but it has a ton of useful options.  I mostly use it to turn off Javascript and CSS, or to resize my browser to a certain width.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://addons.mozilla.org/en-US/firefox/addon/1843"&gt;&lt;strong&gt;Firebug&lt;/strong&gt;&lt;/a&gt;: It would be a bit harder for me to do my job without this extension. Firebug allows you to manipulate the code of a page and see the changes directly on your screen.  None of these changes are saved anywhere , they will go away when you refresh the page.  I like to use it for testing CSS code before writing it into my CSS file (saves time from writing, saving, uploading, refreshing and fixing).  It is also a helpful tool for debugging Javascript or jQuery.  One important thing to know about the HTML code it shows you: this is the generated code, which is different from the normal source code.  So if you have some Javascript written to change an item on hover, you can see the changes that are made in the code as you hover on and off the element.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://addons.mozilla.org/en-US/firefox/addon/271"&gt;&lt;strong&gt;ColorZilla&lt;/strong&gt;&lt;/a&gt;: A color picker for your browser.  Very helpful when creating images that need to match the colors in your site.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://addons.mozilla.org/en-US/firefox/addon/539"&gt;&lt;strong&gt;MeasureIt&lt;/strong&gt;&lt;/a&gt;: A tool for measuring width and/or height of areas on a website.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://addons.mozilla.org/en-US/firefox/addon/7943"&gt;&lt;strong&gt;Pixel Perfect&lt;/strong&gt;&lt;/a&gt;: Requires Firebug.  Overlays an image (like a design comp) on top of your site so you can check how close you are to the design.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6018812889154195855-3345030941278186691?l=cdw9.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cdw9.blogspot.com/feeds/3345030941278186691/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6018812889154195855&amp;postID=3345030941278186691' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6018812889154195855/posts/default/3345030941278186691'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6018812889154195855/posts/default/3345030941278186691'/><link rel='alternate' type='text/html' href='http://cdw9.blogspot.com/2009/02/firefox-extensions.html' title='Firefox Extensions'/><author><name>Chrissy Wainwright</name><uri>http://www.blogger.com/profile/17103901246039423434</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_RPFMRkaFYHY/TOdIhPuAvHI/AAAAAAAAAA8/-aJaFNsSR3M/S220/chrissy.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6018812889154195855.post-2883263637141853357</id><published>2009-02-02T19:30:00.004-05:00</published><updated>2009-05-21T21:22:48.945-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='dynamic'/><category scheme='http://www.blogger.com/atom/ns#' term='image'/><category scheme='http://www.blogger.com/atom/ns#' term='CSS'/><category scheme='http://www.blogger.com/atom/ns#' term='browser compatibility'/><title type='text'>Simple Rounded Corners</title><content type='html'>&lt;a href="http://www.css3.info/preview/"&gt;CSS3&lt;/a&gt; is still a ways out into the future.  Sure, you can use some of its features, but if your sites need to be compatible for &lt;em&gt;all&lt;/em&gt; modern browsers, you're stuck with CSS2 for the time being.&lt;br /&gt;&lt;br /&gt;My most recent project uses a few rounded corners.  Since I am using CSS2 and don't want any complicated code, I am using images for these curvy angles.  If you read my &lt;a href="http://cdw9.blogspot.com/2009/01/images-when-and-what-to-use.html"&gt;previous post&lt;/a&gt;, you'll know that I'm trying to make my images as small in size as possible.&lt;br /&gt;&lt;br /&gt;One solution is to use the &lt;a href="http://www.alistapart.com/articles/slidingdoors/"&gt;sliding doors&lt;/a&gt; method.  My problem with this is that in some cases, your one image is unnecessarily large, and in other cases, your image may not be large enough (you never know, especially if you work with dynamic content!)&lt;br /&gt;&lt;br /&gt;My current project (&lt;a href="http://immersive-training.net/"&gt;immsersive-training.net&lt;/a&gt;) has boxes that fall into two categories: set height with unknown width, or set width with unknown height. For the boxes with set height, I made two images:&lt;br /&gt;&lt;br /&gt;&lt;img src="http://wainwright-photography.com/misc/images/rounded_top.gif" alt="rounded top" /&gt;&amp;nbsp;&lt;img src="http://wainwright-photography.com/misc/images/rounded_bottom.gif" alt="rounded bottom" /&gt;&lt;br /&gt;&lt;br /&gt;Obviously, the top and bottom of the box.  For the middle of the box, I just used CSS.  It has a set width and a border on the left and right.  Pretty simple.  My html code looks like this:&lt;blockquote&gt;&amp;lt;div&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;div class="header"&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;div class="middle"&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;div class="footer"&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;&amp;lt;/div&amp;gt;&lt;/blockquote&gt;The images are set as the background for the header and footer, and the CSS for the middle section is pretty simple:&lt;blockquote&gt;.middle {&lt;br /&gt;&amp;nbsp;&amp;nbsp;border-right: 1px solid #999999;&lt;br /&gt;&amp;nbsp;&amp;nbsp;border-left: 1px solid #999999;&lt;br /&gt;&amp;nbsp;&amp;nbsp;width: 196px;&lt;br /&gt;&amp;nbsp;&amp;nbsp;padding: 8px 15px;&lt;br /&gt;}&lt;/blockquote&gt;This also easily works for background colors other than white.&lt;br /&gt;&lt;br /&gt;If your border is a little bit more complicated, then for the middle part I suggest using just a sliver image, and setting it to repeat-y.&lt;br /&gt;&lt;br /&gt;Final Product:&lt;br /&gt;&lt;div class="header" style="background: url(http://wainwright-photography.com/misc/images/rounded_top.gif) no-repeat; width:228px; height: 8px;"&gt;&lt;/div&gt;&lt;div class="middle" style="background-color: #ffffff; border-right: 1px solid #999999; border-left: 1px solid #999999; width: 196px; padding: 8px 15px;"&gt;Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.&lt;/div&gt;&lt;div class="footer" style="background: url(http://wainwright-photography.com/misc/images/rounded_bottom.gif) no-repeat; width:228px; height: 8px;"&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6018812889154195855-2883263637141853357?l=cdw9.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cdw9.blogspot.com/feeds/2883263637141853357/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6018812889154195855&amp;postID=2883263637141853357' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6018812889154195855/posts/default/2883263637141853357'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6018812889154195855/posts/default/2883263637141853357'/><link rel='alternate' type='text/html' href='http://cdw9.blogspot.com/2009/02/simple-rounded-corners.html' title='Simple Rounded Corners'/><author><name>Chrissy Wainwright</name><uri>http://www.blogger.com/profile/17103901246039423434</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_RPFMRkaFYHY/TOdIhPuAvHI/AAAAAAAAAA8/-aJaFNsSR3M/S220/chrissy.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6018812889154195855.post-6489564980847098370</id><published>2009-01-29T20:49:00.003-05:00</published><updated>2009-01-30T08:33:20.327-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='image'/><category scheme='http://www.blogger.com/atom/ns#' term='CSS'/><category scheme='http://www.blogger.com/atom/ns#' term='browser compatibility'/><title type='text'>Images - When and What to Use</title><content type='html'>Other than photographs, images are used in websites for things such as logos, gradients, and rounded corners.  The three main image types are jpg, gif, and png.&lt;br /&gt;&lt;br /&gt;For photographs, &lt;strong&gt;jpg&lt;/strong&gt;s are the best way to go.  They can be saved at different qualities, so you can use a lower quality if you need a smaller file size.  The problem with this is that with certain images, it is very obvious that the photo has a low quality.  Pngs can also be used for images, but they have a much larger file size.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Png&lt;/strong&gt;'s greatest strength in web use is transparency.  This can be helpful if you want to see the background behind a non-square image around the edges, or if the image is not completely opaque.  The one downside to this is that Internet Explorer 6 does not support the transparency.  The image will still display, but will be on top of a grey box. However, there is a trick for getting around this in some cases.&lt;br /&gt;&lt;br /&gt;The png needs to be set as a background image, so all you need in the HTML is a block level element such as a div (block because we need to set the width and height).  The width and height of the element needs to be the same as the image.  So if transparent.png is 20x30px, here is what you put in the CSS: &lt;blockquote&gt;.imageDiv {&lt;br /&gt;width: 20px;&lt;br /&gt;height: 30px;&lt;br /&gt;filter: progid:DXImageTransform.Microsoft.AlphaImageLoader (src='/transparent.png',sizingMethod='scale');&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;html&amp;gt;body .imageDiv {&lt;br /&gt;background: url(&amp;dtml-portal_url;/transparent.png);&lt;br /&gt;}&lt;/blockquote&gt;The "filter" property is only recognized by IE, and IE6 ignores the &amp;gt; selector in the second part, so this background declaration is passed over.  As you can see, this method has some limitations (can't use a repeat), but it can be quite useful.&lt;br /&gt;&lt;br /&gt;Finally, we come to &lt;strong&gt;gif&lt;/strong&gt;.  I haven't used gifs much in the past, but lately have been trying to use them more.  Gifs are not good for photos, because they tend to be very grainy.  Gifs can do transparency, but not very well.  Gifs are great, however, for things like logos, illustrated images, or rounded corners.  Not only do they come out looking very clean, but they also have a smaller file size than a high-quality jpg.  Or if you're wanting to build a mid-90's style website, gifs do support animation.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6018812889154195855-6489564980847098370?l=cdw9.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cdw9.blogspot.com/feeds/6489564980847098370/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6018812889154195855&amp;postID=6489564980847098370' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6018812889154195855/posts/default/6489564980847098370'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6018812889154195855/posts/default/6489564980847098370'/><link rel='alternate' type='text/html' href='http://cdw9.blogspot.com/2009/01/images-when-and-what-to-use.html' title='Images - When and What to Use'/><author><name>Chrissy Wainwright</name><uri>http://www.blogger.com/profile/17103901246039423434</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_RPFMRkaFYHY/TOdIhPuAvHI/AAAAAAAAAA8/-aJaFNsSR3M/S220/chrissy.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6018812889154195855.post-7271871285440329979</id><published>2009-01-07T13:11:00.003-05:00</published><updated>2009-01-30T08:38:20.779-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CSS'/><title type='text'>Book Review: CSS Pocket Reference</title><content type='html'>&lt;img src="http://i41.tinypic.com/2ujqkgn.jpg" style="float: right; margin: 10px;" alt="CSS Pocket Reference Cover" /&gt;A couple weeks ago I decided I needed a good CSS book.  I walked into Barnes &amp; Noble fully expecting to pay at least $40-50.  I sat down in the Web Design section and started looking through all the thick books.  What I was interested in finding was a book that could teach me something I did not already know about CSS.  But all those thick books seemed to be more for beginner - intermediate users.  They all had plenty of examples and pictures, but none of them had just what I was wanted.&lt;br /&gt;&lt;br /&gt;Then I picked up the CSS Pocket Reference by Eric Meyer.  This tiny book had exactly what I was looking for:  a straight-forward list of all the CSS properties and their available values.  For each property it lists things such as the initial value, what elements it applies to, a description, an example, and browser support.  Not only is it a great quick reference, I was also able to learn a few things just from reading through the beginning of each entry.&lt;br /&gt;&lt;br /&gt;My main complaint of this book is the language used in the descriptions.  Some of them are actually too descriptive and wordy. For example, here is one of the rules of a floating element: &lt;blockquote&gt;"A left (or right) floating element that has another floating element to its left (right) may not have its right outer edge to the right (left) of its containing block's right (left) edge."&lt;/blockquote&gt;  This could have just been: "Multiple floating elements will wrap instead of pushing outside of their parent container."  But if you don't want to read through all the wordiness, you can just play with the CSS and see what happens.&lt;br /&gt;&lt;br /&gt;Final Rating: A-, definitely worth the $10&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6018812889154195855-7271871285440329979?l=cdw9.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cdw9.blogspot.com/feeds/7271871285440329979/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6018812889154195855&amp;postID=7271871285440329979' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6018812889154195855/posts/default/7271871285440329979'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6018812889154195855/posts/default/7271871285440329979'/><link rel='alternate' type='text/html' href='http://cdw9.blogspot.com/2009/01/book-review-css-pocket-reference.html' title='Book Review: CSS Pocket Reference'/><author><name>Chrissy Wainwright</name><uri>http://www.blogger.com/profile/17103901246039423434</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_RPFMRkaFYHY/TOdIhPuAvHI/AAAAAAAAAA8/-aJaFNsSR3M/S220/chrissy.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://i41.tinypic.com/2ujqkgn_th.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6018812889154195855.post-4104572301902928072</id><published>2008-12-27T16:43:00.007-05:00</published><updated>2008-12-29T13:26:50.943-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='image'/><category scheme='http://www.blogger.com/atom/ns#' term='CSS'/><category scheme='http://www.blogger.com/atom/ns#' term='jQuery'/><title type='text'>Image Cropping with CSS</title><content type='html'>&lt;h4&gt;Part 1&lt;/h4&gt;&lt;br /&gt;Here is a quick, easy way to create a gallery by making all of your images squares.  For simplicity's sake, in this example, all the images are 160x240px, both landscape and portrait.  We'll make our squares 150px.  In the HTML, wrap each image in a div, and give the div the following values:&lt;br /&gt;&lt;blockquote&gt;div {&lt;br /&gt;        &amp;nbsp;&amp;nbsp;width: 150px;&lt;br /&gt;        &amp;nbsp;&amp;nbsp;height: 150px;&lt;br /&gt;        &amp;nbsp;&amp;nbsp;overflow: hidden;&lt;br /&gt;        &amp;nbsp;&amp;nbsp;float: left;&lt;br /&gt;        &amp;nbsp;&amp;nbsp;margin: 0 10px 10px 0;&lt;br /&gt;    }&lt;/blockquote&gt;&lt;br /&gt;This sets up our square, and hides any part of the image that goes outside of that sqaure.  Additionally, it adds a float and puts some space between each image.&lt;br /&gt;&lt;h4&gt;Part 2&lt;/h4&gt;&lt;br /&gt;This gives us a good start to the gallery. My only compliant is that the images aren't centered within the div, we are only seeing the top left corner.  So I wrote some jQuery that does this. &lt;br /&gt;&lt;blockquote&gt;$(document).ready(function(){&lt;br /&gt;&amp;nbsp;&amp;nbsp;function centerImage(ele, w, h, pw, ph) {&lt;br /&gt;               &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;var heightdiff = -((h - ph) / 2);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;var widthdiff = -((w - pw) / 2);&lt;br /&gt;               &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$(ele).css("margin-left", widthdiff);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$(ele).css("margin-top", heightdiff);&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;         &lt;br /&gt;&amp;nbsp;&amp;nbsp;$("div &gt; img").load(function () { &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;centerImage($(this), $(this).width(), $(this).height(), $(this).parent().width(), $(this).parent().height()); &lt;br /&gt;&amp;nbsp;&amp;nbsp;});&lt;br /&gt;});&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;See all this in action &lt;a href="http://wainwright-photography.com/misc/gallery.html"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;From here, you can add more styles, link the images to a larger version, or anything else you can think of.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6018812889154195855-4104572301902928072?l=cdw9.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cdw9.blogspot.com/feeds/4104572301902928072/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6018812889154195855&amp;postID=4104572301902928072' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6018812889154195855/posts/default/4104572301902928072'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6018812889154195855/posts/default/4104572301902928072'/><link rel='alternate' type='text/html' href='http://cdw9.blogspot.com/2008/12/image-cropping-with-css.html' title='Image Cropping with CSS'/><author><name>Chrissy Wainwright</name><uri>http://www.blogger.com/profile/17103901246039423434</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_RPFMRkaFYHY/TOdIhPuAvHI/AAAAAAAAAA8/-aJaFNsSR3M/S220/chrissy.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6018812889154195855.post-3876485997583864874</id><published>2008-12-23T17:16:00.005-05:00</published><updated>2008-12-23T17:21:02.782-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CSS'/><title type='text'>Inline List Items</title><content type='html'>When putting together a list with the li set to display: inline, the list will display some extra space in between each item.  This space can be quite annoying.  To fix it, put a float on the list items.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6018812889154195855-3876485997583864874?l=cdw9.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cdw9.blogspot.com/feeds/3876485997583864874/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6018812889154195855&amp;postID=3876485997583864874' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6018812889154195855/posts/default/3876485997583864874'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6018812889154195855/posts/default/3876485997583864874'/><link rel='alternate' type='text/html' href='http://cdw9.blogspot.com/2008/12/inline-list-items.html' title='Inline List Items'/><author><name>Chrissy Wainwright</name><uri>http://www.blogger.com/profile/17103901246039423434</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_RPFMRkaFYHY/TOdIhPuAvHI/AAAAAAAAAA8/-aJaFNsSR3M/S220/chrissy.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6018812889154195855.post-643425319486060104</id><published>2008-12-20T20:33:00.002-05:00</published><updated>2008-12-20T21:18:24.875-05:00</updated><title type='text'>Letting Things Go</title><content type='html'>This post is going to be more of a rant than anything...&lt;br /&gt;&lt;br /&gt;For the last 2.5 years, my husband was a youth pastor for a church in Indiana.  Being the pastor's wife, I took on a few responsibilities, one of which being the church's websites.  I took the time to design, implement, and maintain both the church's website and youth group website for free.&lt;br /&gt;&lt;br /&gt;My husband was let go last month, so I quit updating the websites.  I'm the type that hates to leave things undone, so I found a couple people that were willing to take over the updates, and spent some time teaching them how to do it.&lt;br /&gt;&lt;br /&gt;I hopped on one of the sites today to grab some information, and found the site had been completely redone, but not by either person I had spent time with.  Apparently someone else had been brought in to redo the whole website.  My biggest complaint - it is now all in Flash (I have several other complaints as well, but I'm not going into those).&lt;br /&gt;&lt;br /&gt;This is a static, informational site.  There is no reason for it to use Flash.  Flash should only be used for splash pages, videos, and games.  They don't even have any special animation that would require Flash.  Plus, a lot of nifty "animations" can be now be easily done with &lt;a href="http://jquery.com/"&gt;jQuery&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;So this now brings me to my point.  At times in your web designing life, you are going to quit working on projects and hand them off to the next person.  At that point, it is no longer in your control, so whatever happens from then on is not your responsibility.  But at the point of the hand-off: make sure to keep a copy of the code for your portfolio.  I did this, and am glad I did since I can no longer refer to these websites.  I'm thinking about rebuilding a couple pages to put up as samples on my personal website.&lt;br /&gt;&lt;br /&gt;&amp;lt;/rant&amp;gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6018812889154195855-643425319486060104?l=cdw9.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cdw9.blogspot.com/feeds/643425319486060104/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6018812889154195855&amp;postID=643425319486060104' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6018812889154195855/posts/default/643425319486060104'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6018812889154195855/posts/default/643425319486060104'/><link rel='alternate' type='text/html' href='http://cdw9.blogspot.com/2008/12/letting-things-go.html' title='Letting Things Go'/><author><name>Chrissy Wainwright</name><uri>http://www.blogger.com/profile/17103901246039423434</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_RPFMRkaFYHY/TOdIhPuAvHI/AAAAAAAAAA8/-aJaFNsSR3M/S220/chrissy.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6018812889154195855.post-5738355688107771609</id><published>2008-12-09T21:24:00.004-05:00</published><updated>2008-12-09T23:09:06.332-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='web development'/><category scheme='http://www.blogger.com/atom/ns#' term='CSS'/><category scheme='http://www.blogger.com/atom/ns#' term='cascading'/><title type='text'>How CSS Works</title><content type='html'>I have encountered a couple situations recently in working with clients that are writing their own CSS.  By looking at their code, I can see that they don't completely understand how CSS works, because they are writing &lt;strong&gt;too much code&lt;/strong&gt;.  So I decided a blog post on this topic was necessary.&lt;br /&gt;&lt;br /&gt;The beauty of Cascading Style Sheets is their ability to &lt;em&gt;cascade&lt;/em&gt;.  Basically, when you have several style sheets, the last one to be read into the page is going to have the most importance, but all files will still be read.  Certain parts of the less important files are just overridden.&lt;br /&gt;&lt;br /&gt;So let's say in one CSS file you have the following attributes set for paragraph text:&lt;br /&gt;&lt;blockquote&gt;p {&lt;br /&gt;   color: #000000;&lt;br /&gt;   font-size: 12px;&lt;br /&gt;   line-height: 16px;&lt;br /&gt;}&lt;/blockquote&gt;&lt;br /&gt;This file is called into your document by putting this code in the &amp;lt;head&amp;gt;:&lt;br /&gt;&lt;blockquote&gt;&amp;lt;style type="text/css" media="all"&amp;gt;@import url("first.css");&amp;lt/style&amp;gt;&lt;/blockquote&gt;&lt;br /&gt;Now you have a second file you want to import, and it has these attributes for your paragraphs:&lt;br /&gt;&lt;blockquote&gt;p {&lt;br /&gt;   color: #4c4c4c&lt;br /&gt;   margin: 0;&lt;br /&gt;   padding: 0 0 15px 0;&lt;br /&gt;   font-weight: normal;&lt;br /&gt;}&lt;/blockquote&gt;&lt;br /&gt;And this second file is now added to your list of imported stylesheets:&lt;br /&gt;&lt;blockquote&gt;&amp;lt;style type="text/css" media="all"&amp;gt;@import url("first.css");&amp;lt;/style&amp;gt;&lt;br /&gt;&amp;lt;style type="text/css" media="all"&amp;gt;@import url("second.css");&amp;lt;/style&amp;gt;&lt;/blockquote&gt;&lt;br /&gt;All attributes will be read in from first.css, then second.css.  Color is listed in both, so since second.css is listed last, it's going to take the #4c4c4c value, overriding #000000.  All other values listed in first.css will still apply to the paragraphs.  There is no need to duplicate the attributes listed in first.css into second.css.&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;More&lt;/h4&gt;&lt;br /&gt;To go into this a little bit further -- let's add a class called "bodyText" to that paragraph.  Since it's still a paragraph, all the CSS listed above will apply.  But now you can add more CSS that is specific to your bodyText:&lt;br /&gt;&lt;blockquote&gt;.bodyText {&lt;br /&gt;   font-weight: bold;&lt;br /&gt;   border: 1px solid #123456;&lt;br /&gt;}&lt;/blockquote&gt;&lt;br /&gt;Once again, the styles that have already been declared for paragraphs do not need to be duplicated.&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;Why?&lt;/h4&gt;&lt;br /&gt;Now why would you ever use multiple stylesheets?  I'll give a simple example.  Let's say you have a fairly large website, with three or four separate sections.  You have one CSS file that will apply to the entire site.  This will set things like page width and font.  But now you want each section to have its own set of colors.  This is where you can write a specific CSS file for each section.  Each section will import the site-wide CSS, then that section's css.&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;A Matter of !Importance&lt;/h4&gt;&lt;br /&gt;Final note, I promise.  If you were to go back to first.css and add !important next to the color (color: #000000 !important;), it is going to take precedence (unless, of course, second.css also had !important next to its color). I try to use this sparingly, especially since IE6 tends to ignore it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6018812889154195855-5738355688107771609?l=cdw9.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cdw9.blogspot.com/feeds/5738355688107771609/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6018812889154195855&amp;postID=5738355688107771609' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6018812889154195855/posts/default/5738355688107771609'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6018812889154195855/posts/default/5738355688107771609'/><link rel='alternate' type='text/html' href='http://cdw9.blogspot.com/2008/12/how-css-works.html' title='How CSS Works'/><author><name>Chrissy Wainwright</name><uri>http://www.blogger.com/profile/17103901246039423434</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_RPFMRkaFYHY/TOdIhPuAvHI/AAAAAAAAAA8/-aJaFNsSR3M/S220/chrissy.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6018812889154195855.post-6818197625786636740</id><published>2008-11-05T20:34:00.003-05:00</published><updated>2008-11-05T20:54:42.428-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='obfuscation'/><category scheme='http://www.blogger.com/atom/ns#' term='HTML'/><category scheme='http://www.blogger.com/atom/ns#' term='jQuery'/><title type='text'>E-mail Obfuscation with jQuery</title><content type='html'>I recently was given the task to obfuscate e-mail addresses.  I looked at a few options, and decided I wanted a method that followed some certain criteria:&lt;br /&gt;&amp;nbsp;&amp;nbsp; 1. easy to implement&lt;br /&gt;&amp;nbsp;&amp;nbsp; 2. effective&lt;br /&gt;&amp;nbsp;&amp;nbsp; 3. linked&lt;br /&gt;&amp;nbsp;&amp;nbsp; 4. selectable text&lt;br /&gt;&lt;br /&gt;I found &lt;a href="http://techblog.tilllate.com/2008/07/20/ten-methods-to-obfuscate-e-mail-addresses-compared/"&gt;a blog&lt;/a&gt; where this guy put nine different obfuscation methods on &lt;a href="http://ch.tilllate.com/061101_emailtest.php"&gt;one web page&lt;/a&gt;, and let it sit for a year and a half. &lt;a href="http://techblog.tilllate.com/wp-content/uploads/2008/07/obfuscation_methods.png"&gt;This graph&lt;/a&gt; shows the effectiveness of each method.  Using all of this data, I decided Javascript was the way I wanted to go.  For extra simplicity, I went with &lt;a href="http://jquery.com/"&gt;jQuery&lt;/a&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;&amp;lt;a class="obfuscate"&amp;gt;example&amp;lt;span class="replaceAt"&amp;gt;-AT-&amp;lt;/span&amp;gt;gmail.com&amp;lt;/a&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;script type="text/javascript" charset="utf-8"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;$(".replaceAt").replaceWith("@");&lt;br /&gt;&amp;nbsp;&amp;nbsp;$(".obfuscate").attr("href", "mailto:"+$('.obfuscate').text());&lt;br /&gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;The first line replaces the whole .replaceAt span (including tags) with an @, then the second line takes the constructed e-mail and sticks it into the href of the &amp;lt;a&amp;gt;.  Those without Javascript installed will see example-AT-gmail.com.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6018812889154195855-6818197625786636740?l=cdw9.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cdw9.blogspot.com/feeds/6818197625786636740/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6018812889154195855&amp;postID=6818197625786636740' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6018812889154195855/posts/default/6818197625786636740'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6018812889154195855/posts/default/6818197625786636740'/><link rel='alternate' type='text/html' href='http://cdw9.blogspot.com/2008/11/e-mail-obfuscation-with-jquery.html' title='E-mail Obfuscation with jQuery'/><author><name>Chrissy Wainwright</name><uri>http://www.blogger.com/profile/17103901246039423434</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_RPFMRkaFYHY/TOdIhPuAvHI/AAAAAAAAAA8/-aJaFNsSR3M/S220/chrissy.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6018812889154195855.post-6598152736615505389</id><published>2008-10-29T22:25:00.002-04:00</published><updated>2008-10-30T19:36:44.584-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='dynamic'/><category scheme='http://www.blogger.com/atom/ns#' term='CSS'/><category scheme='http://www.blogger.com/atom/ns#' term='HTML'/><title type='text'>Dynamic Text in a Limited Amount of Space</title><content type='html'>A common problem I've seen when working with dynamic text is you sometimes don't know how much text the end user is going to enter, and this can be a problem when you have a limited amount of space.  Generally, you set the container to overflow:hidden and be done with it.  The problem with this is that sometimes your text gets cut off in the middle of the line so only the tops of the letters can be seen.  It's especially a pain when you are never 100% sure that your users are going to have the correct font.&lt;br /&gt;&lt;br /&gt;One solution is to limit the amount of characters, but this isn't always very consistent with the varying sizes of words - you can end up with more or less space available than desired.  I decided I wanted to limit the amount of lines, and was able to achieve this with just CSS:&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;.box {&lt;br /&gt;  width: 50px;&lt;br /&gt;  height: 50px;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;.box span {&lt;br /&gt;  display: block;&lt;br /&gt;  font-size: 10px;&lt;br /&gt;  line-height: 14px;&lt;br /&gt;  height: 42px;&lt;br /&gt;  overflow: hidden;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&amp;lt;div class="box"&amp;gt;&lt;br /&gt;  &amp;lt;span&amp;gt;Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor.&amp;lt;/span&amp;gt;&lt;br /&gt;&amp;lt;/div&amp;gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;The line-height here is important, and then setting the height to 42px limits our text to 3 lines (14 x 3 = 42).  A "read more" link can then be added after the span, if desired.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6018812889154195855-6598152736615505389?l=cdw9.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cdw9.blogspot.com/feeds/6598152736615505389/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6018812889154195855&amp;postID=6598152736615505389' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6018812889154195855/posts/default/6598152736615505389'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6018812889154195855/posts/default/6598152736615505389'/><link rel='alternate' type='text/html' href='http://cdw9.blogspot.com/2008/10/dynamic-text-in-limited-amount-of-space.html' title='Dynamic Text in a Limited Amount of Space'/><author><name>Chrissy Wainwright</name><uri>http://www.blogger.com/profile/17103901246039423434</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_RPFMRkaFYHY/TOdIhPuAvHI/AAAAAAAAAA8/-aJaFNsSR3M/S220/chrissy.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6018812889154195855.post-6333404276107465312</id><published>2008-10-16T15:36:00.003-04:00</published><updated>2008-10-30T19:37:18.378-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CSS'/><category scheme='http://www.blogger.com/atom/ns#' term='browser compatibility'/><title type='text'>Quick Border Fix</title><content type='html'>Ever have a problem with borders mysteriously disappearing/reappearing from some of your items in IE? Give the item "&lt;span style="font-weight:bold;"&gt;position: relative;&lt;/span&gt;"&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6018812889154195855-6333404276107465312?l=cdw9.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cdw9.blogspot.com/feeds/6333404276107465312/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6018812889154195855&amp;postID=6333404276107465312' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6018812889154195855/posts/default/6333404276107465312'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6018812889154195855/posts/default/6333404276107465312'/><link rel='alternate' type='text/html' href='http://cdw9.blogspot.com/2008/10/quick-border-fix.html' title='Quick Border Fix'/><author><name>Chrissy Wainwright</name><uri>http://www.blogger.com/profile/17103901246039423434</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_RPFMRkaFYHY/TOdIhPuAvHI/AAAAAAAAAA8/-aJaFNsSR3M/S220/chrissy.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6018812889154195855.post-6980888209808087992</id><published>2008-09-29T09:52:00.005-04:00</published><updated>2008-09-29T14:48:44.403-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CSS'/><category scheme='http://www.blogger.com/atom/ns#' term='HTML'/><category scheme='http://www.blogger.com/atom/ns#' term='tables'/><title type='text'>Cellspacing and Cellpadding With CSS</title><content type='html'>In HTML, a &amp;lt;table&amp;gt; can have a couple attributes added to it: cellspacing and cellpadding, and these attributes are valid code.  Unfortunately, these  have default values so that writing &lt;blockquote&gt;&amp;lt;table&amp;gt;&lt;/blockquote&gt; is basically the same as &lt;blockquote&gt;&amp;lt;table cellpadding="1" cellspacing="2"&amp;gt;&lt;/blockquote&gt;&lt;br /&gt;This becomes a problem when you do not want this additional space and cannot change the HTML, as cellpadding and cellspacing are not CSS attributes.  There is still a way to get around this in CSS with the following code:&lt;br /&gt;&lt;blockquote&gt;table {&lt;br /&gt; border-collapse: collapse;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;table td {&lt;br /&gt; padding: 0&lt;br /&gt;}&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6018812889154195855-6980888209808087992?l=cdw9.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cdw9.blogspot.com/feeds/6980888209808087992/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6018812889154195855&amp;postID=6980888209808087992' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6018812889154195855/posts/default/6980888209808087992'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6018812889154195855/posts/default/6980888209808087992'/><link rel='alternate' type='text/html' href='http://cdw9.blogspot.com/2008/09/cellspacing-and-cellpadding-with-css.html' title='Cellspacing and Cellpadding With CSS'/><author><name>Chrissy Wainwright</name><uri>http://www.blogger.com/profile/17103901246039423434</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_RPFMRkaFYHY/TOdIhPuAvHI/AAAAAAAAAA8/-aJaFNsSR3M/S220/chrissy.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6018812889154195855.post-6308934573286342643</id><published>2008-09-11T10:17:00.003-04:00</published><updated>2008-09-11T10:23:27.235-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CSS'/><title type='text'>Always Learning</title><content type='html'>It seems funny to me, that because of the way I learned CSS there are still lots of things I don't know.&lt;br /&gt;&lt;br /&gt;For instance, a couple weeks ago I was in a Barnes &amp; Noble and picked up a CSS book.  After flipping to random page, I found a CSS property I didn't know existed: outline.  When used in this way: &lt;blockquote&gt;a { outline: none; }&lt;/blockquote&gt; the outline you see after clicking on a link no longer displays.&lt;br /&gt;&lt;br /&gt;This is particularly helpful in Firefox, because for absolutely positioned links, the outline often stretches to the far left side of the page, which drove our QA person nuts. Previously, I was fixing this behavior by using overflow:hidden, but this doesn't always work depending on how your links are set up. I personally don't like the outline, so I plan on setting it to none on all of my sites now.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6018812889154195855-6308934573286342643?l=cdw9.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cdw9.blogspot.com/feeds/6308934573286342643/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6018812889154195855&amp;postID=6308934573286342643' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6018812889154195855/posts/default/6308934573286342643'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6018812889154195855/posts/default/6308934573286342643'/><link rel='alternate' type='text/html' href='http://cdw9.blogspot.com/2008/09/always-learning.html' title='Always Learning'/><author><name>Chrissy Wainwright</name><uri>http://www.blogger.com/profile/17103901246039423434</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_RPFMRkaFYHY/TOdIhPuAvHI/AAAAAAAAAA8/-aJaFNsSR3M/S220/chrissy.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6018812889154195855.post-8485903143802234691</id><published>2008-09-05T16:43:00.007-04:00</published><updated>2009-01-30T08:38:08.745-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='web development'/><category scheme='http://www.blogger.com/atom/ns#' term='Javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='image'/><category scheme='http://www.blogger.com/atom/ns#' term='CSS'/><category scheme='http://www.blogger.com/atom/ns#' term='browser compatibility'/><title type='text'>IE6 Disappearing Images Solution</title><content type='html'>After a bit of testing on my issue with the sprites disappearing on hover, I came up with a temporary solution.  I still wasn't satisfied with it, and did some more searching on Google.  That lead me to a nice script that fixes the problem.  Here are the two solutions:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Temporary Fix:&lt;/span&gt;&lt;br /&gt;Take the images being used for each link, and set them as the background of the ul or table you are using for the navigation.  I made a quick attempt to set the image as the background of the li that contains the anchor, but that still flashed.  It seemed to work fine putting it in the background of the ul.  This solution does not fix the disappearing images, just makes it less noticeable.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Script Fix:&lt;/span&gt;&lt;br /&gt;Doing a Google search led me to this script:&lt;br /&gt;&lt;blockquote&gt;&amp;lt;script type="text/javascript"&amp;gt;&lt;br /&gt;document.execCommand("BackgroundImageCache",false,true);&lt;br /&gt;&amp;lt;/script&amp;gt;&lt;/blockquote&gt;and that seemed to fix the problem just fine.  I have more testing to do, but hopefully this will be my final solution.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6018812889154195855-8485903143802234691?l=cdw9.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cdw9.blogspot.com/feeds/8485903143802234691/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6018812889154195855&amp;postID=8485903143802234691' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6018812889154195855/posts/default/8485903143802234691'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6018812889154195855/posts/default/8485903143802234691'/><link rel='alternate' type='text/html' href='http://cdw9.blogspot.com/2008/09/ie6-disappearing-images-solution.html' title='IE6 Disappearing Images Solution'/><author><name>Chrissy Wainwright</name><uri>http://www.blogger.com/profile/17103901246039423434</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_RPFMRkaFYHY/TOdIhPuAvHI/AAAAAAAAAA8/-aJaFNsSR3M/S220/chrissy.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6018812889154195855.post-8489256737943744824</id><published>2008-09-03T22:27:00.000-04:00</published><updated>2009-01-30T08:38:08.746-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='web development'/><category scheme='http://www.blogger.com/atom/ns#' term='Javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='image'/><category scheme='http://www.blogger.com/atom/ns#' term='CSS'/><category scheme='http://www.blogger.com/atom/ns#' term='browser compatibility'/><title type='text'>IE6 and Dropdown Navs</title><content type='html'>So I have run into this certain issue lately involving dropdown navigation menus and IE6.  It doesn't happen all the time, but with certain sites I have noticed the background on menu items disappearing when you hover over them to display the dropdown.  It doesn't always only cause the hovered item's background to disappear, but sometimes also the background of the items continuing to the right of the hovered item.&lt;br /&gt;&lt;br /&gt;I am pretty sure this is being caused by the Javascript that was written for the dropdowns to work, specifically for IE6.  The dropdowns do appear in other browsers without the use of the Javascript.  The JS in question simply changes the name of the class applied to your hovered item.  I tried to use JQuery instead, and got the same result. &lt;br /&gt;&lt;br /&gt;Upon further inspection today, I found that this is only happening when your main nav items are using background images, instead of pure CSS colors.  The images I am using are even sprites, so there is no apparent reason for their disappearance.  One site I am seeing this behavior on is our own, so that can easily be changed to not use images.  The other, unfortunately, is a client site.  The designer has designed the site in such a way that images are necessary, and as we recently discovered, the client is using IE6.&lt;br /&gt;&lt;br /&gt;So much for ignoring the obsolete.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6018812889154195855-8489256737943744824?l=cdw9.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cdw9.blogspot.com/feeds/8489256737943744824/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6018812889154195855&amp;postID=8489256737943744824' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6018812889154195855/posts/default/8489256737943744824'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6018812889154195855/posts/default/8489256737943744824'/><link rel='alternate' type='text/html' href='http://cdw9.blogspot.com/2008/09/ie6-and-dropdown-navs.html' title='IE6 and Dropdown Navs'/><author><name>Chrissy Wainwright</name><uri>http://www.blogger.com/profile/17103901246039423434</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_RPFMRkaFYHY/TOdIhPuAvHI/AAAAAAAAAA8/-aJaFNsSR3M/S220/chrissy.jpg'/></author><thr:total>0</thr:total></entry></feed>
