<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:blogChannel="http://backend.userland.com/blogChannelModule" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#">
  <id>http://blog.focus44.com/</id>
  <title>Focus 44 Blog</title>
  <updated>2009-04-07T14:25:04+00:00</updated>
  <link href="http://blog.focus44.com/" />
  
  <subtitle>design&amp;development integration</subtitle>
  <author>
    <name>Focus 44</name>
  </author>
  <generator uri="http://dotnetblogengine.net/" version="1.0.0.0">BlogEngine.Net Syndication Generator</generator>
  <blogChannel:blogRoll>http://blog.focus44.com/opml.axd</blogChannel:blogRoll>
  <blogChannel:blink>http://www.dotnetblogengine.net/syndication.axd</blogChannel:blink>
  <dc:creator>Focus 44</dc:creator>
  <dc:description>design&amp;development integration</dc:description>
  <dc:language>en-US</dc:language>
  <dc:title>Focus 44 Blog</dc:title>
  <geo:lat>44.700000</geo:lat>
  <geo:long>93.700000</geo:long>
  <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/Focus44" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="focus44" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><geo:lat>44.736595</geo:lat><geo:long>-93.656191</geo:long><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://add.my.yahoo.com/rss?url=http%3A%2F%2Ffeeds.feedburner.com%2FFocus44" src="http://us.i1.yimg.com/us.yimg.com/i/us/my/addtomyyahoo4.gif">Subscribe with My Yahoo!</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.newsgator.com/ngs/subscriber/subext.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2FFocus44" src="http://www.newsgator.com/images/ngsub1.gif">Subscribe with NewsGator</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://feeds.my.aol.com/add.jsp?url=http%3A%2F%2Ffeeds.feedburner.com%2FFocus44" src="http://o.aolcdn.com/favorites.my.aol.com/webmaster/ffclient/webroot/locale/en-US/images/myAOLButtonSmall.gif">Subscribe with My AOL</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.bloglines.com/sub/http://feeds.feedburner.com/Focus44" src="http://www.bloglines.com/images/sub_modern11.gif">Subscribe with Bloglines</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.netvibes.com/subscribe.php?url=http%3A%2F%2Ffeeds.feedburner.com%2FFocus44" src="http://www.netvibes.com/img/add2netvibes.gif">Subscribe with Netvibes</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://fusion.google.com/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2FFocus44" src="http://buttons.googlesyndication.com/fusion/add.gif">Subscribe with Google</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.pageflakes.com/subscribe.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2FFocus44" src="http://www.pageflakes.com/ImageFile.ashx?instanceId=Static_4&amp;fileName=ATP_blu_91x17.gif">Subscribe with Pageflakes</feedburner:feedFlare><entry>
    <id>http://blog.focus44.com/post/hasLayout.aspx</id>
    <title>To 'hasLayout' or not to 'hasLayout.' That is the question...</title>
    <updated>2009-04-07T04:00:00+00:00</updated>
    <link rel="self" href="http://blog.focus44.com/post.aspx?id=fa28fa30-ce70-46c0-93ad-022c41cf6dec" />
    <link href="http://blog.focus44.com/post/hasLayout.aspx" />
    <author>
      <name>gabe@focus44.com</name>
    </author>
    <summary type="html">&lt;p&gt;
Like my last post, &amp;quot;&lt;span class="postheader taggedlink"&gt;&lt;strong&gt;&lt;a href="http://blog.focus44.com/post/IE6_hover_fix.aspx" target="_blank" title="Go to post..."&gt;Enabling :hover Pseudo Class in IE6&lt;/a&gt;&lt;/strong&gt;,&amp;quot; this blog entry deals with the fantastic world of Internet Explorer 6.&amp;nbsp; Anyone who has done any amount of design and bothered to check the results in IE6 has most likely run into the infamous and frustrating &amp;quot;Peek-a-boo&amp;quot; bug. &amp;nbsp;&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
Though this problem does at times affect IE7, it is a virtually unavoidable &amp;quot;feature&amp;quot; of IE6 for new designers.&amp;nbsp; I say new designers because it does not take many infected design attempts before we inevitably scour the internet for a solution. I know I did.&amp;nbsp; The numerous discussions about Internet Explorer&amp;#39;s &amp;quot;hasLayout&amp;quot; property can leave the un-initiated feeling dizzy and disoriented. 
&lt;/p&gt;
&lt;p&gt;
The &amp;quot;hasLayout&amp;quot; property is a mystical and magical phenomenon that is extremely difficult to predict or trouble shoot.&amp;nbsp; It is an element built into Internet Explorer that helps decide how elements are rendered and relate.&amp;nbsp; I am including a few links for the students among us who wish to study the matter more fully.&amp;nbsp; For the rest of you, fee free to skip to the solution.
&lt;/p&gt;
&lt;ul style="list-style-type: none"&gt;
	&lt;li&gt;
	&amp;raquo; &lt;em&gt;Ingo Chao&amp;#39;s detailed explanation &amp;quot;&lt;strong&gt;&lt;a href="http://www.satzansatz.de/cssd/onhavinglayout.html" target="_blank"&gt;On Having Layout&lt;/a&gt;&lt;/strong&gt;&amp;quot;&lt;/em&gt;
	&lt;/li&gt;
	&lt;li&gt;
	&amp;raquo; &lt;em&gt;MSDN&amp;#39;s &amp;quot;&lt;strong&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb250481.aspx" target="_blank"&gt;HasLayout Overview&lt;/a&gt;&lt;/strong&gt;&amp;quot; &lt;/em&gt;
	&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;strong&gt;Our &lt;/strong&gt;&lt;strong&gt;Solution&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;u&gt;Part 1: IE6-Specific Style Sheet or CSS&lt;/u&gt;
&lt;/p&gt;
&lt;p&gt;
The first step is creating an IE6-specific style sheet and linking it to our site (the code below actually applies to every version of IE, 6 and below).&amp;nbsp; This solution will not validate with a css validator so we want to affect as few browsers as possible.&amp;nbsp; We are going to create an &amp;quot;if&amp;quot; statement in the &amp;lt;head&amp;gt; of each page we want to link this fix to.&amp;nbsp; We create our sites using an ASP.Net Master Page, allowing us to link the fix to each page of our site in one place.
&lt;/p&gt;
&lt;div style="overflow: auto; width: 515px"&gt;
&lt;div style="width: 800px"&gt;
&lt;code&gt;
&amp;lt;!--[if lte IE 6] &amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;link href=&amp;quot;./themes/IE6_Styles.css&amp;quot; type=&amp;quot;text/css&amp;quot; rel=&amp;quot;stylesheet&amp;quot; media=&amp;quot;all&amp;quot;/&amp;gt;
&amp;lt;![endif]--&amp;gt;
&lt;/code&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
This style sheet is where you will put all of your styles that will affect your site when viewed in IE6 or older.&amp;nbsp; Make sure that you link any other style sheets above this &amp;quot;if&amp;quot; statement.&amp;nbsp; That way the IE6 style will override your normal style sheet(s) for duplicate classes.
&lt;/p&gt;
&lt;p&gt;
&lt;u&gt;Part 2: A Little Magic of Our Own&lt;/u&gt;
&lt;/p&gt;
&lt;p&gt;
I used to try to correct every issue on an individual basis using a combination of &amp;quot;position:relative&amp;quot; and &amp;quot;zoom:1&amp;quot; tags.&amp;nbsp; Unfortunately, that takes a ton of time and energy.&amp;nbsp; One could go crazy...&amp;nbsp; 
&lt;/p&gt;
&lt;p&gt;
While trying my best to explain the bug to my business partner one day, he asked, &amp;quot;why not just fix every element on the page at once.&amp;quot;&amp;nbsp; Indeed, why not?&amp;nbsp; My brain thought best practices, standards, accessibility...&amp;nbsp; Then I thought, retire your browser people!&amp;nbsp; One of us is getting too old for this, and my IRA says it is not me just yet... &amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
So I gave in and put the following in my IE6-specific style sheet:
&lt;/p&gt;
&lt;div style="width: 515px"&gt;
&lt;code&gt;
body *&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { zoom:1; }
&lt;/code&gt;
&lt;/div&gt;
&lt;p&gt;
Amazingly, applying a zoom:1 to every element in the body tag eliminated my peek-a-boo troubles in IE6.  However, it also screwed up all of the &amp;lt;ol&amp;gt;&amp;#39;s and &amp;lt;ul&amp;gt;&amp;#39;s royally.  I lost my list bullets, the margins and padding were off, and every item in my &amp;lt;ol&amp;gt;&amp;#39;s thought it was &amp;quot;1.&amp;quot;
&lt;/p&gt;
&lt;p&gt;
That is when I went really crazy and changed my fix to this:
&lt;/p&gt;
&lt;div style="width: 515px"&gt;
&lt;code&gt;
body *&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { zoom:1; }
ul, ol, li { zoom:0; }
&lt;/code&gt;
&lt;/div&gt;
&lt;p&gt;
Viola!  I out-grew peek-a-boo and retained my list functionality.  I have not spent more than an hour trying to decide whether something hasLayout or not since...
&lt;/p&gt;
&lt;p&gt;
I doubt that w3 would endorse this solution.&amp;nbsp; You may want to do your own studying before adopting any hacks or tricks into your design work flow. &amp;nbsp; 
&lt;/p&gt;
</summary>
    <published>2009-04-07T04:00:00+00:00</published>
    <link rel="related" href="http://blog.focus44.com/post/hasLayout.aspx#comment" />
    <dc:publisher>gabe@focus44.com</dc:publisher>
    <dc:description>Here we share our preemptive solution to the IE6 "Peek-a-boo" bug / hasLayout issue.</dc:description>
    <pingback:server>http://blog.focus44.com/pingback.axd</pingback:server>
    <pingback:target>http://blog.focus44.com/post.aspx?id=fa28fa30-ce70-46c0-93ad-022c41cf6dec</pingback:target>
    <slash:comments>11628</slash:comments>
    <trackback:ping>http://blog.focus44.com/trackback.axd?id=fa28fa30-ce70-46c0-93ad-022c41cf6dec</trackback:ping>
    <wfw:comment>http://blog.focus44.com/post/hasLayout.aspx#comment</wfw:comment>
    <wfw:commentRss>http://blog.focus44.com/syndication.axd?post=fa28fa30-ce70-46c0-93ad-022c41cf6dec</wfw:commentRss>
  </entry>
  <entry>
    <id>http://blog.focus44.com/post/IE6_hover_fix.aspx</id>
    <title>Enabling :hover Pseudo Class in IE6</title>
    <updated>2009-03-27T21:26:00+00:00</updated>
    <link rel="self" href="http://blog.focus44.com/post.aspx?id=54fc0b21-8e00-4c9f-9f8a-c37c24bd5410" />
    <link href="http://blog.focus44.com/post/IE6_hover_fix.aspx" />
    <author>
      <name>gabe@focus44.com</name>
    </author>
    <summary type="html">&lt;p&gt;
Let&amp;#39;s be honest...&amp;nbsp; IE6 is nobody&amp;#39;s favorite browser, least of all a web designer.&amp;nbsp; Most of us have learned to live with it, however, as it still taints a large section of the browsing community.&amp;nbsp; 
&lt;/p&gt;
&lt;p&gt;
The issues are numerous. The peek-a-boo bug and poor CSS 2.0 support being at the forefront.&amp;nbsp; With the help of my business partner, we have stumbled across a solution to one of the most frustrating IE6 features (or lask there of): the lack of :hover pseudo class support.&amp;nbsp; The :hover class is an extremely useful gem in any web designer&amp;#39;s treasure chest, allowing them to communicate with the user as they mouse around.&amp;nbsp; Now we can extend that conversation to include the viewers using the seemingly immortal Internet Explorer 6.
&lt;/p&gt;
&lt;p&gt;
&lt;strong style="font-family: 'Trebuchet MS',Verdana,Arial"&gt;The solution:&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
We must start with Peter Nederlof&amp;#39;s &lt;strong&gt;&lt;a href="http://www.xs4all.nl/~peterned/csshover.html" target="_blank"&gt;Whatever:hover&lt;/a&gt;&lt;/strong&gt;. It is a patch for IE6 written in a text file called an .htc file (&lt;a href="http://msdn.microsoft.com/en-us/library/ms531018(VS.85).aspx" target="_blank"&gt;HTML Component&lt;/a&gt;).&amp;nbsp; Simply save the file in your site.&amp;nbsp; I prefer to keep it in a themes folder with my style sheet(s).&amp;nbsp; You link the file in your CSS on the body element using the behavior tag:
&lt;/p&gt;
&lt;div style="width: 515px"&gt;
&lt;code&gt;
body { behavior: url(&amp;quot;./Themes/csshover3.htc&amp;quot;); } 
&lt;/code&gt;
&lt;/div&gt;
&lt;p&gt;
Simple enough, right?
&lt;/p&gt;
&lt;p&gt;
For most static designs, this works just fine.  However, due to the relative nature of the link, any sites using URL re-writing of any kind, MVC for example, will find that it is very difficult to make sure all of your pages can locate the file.
&lt;/p&gt;
&lt;p&gt;
We primarily create sites in .NET/C# and use a ASP.Net Master Page.  We link the .htc file in the &amp;lt;head&amp;gt; tag of the Master Page like this:
&lt;/p&gt;
&lt;div style="overflow: auto; width: 515px"&gt;
&lt;div style="width: 620px"&gt;
&lt;code&gt;
&amp;lt;!--[if lte IE 6] &amp;gt;&lt;br /&gt;
&amp;nbsp; &amp;lt;style&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; body { behavior:url(&amp;#39;&amp;lt;%=ResolveUrl(&amp;quot;~/themes/csshover.htc&amp;quot;) %&amp;gt;&amp;#39;); }&lt;br /&gt;
&amp;nbsp; &amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;![endif]--&amp;gt;
&lt;/code&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
Notice that we are only linking the .htc file for IE6 or less, as it is not needed for other browsers.  This is a great place to link IE6-specific style sheets to take care of any other design nuisances&amp;nbsp; as well.
&lt;/p&gt;
&lt;p&gt;
The &lt;em&gt;ResolveUrl&lt;/em&gt; in the url will tell the server to start it&amp;#39;s search in the root directory of the site and follow the path from there.  That way it doesn&amp;#39;t matter where the page thinks it is, it will always be able to locate the .htc file.
&lt;/p&gt;
&lt;p&gt;
A special thank you to Peter Nederlof for this great solution to a very frustrating bug!
&lt;/p&gt;
</summary>
    <published>2009-03-27T21:26:00+00:00</published>
    <link rel="related" href="http://blog.focus44.com/post/IE6_hover_fix.aspx#comment" />
    <dc:publisher>gabe@focus44.com</dc:publisher>
    <dc:description>Web designers rejoice!  Here's a quick post describing the use of an .htc file to enable the :hover pseudo class in IE6.</dc:description>
    <pingback:server>http://blog.focus44.com/pingback.axd</pingback:server>
    <pingback:target>http://blog.focus44.com/post.aspx?id=54fc0b21-8e00-4c9f-9f8a-c37c24bd5410</pingback:target>
    <slash:comments>7636</slash:comments>
    <trackback:ping>http://blog.focus44.com/trackback.axd?id=54fc0b21-8e00-4c9f-9f8a-c37c24bd5410</trackback:ping>
    <wfw:comment>http://blog.focus44.com/post/IE6_hover_fix.aspx#comment</wfw:comment>
    <wfw:commentRss>http://blog.focus44.com/syndication.axd?post=54fc0b21-8e00-4c9f-9f8a-c37c24bd5410</wfw:commentRss>
  </entry>
  <entry>
    <id>http://blog.focus44.com/post/CSS-intellisense-with-Visual-Studio-2008-using-virtual-links.aspx</id>
    <title>CSS intellisense with Visual Studio 2008 using virtual links.</title>
    <updated>2009-03-27T19:33:00+00:00</updated>
    <link rel="self" href="http://blog.focus44.com/post.aspx?id=783f2397-2a2c-4aa1-9867-a4958a684e85" />
    <link href="http://blog.focus44.com/post/CSS-intellisense-with-Visual-Studio-2008-using-virtual-links.aspx" />
    <author>
      <name>chris@focus44.com</name>
    </author>
    <summary type="html">&lt;p&gt;
We all love intellisense.&amp;nbsp; Visual Studio is great.&amp;nbsp; With the 2008 release it allows us to have javascript and css intellisense.&amp;nbsp; CSS Intellisense will work if you provide an aboslute link or a relative link.&amp;nbsp; 
&lt;/p&gt;
&lt;p&gt;
With our design style over here it seams more often then not that we use the same Masterpage within different levels of folders.&amp;nbsp; Relative links were never an option...&amp;nbsp; Absolute links might bite you in the butt later.&amp;nbsp; We almost always require virtual paths for files.&amp;nbsp; 
&lt;/p&gt;
&lt;p&gt;
The idea is pretty simple.
&lt;/p&gt;
&lt;p style="overflow: auto; width: 515px"&gt;
&lt;img src="http://blog.focus44.com/image.axd?picture=2009%2f4%2fcssintellisense.gif" alt="" /&gt;
&lt;/p&gt;
&lt;p&gt;
There you have it folks!&amp;nbsp; Thats all for now. 
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;ol&gt;
&lt;/ol&gt;
</summary>
    <published>2009-03-27T19:33:00+00:00</published>
    <link rel="related" href="http://blog.focus44.com/post/CSS-intellisense-with-Visual-Studio-2008-using-virtual-links.aspx#comment" />
    <dc:publisher>chris@focus44.com</dc:publisher>
    <dc:description>Tricking Visual Studio into giving your intellisense back!</dc:description>
    <pingback:server>http://blog.focus44.com/pingback.axd</pingback:server>
    <pingback:target>http://blog.focus44.com/post.aspx?id=783f2397-2a2c-4aa1-9867-a4958a684e85</pingback:target>
    <slash:comments>7346</slash:comments>
    <trackback:ping>http://blog.focus44.com/trackback.axd?id=783f2397-2a2c-4aa1-9867-a4958a684e85</trackback:ping>
    <wfw:comment>http://blog.focus44.com/post/CSS-intellisense-with-Visual-Studio-2008-using-virtual-links.aspx#comment</wfw:comment>
    <wfw:commentRss>http://blog.focus44.com/syndication.axd?post=783f2397-2a2c-4aa1-9867-a4958a684e85</wfw:commentRss>
  </entry>
</feed>

