<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" 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/" version="2.0">
  <channel>
    <title>deepdark.net - James Green's Blog - CSS</title>
    <link>http://deepdark.net/</link>
    <description>.NET, SQL Server and *.*</description>
    <image>
      <url>http://deepdark.net/files/deepdark.jpg</url>
      <title>deepdark.net - James Green's Blog - CSS</title>
      <link>http://deepdark.net/</link>
    </image>
    <language>en-us</language>
    <copyright>James Green</copyright>
    <lastBuildDate>Wed, 27 Jun 2007 13:32:32 GMT</lastBuildDate>
    <generator>newtelligence dasBlog 2.3.9074.18820</generator>
    <managingEditor>James.Green@deepdark.net</managingEditor>
    <webMaster>James.Green@deepdark.net</webMaster>
    <item>
      <trackback:ping>http://deepdark.net/Trackback.aspx?guid=9058c631-130d-4ffc-861a-663989e41b0e</trackback:ping>
      <pingback:server>http://deepdark.net/pingback.aspx</pingback:server>
      <pingback:target>http://deepdark.net/PermaLink,guid,9058c631-130d-4ffc-861a-663989e41b0e.aspx</pingback:target>
      <dc:creator />
      <wfw:comment>http://deepdark.net/CommentView,guid,9058c631-130d-4ffc-861a-663989e41b0e.aspx</wfw:comment>
      <wfw:commentRss>http://deepdark.net/SyndicationService.asmx/GetEntryCommentsRss?guid=9058c631-130d-4ffc-861a-663989e41b0e</wfw:commentRss>
      <slash:comments>1</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <font size="2">
          <p>
Today's post is about a nifty little trick that I have seen done with search text
boxes on sites over the years and I decided that it had to be in my toolbox too. 
</p>
          <p>
What we are going for is a search box that looks like this when the page loads:
</p>
        </font>
        <p>
        </p>
        <p>
          <img src="http://deepdark.net/content/binary/inactive_search.png" border="0" />
        </p>
        <p>
...and looks like this when the user clicks into it:
</p>
        <p>
          <img src="http://deepdark.net/content/binary/active_search.png" border="0" />
        </p>
        <p>
This technique seems to mostly be applied to search boxes, and I can see the benefit
in that.
</p>
        <p>
          <u>The post that follows is the amalgum of many VS-A's</u>
        </p>
        <p>
To get this done, it is a bit of CSS to style up the inactive and active state for
the text box, and a tiny bit of Javascript to tie it together.  I'm using the
term active and inactive not in any technical sense, just to describe the two styles
that are applied to our text box in response to the user activity.
</p>
        <p>
(assuming the rest of the page is a drab <font face="Courier New" color="#000000">#f0f0f0</font> in
colour...)  These are the two style rules that we are using in the images above:
</p>
        <p>
          <span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">
            <font color="#a52a2a">.</font>
            <font color="#a52a2a">inactiveSearchBox</font>
            <br />
{<br />
    <font color="#ff0000">background-color</font>: <font color="#000080">#f0f0f0</font>;<br />
    <font color="#ff0000">border</font>: <font color="#000080">solid
1px #ffffff</font>;<br />
}<br /><br /><font color="#a52a2a">.activeSearchBox</font><br />
{<br />
    <font color="#ff0000">border</font>: <font color="#000080">groove
1px #d9d9d9</font>;<br />
    <font color="#ff0000">background-color</font>: <font color="#000080">#ffffff</font>;<br />
}</span>
        </p>
        <p>
          <strong>
            <font size="1">
            </font>
          </strong>The markup for the input box is then as follows:
</p>
        <span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">
          <font color="#0000ff" size="2">
            <p>
              <font face="Courier New">&lt;</font>
            </p>
          </font>
          <font face="Courier New">
            <font color="#a31515" size="2">input</font>
            <font color="#000000" size="2">
            </font>
            <font color="#ff0000" size="2">type</font>
            <font color="#0000ff" size="2">="text"</font>
            <font color="#000000" size="2">
            </font>
            <font color="#ff0000" size="2">class</font>
            <font color="#0000ff" size="2">="inactiveSearchBox"</font>
            <font color="#000000" size="2">
            </font>
            <font color="#ff0000" size="2">id</font>
            <font color="#0000ff" size="2">="SearchStrng"</font>
            <font color="#000000" size="2"> </font>
          </font>
          <font face="Courier New">
            <br />
            <font color="#ff0000" size="2">   value</font>
            <font color="#0000ff" size="2">="
Search Here"</font>
          </font>
          <font size="2">
            <br />
          </font>
          <font face="Courier New">
            <font color="#ff0000" size="2">   onFocus</font>
            <font color="#0000ff" size="2">="this.className='activeSearchBox';
if(this.value==' Search Here')this.value='';"</font>
          </font>
          <font face="Courier New">
            <font size="2"> <br /></font>
            <font color="#ff0000" size="2">   onBlur</font>
            <font color="#0000ff" size="2">="if(this.value=='')this.value='
Search Here';this.className='inactiveSearchBox';"</font>
            <font size="2">
            </font>
          </font>
          <font color="#0000ff" size="2">
            <font face="Courier New">/&gt; </font>
          </font>
        </span>
        <p>
As you can see it all happens in the <font face="Courier New" color="#000000">onFocus</font> and <font face="Courier New" color="#000000">onBlur</font> events
of the textbox.  When the text box gets the focus it sets the class to be our <font face="Courier New" color="#000000">activeSearchBox </font>style and
clears our standard text.  The <font face="Courier New" color="#000000">onBlur</font> event
restores the default value if the user did not enter anything and sets our style back
to the <font face="Courier New"><font color="#000000">inactiveSearchBox</font></font>style.
</p>
        <p>
          <strong>
            <font size="1">Glossary:</font>
          </strong>
        </p>
        <p>
          <font size="1">VS-A, <em>n</em>. View Source, followd by an "Ah!".  
<br />
See also: VS-****.</font>
        </p>
        <p>
          <strong>
            <font color="#808080" size="1">Listening to:  Former co-workers :-)</font>
          </strong>
        </p>
      </body>
      <title>Adding a pinch of spice to a search box with CSS</title>
      <guid isPermaLink="false">http://deepdark.net/PermaLink,guid,9058c631-130d-4ffc-861a-663989e41b0e.aspx</guid>
      <link>http://deepdark.net/PermaLink,guid,9058c631-130d-4ffc-861a-663989e41b0e.aspx</link>
      <pubDate>Wed, 27 Jun 2007 13:32:32 GMT</pubDate>
      <description>&lt;font size=2&gt; 
&lt;p&gt;
Today's post is about a nifty little trick that I have seen done with search text
boxes on sites over the years and I decided that it had to be in my toolbox too. 
&lt;/p&gt;
&lt;p&gt;
What we are going for is a search box that looks like this when the page loads:
&lt;/font&gt;&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;img src="http://deepdark.net/content/binary/inactive_search.png" border=0&gt;
&lt;/p&gt;
&lt;p&gt;
...and looks like this when the user clicks into it:
&lt;/p&gt;
&lt;p&gt;
&lt;img src="http://deepdark.net/content/binary/active_search.png" border=0&gt;
&lt;/p&gt;
&lt;p&gt;
This technique seems to mostly be applied to search boxes, and I can see the benefit
in that.
&lt;/p&gt;
&lt;p&gt;
&lt;u&gt;The post that follows is the amalgum of many VS-A's&lt;/u&gt;
&lt;/p&gt;
&lt;p&gt;
To get this done, it is a bit of CSS to style up the inactive and active state for
the text box, and a tiny bit of Javascript to tie it together.&amp;nbsp; I'm using the
term active and inactive not in any technical sense, just to describe the two styles
that are applied to our text box in response to the user activity.
&lt;/p&gt;
&lt;p&gt;
(assuming the rest of the page is a drab &lt;font face="Courier New" color=#000000&gt;#f0f0f0&lt;/font&gt; in
colour...)&amp;nbsp; These are the two style rules that we are using in the images above:
&lt;/p&gt;
&lt;p&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&lt;font color=#a52a2a&gt;.&lt;/font&gt;&lt;font color=#a52a2a&gt;inactiveSearchBox&lt;/font&gt;
&lt;br&gt;
{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color=#ff0000&gt;background-color&lt;/font&gt;: &lt;font color=#000080&gt;#f0f0f0&lt;/font&gt;;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color=#ff0000&gt;border&lt;/font&gt;: &lt;font color=#000080&gt;solid
1px #ffffff&lt;/font&gt;;&lt;br&gt;
}&lt;br&gt;
&lt;br&gt;
&lt;font color=#a52a2a&gt;.activeSearchBox&lt;/font&gt;
&lt;br&gt;
{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color=#ff0000&gt;border&lt;/font&gt;: &lt;font color=#000080&gt;groove
1px #d9d9d9&lt;/font&gt;;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color=#ff0000&gt;background-color&lt;/font&gt;: &lt;font color=#000080&gt;#ffffff&lt;/font&gt;;&lt;br&gt;
}&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;&lt;font size=1&gt;&lt;/font&gt;&lt;/strong&gt;The markup for the input box is then as follows:
&lt;/p&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&lt;font color=#0000ff size=2&gt; 
&lt;p&gt;
&lt;font face="Courier New"&gt;&amp;lt;&lt;/font&gt;
&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color=#a31515 size=2&gt;input&lt;/font&gt;&lt;font color=#000000 size=2&gt; &lt;/font&gt;&lt;font color=#ff0000 size=2&gt;type&lt;/font&gt;&lt;font color=#0000ff size=2&gt;="text"&lt;/font&gt;&lt;font color=#000000 size=2&gt; &lt;/font&gt;&lt;font color=#ff0000 size=2&gt;class&lt;/font&gt;&lt;font color=#0000ff size=2&gt;="inactiveSearchBox"&lt;/font&gt;&lt;font color=#000000 size=2&gt; &lt;/font&gt;&lt;font color=#ff0000 size=2&gt;id&lt;/font&gt;&lt;font color=#0000ff size=2&gt;="SearchStrng"&lt;/font&gt;&lt;font color=#000000 size=2&gt;&amp;nbsp;&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;
&lt;br&gt;
&lt;font color=#ff0000 size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;value&lt;/font&gt;&lt;font color=#0000ff size=2&gt;="
Search Here"&lt;/font&gt;&lt;/font&gt;&lt;font size=2&gt;
&lt;br&gt;
&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color=#ff0000 size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;onFocus&lt;/font&gt;&lt;font color=#0000ff size=2&gt;="this.className='activeSearchBox';
if(this.value==' Search Here')this.value='';"&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font size=2&gt;&amp;nbsp;&lt;br&gt;
&lt;/font&gt;&lt;font color=#ff0000 size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;onBlur&lt;/font&gt;&lt;font color=#0000ff size=2&gt;="if(this.value=='')this.value='
Search Here';this.className='inactiveSearchBox';"&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;&lt;font face="Courier New"&gt;/&amp;gt; &lt;/font&gt;
&lt;/span&gt;&gt;
&lt;p&gt;
&gt;As you can see it all happens in the &lt;font face="Courier New" color=#000000&gt;onFocus&lt;/font&gt; and &lt;font face="Courier New" color=#000000&gt;onBlur&lt;/font&gt; events
of the textbox.&amp;nbsp; When the text box gets the focus it sets the class to be our &lt;font face="Courier New" color=#000000&gt;activeSearchBox &lt;/font&gt;style&amp;nbsp;and
clears our standard text.&amp;nbsp; The &lt;font face="Courier New" color=#000000&gt;onBlur&lt;/font&gt; event
restores the default value if the user did not enter anything and sets our style back
to the &lt;font face="Courier New"&gt;&lt;font color=#000000&gt;inactiveSearchBox&lt;/font&gt; &lt;/font&gt;style.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;&lt;font size=1&gt;Glossary:&lt;/font&gt;&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font size=1&gt;VS-A, &lt;em&gt;n&lt;/em&gt;. View Source, followd by an "Ah!".&amp;nbsp; 
&lt;br&gt;
See also: VS-****.&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;&lt;font color=#808080 size=1&gt;Listening to:&amp;nbsp; Former co-workers :-)&lt;/font&gt;&lt;/strong&gt;
&lt;/p&gt;</description>
      <comments>http://deepdark.net/CommentView,guid,9058c631-130d-4ffc-861a-663989e41b0e.aspx</comments>
      <category>ASP.Net</category>
      <category>CSS</category>
      <category>Geeking Out!</category>
      <category>UX</category>
    </item>
    <item>
      <trackback:ping>http://deepdark.net/Trackback.aspx?guid=0eaa175f-2819-4d06-9820-38fe39e82fb5</trackback:ping>
      <pingback:server>http://deepdark.net/pingback.aspx</pingback:server>
      <pingback:target>http://deepdark.net/PermaLink,guid,0eaa175f-2819-4d06-9820-38fe39e82fb5.aspx</pingback:target>
      <dc:creator />
      <wfw:comment>http://deepdark.net/CommentView,guid,0eaa175f-2819-4d06-9820-38fe39e82fb5.aspx</wfw:comment>
      <wfw:commentRss>http://deepdark.net/SyndicationService.asmx/GetEntryCommentsRss?guid=0eaa175f-2819-4d06-9820-38fe39e82fb5</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
So I came across a problem using a old CSS trick to make a tab strip/menu bar on a
site from a Unordered List inside a Div 
</p>
        <p>
To create the tabs the trick is you can use some CSS like this: <font color="#a31515" size="2"></font></p>
        <font color="#a31515" size="2">
        </font>
        <p>
          <font face="Courier New" color="#a31515" size="2">#nav</font>
          <font face="Courier New">
            <font size="2">
              <br />
{ <br /></font>
            <font color="#ff0000" size="2">   float</font>
            <font size="2">:</font>
            <font color="#0000ff" size="2">left</font>
          </font>
          <font face="Courier New">
            <font size="2"> ; <br /></font>
            <font color="#ff0000" size="2">   margin</font>
            <font size="2">: </font>
            <font color="#0000ff" size="2">0</font>
          </font>
          <font face="Courier New">
            <font size="2">; <br /></font>
            <font color="#ff0000" size="2">   padding</font>
            <font size="2">: </font>
            <font color="#0000ff" size="2">10px</font>
            <font size="2">
            </font>
            <font color="#0000ff" size="2">0</font>
            <font size="2">
            </font>
            <font color="#0000ff" size="2">0</font>
            <font size="2">
            </font>
            <font color="#0000ff" size="2">46px</font>
          </font>
          <font face="Courier New">
            <font size="2">; <br /></font>
            <font color="#ff0000" size="2">   list-style</font>
            <font size="2">: </font>
            <font color="#0000ff" size="2">none</font>
          </font>
          <font face="Courier New" size="2">; 
<br />
}</font>
          <font face="Courier New">
            <font color="#a31515" size="2">
              <br />
#nav</font>
            <font color="#000000" size="2">
            </font>
            <font color="#a31515" size="2">li</font>
          </font>
          <font face="Courier New">
            <font size="2">
              <font color="#000000">
              </font>
              <br />
{ <br /></font>
            <font color="#ff0000" size="2">   font-size</font>
            <font size="2">: </font>
            <font color="#0000ff" size="2">150%</font>
          </font>
          <font face="Courier New">
            <font size="2">; <br /></font>
            <font color="#ff0000" size="2">   float</font>
            <font size="2">: </font>
            <font color="#0000ff" size="2">left</font>
          </font>
          <font face="Courier New">
            <font size="2">; <br /></font>
            <font color="#ff0000" size="2">   margin</font>
            <font size="2">:</font>
            <font color="#0000ff" size="2">0</font>
          </font>
          <font face="Courier New">
            <font size="2">; <br /></font>
            <font color="#ff0000" size="2">   padding</font>
            <font size="2">: </font>
            <font color="#0000ff" size="2">0</font>
          </font>
          <font face="Courier New" size="2">; 
<br />
}</font>
          <font face="Courier New">
            <font color="#a31515" size="2">
              <br />
#nav</font>
            <font color="#000000" size="2">
            </font>
            <font color="#a31515" size="2">a</font>
          </font>
          <font face="Courier New">
            <font size="2">
              <br />
{ <br /></font>
            <font color="#ff0000" size="2">   float</font>
            <font size="2">: </font>
            <font color="#0000ff" size="2">left</font>
          </font>
          <font face="Courier New">
            <font size="2">; <br /></font>
            <font color="#ff0000" size="2">   display</font>
            <font size="2">: </font>
            <font color="#0000ff" size="2">block</font>
          </font>
          <font face="Courier New">
            <font size="2">; <br /></font>
            <font color="#ff0000" size="2">   margin</font>
            <font size="2">: </font>
            <font color="#0000ff" size="2">0</font>
            <font size="2">
            </font>
            <font color="#0000ff" size="2">1px</font>
            <font size="2">
            </font>
            <font color="#0000ff" size="2">0</font>
            <font size="2">
            </font>
            <font color="#0000ff" size="2">0</font>
          </font>
          <font face="Courier New">
            <font size="2"> ; <br /></font>
            <font color="#ff0000" size="2">   padding</font>
            <font size="2">: </font>
            <font color="#0000ff" size="2">4px</font>
            <font size="2">
            </font>
            <font color="#0000ff" size="2">8px</font>
          </font>
          <font face="Courier New">
            <font size="2">; <br /></font>
            <font color="#ff0000" size="2">   color</font>
            <font size="2">: </font>
            <font color="#0000ff" size="2">#333</font>
          </font>
          <font face="Courier New">
            <font size="2">; <br /></font>
            <font color="#ff0000" size="2">   text-decoration</font>
            <font size="2">: </font>
            <font color="#0000ff" size="2">none</font>
          </font>
          <font face="Courier New">
            <font size="2">; <br /></font>
            <font color="#ff0000" size="2">   border</font>
            <font size="2">: </font>
            <font color="#0000ff" size="2">1px</font>
            <font size="2">
            </font>
            <font color="#0000ff" size="2">solid</font>
            <font size="2">
            </font>
            <font color="#0000ff" size="2">#949494</font>
          </font>
          <font face="Courier New">
            <font size="2">; <br /></font>
            <font color="#ff0000" size="2">   border-bottom</font>
            <font size="2">: </font>
            <font color="#0000ff" size="2">none</font>
          </font>
          <font face="Courier New">
            <font size="2">; <br /></font>
            <font color="#ff0000" size="2">   background</font>
            <font size="2">: </font>
            <font color="#0000ff" size="2">#686868</font>
          </font>
          <font face="Courier New">
            <font size="2">; <br /></font>
            <font color="#ff0000" size="2">   color</font>
            <font size="2">: </font>
            <font color="#0000ff" size="2">#949494</font>
          </font>
          <font face="Courier New" size="2">; 
<br />
}</font>
        </p>
        <p>
...to turn a &lt;UL&gt; with the ID="nav" into some tabs.  For example we add
the following to the master page: 
</p>
        <font face="Courier New">
          <font color="#0000ff">&lt;</font>
          <font color="#a52a2a">ul</font>
          <font color="#000080">
          </font>
          <font color="#ff0000">id</font>
          <font color="#0000ff">="nav" </font>
          <font color="#0000ff">&gt;</font>
        </font> <br /><font face="Courier New">   <font color="#a52a2a"><font color="#0000ff">&lt;</font>li <font color="#ff0000">id</font><font color="#0000ff">="navHome"</font><font color="#0000ff">&gt;&lt;</font>a</font><font color="#ff0000">href</font><font color="#0000ff">="default.aspx"</font>&gt;Home<font color="#a52a2a"><font color="#0000ff">&lt;/</font>a<font color="#0000ff">&gt;</font><font color="#0000ff">&lt;/</font>li</font><font color="#0000ff">&gt;</font></font><font color="#a52a2a"><font color="#0000ff"> </font><br /></font><font face="Courier New"><font color="#0000ff">   &lt;</font><font color="#a52a2a">li <font color="#ff0000">id</font><font color="#0000ff">="</font><font color="#0000ff">navProducts"</font><font color="#0000ff">&gt;&lt;</font>a</font><font color="#ff0000">href</font><font color="#0000ff">="products.aspx"</font>&gt;Products<font color="#a52a2a"><font color="#0000ff">&lt;/</font>a<font color="#0000ff">&gt;&lt;</font><font color="#0000ff">/</font>li</font><font color="#0000ff">&gt;</font></font> <br /><font face="Courier New">   <font color="#008000">&lt;!-- ...and so
on... --&gt;</font></font><font color="#008000"><br /></font><font face="Courier New" color="#a52a2a"><font color="#0000ff">&lt;/</font>ul<font color="#0000ff">&gt;</font></font><p></p><p>
OK so far.  The thing with tabs is you always want the tab of the current page
to glow a little or something to indicate what page the user is up to.
</p><p>
A common way is to assign an ID attribute to the body tag of each page and include
some CSS that looks at the body ID and overrides the <font face="Courier New"><font color="#a31515">#nav</font><font color="#000000" size="2"></font><font color="#a31515" size="2">a</font><font size="2"> </font></font> for
the current page.
</p><p>
The trick comes when the pages all descend from an ASP.NET 2.0 Master Page - the body
tags are going to be identical on each page.
</p><p>
As luck would have it, <a href="http://www.w3.org/TR/REC-CSS2/selector.html#attribute-selectors">CSS
lets us select based on any attribute</a>.  Once the page is rendered each page
will get its own form tag where the Action attribute represents the current loaded
page as so:  
</p><p><font face="Courier New">&lt;<font color="#000080">form</font><font color="#a52a2a">name</font>=<font color="#ff0000">"aspnetForm"</font><font color="#a52a2a">method</font>=<font color="#ff0000">"post"</font><font color="#a52a2a">action</font>=<font color="#ff0000">"Default.aspx"</font><font color="#a52a2a">id</font>=<font color="#ff0000">"aspnetForm"</font>&gt;</font></p><p>
Which would let us add the following to our stylesheet:
</p><font color="#a31515" size="2"><p><font face="Courier New">#nav</font></p></font><font face="Courier New"><font color="#000000" size="2"></font><font color="#a31515" size="2">a:hover</font><font color="#000000" size="2">, </font><font color="#a31515" size="2">body</font><font color="#000000" size="2"></font><font color="#a31515" size="2">form[action="Default.aspx"]</font><font color="#000000" size="2"></font><font color="#a31515" size="2">#NavPlaceHolder</font><font color="#000000" size="2"></font><font color="#a31515" size="2">#nav</font><font color="#000000" size="2"></font><font color="#a31515" size="2">#navHome</font><font color="#000000" size="2"></font><font color="#a31515" size="2">a</font></font><font face="Courier New"><font size="2"><font color="#000000"></font><br />
{ 
<br /></font><font color="#ff0000" size="2">   background</font><font size="2">: </font><font color="#0000ff" size="2">#ffffff</font></font><font face="Courier New" size="2">; 
<br />
}</font><p>
OK So far but the problem is it is case sensitve!  We would need -
If the page loads as default.aspx our tab won't highlight.  <strong>This just
won't do!</strong></p><p>
The trick is to add a new ContentPlaceHolder in our master page straight above the
UL listed above
</p><font size="2"><p></p></font><font face="Courier New"><font color="#0000ff" size="2">&lt;</font><font color="#a31515" size="2">asp</font><font color="#0000ff" size="2">:</font><font color="#a31515" size="2">ContentPlaceHolder</font><font size="2"></font><font color="#ff0000" size="2">runat</font><font color="#0000ff" size="2">="server"</font><font size="2"></font><font color="#ff0000" size="2">id</font><font color="#0000ff" size="2">="pageIdPlaceHolder"</font><font size="2"></font><font color="#0000ff" size="2">&gt;</font><font color="#0000ff" size="2">&lt;/</font><font color="#a31515" size="2">asp</font><font color="#0000ff" size="2">:</font><font color="#a31515" size="2">ContentPlaceHolder</font><font color="#0000ff" size="2">&gt;</font></font><p>
Each page that descends from our master page should then override that ContentPlaceHolder
to add an empty Span with a page-specific ID as so: 
</p><font color="#0000ff" size="2"><p><font face="Courier New">&lt;</font></p></font><font face="Courier New"><font color="#a31515" size="2">asp</font><font color="#0000ff" size="2">:</font><font color="#a31515" size="2">Content</font><font color="#000000" size="2"></font><font color="#ff0000" size="2">ID</font><font color="#0000ff" size="2">="pageIdContent"</font><font color="#000000" size="2"></font><font color="#ff0000" size="2">ContentPlaceHolderID</font><font color="#0000ff" size="2">="pageIdPlaceHolder"</font><font color="#000000" size="2"></font><font color="#ff0000" size="2">runat</font><font color="#0000ff" size="2">="server"</font><font color="#000000" size="2"></font></font><font color="#0000ff" size="2"><font face="Courier New">&gt;</font><br /><font face="Courier New">   &lt;</font></font><font face="Courier New"><font color="#a31515" size="2">span</font><font color="#000000" size="2"></font><font color="#ff0000" size="2">id</font><font color="#0000ff" size="2">="ProductsPage"&gt;&lt;/</font><font color="#a31515" size="2">span</font></font><font color="#0000ff" size="2"><font face="Courier New">&gt; <font color="#008000">&lt;!--
This page will show the Products tab as selected --&gt;</font></font><br /><font face="Courier New">&lt;/</font></font><font face="Courier New"><font color="#a31515" size="2">asp</font><font color="#0000ff" size="2">:</font><font color="#a31515" size="2">Content</font><font color="#0000ff" size="2">&gt;</font></font><p></p><p>
and then we can add a rule to our CSS for each page that would read:  <em>Whenever
there is an element with the ID="ProductsPage" right next to one with the ID="nav"
do the following.</em>  The + operator selects the next adjacent node in the
document as so:
</p><font color="#0000ff" size="2"><font color="#a31515" size="2"><p><font face="Courier New">#<font color="#0000ff"><font color="#a52a2a">ProductsPage</font></font></font></p></font><font face="Courier New"><font color="#a31515" size="2">+</font><font color="#000000" size="2"></font><font color="#a31515" size="2">#nav</font><font color="#000000" size="2"></font><font color="#a31515" size="2">#navProducts</font><font color="#000000" size="2"></font><font color="#a31515" size="2">a</font></font><font size="2"><br /><font face="Courier New">{</font><br /></font><font face="Courier New"><font color="#ff0000" size="2">   background</font><font size="2">: </font><font color="#0000ff" size="2">#ffffff</font></font><font size="2"><font face="Courier New">;</font><br /><font face="Courier New">}</font></font><p><font size="2"><font color="#000000">And there you have it!  Accessable and maintainable
nav bars from a UL using CSS, plus keeping all the time saving layout features of
Master Pages. </font></font></p><p><font size="2"><font color="#808080">Listening To:  <em>The History Of Breaks</em></font></font></p></font></body>
      <title>Pure CSS Tabs with ASP.NET 2.0 Master Pages</title>
      <guid isPermaLink="false">http://deepdark.net/PermaLink,guid,0eaa175f-2819-4d06-9820-38fe39e82fb5.aspx</guid>
      <link>http://deepdark.net/PermaLink,guid,0eaa175f-2819-4d06-9820-38fe39e82fb5.aspx</link>
      <pubDate>Sat, 10 Mar 2007 13:26:14 GMT</pubDate>
      <description>&lt;p&gt;
So I came across a problem using a old CSS trick to make a tab strip/menu bar on a
site from a Unordered List inside a Div 
&lt;/p&gt;
&lt;p&gt;
To create the tabs the trick is you can use some CSS like this: &lt;font color=#a31515 size=2&gt;
&lt;/p&gt;
&gt;&lt;font color=#a31515 size=2&gt;&lt;/font&gt; 
&lt;p&gt;
&lt;font face="Courier New" color=#a31515 size=2&gt;#nav&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font size=2&gt; 
&lt;br&gt;
{&amp;nbsp;&lt;br&gt;
&lt;/font&gt;&lt;font color=#ff0000 size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;float&lt;/font&gt;&lt;font size=2&gt;:&lt;/font&gt;&lt;font color=#0000ff size=2&gt;left&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font size=2&gt; ;&amp;nbsp;&lt;br&gt;
&lt;/font&gt;&lt;font color=#ff0000 size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;margin&lt;/font&gt;&lt;font size=2&gt;: &lt;/font&gt;&lt;font color=#0000ff size=2&gt;0&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font size=2&gt;;&amp;nbsp;&lt;br&gt;
&lt;/font&gt;&lt;font color=#ff0000 size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;padding&lt;/font&gt;&lt;font size=2&gt;: &lt;/font&gt;&lt;font color=#0000ff size=2&gt;10px&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;0&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;0&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;46px&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font size=2&gt;;&amp;nbsp;&lt;br&gt;
&lt;/font&gt;&lt;font color=#ff0000 size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;list-style&lt;/font&gt;&lt;font size=2&gt;: &lt;/font&gt;&lt;font color=#0000ff size=2&gt;none&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New" size=2&gt;; 
&lt;br&gt;
}&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color=#a31515 size=2&gt; 
&lt;br&gt;
#nav&lt;/font&gt;&lt;font color=#000000 size=2&gt; &lt;/font&gt;&lt;font color=#a31515 size=2&gt;li&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font size=2&gt;&lt;font color=#000000&gt; &lt;/font&gt;
&lt;br&gt;
{&amp;nbsp;&lt;br&gt;
&lt;/font&gt;&lt;font color=#ff0000 size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;font-size&lt;/font&gt;&lt;font size=2&gt;: &lt;/font&gt;&lt;font color=#0000ff size=2&gt;150%&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font size=2&gt;;&amp;nbsp;&lt;br&gt;
&lt;/font&gt;&lt;font color=#ff0000 size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;float&lt;/font&gt;&lt;font size=2&gt;: &lt;/font&gt;&lt;font color=#0000ff size=2&gt;left&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font size=2&gt;;&amp;nbsp;&lt;br&gt;
&lt;/font&gt;&lt;font color=#ff0000 size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;margin&lt;/font&gt;&lt;font size=2&gt;:&lt;/font&gt;&lt;font color=#0000ff size=2&gt;0&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font size=2&gt;;&amp;nbsp;&lt;br&gt;
&lt;/font&gt;&lt;font color=#ff0000 size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;padding&lt;/font&gt;&lt;font size=2&gt;: &lt;/font&gt;&lt;font color=#0000ff size=2&gt;0&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New" size=2&gt;; 
&lt;br&gt;
}&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color=#a31515 size=2&gt; 
&lt;br&gt;
#nav&lt;/font&gt;&lt;font color=#000000 size=2&gt; &lt;/font&gt;&lt;font color=#a31515 size=2&gt;a&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font size=2&gt; 
&lt;br&gt;
{&amp;nbsp;&lt;br&gt;
&lt;/font&gt;&lt;font color=#ff0000 size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;float&lt;/font&gt;&lt;font size=2&gt;: &lt;/font&gt;&lt;font color=#0000ff size=2&gt;left&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font size=2&gt;;&amp;nbsp;&lt;br&gt;
&lt;/font&gt;&lt;font color=#ff0000 size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;display&lt;/font&gt;&lt;font size=2&gt;: &lt;/font&gt;&lt;font color=#0000ff size=2&gt;block&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font size=2&gt;;&amp;nbsp;&lt;br&gt;
&lt;/font&gt;&lt;font color=#ff0000 size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;margin&lt;/font&gt;&lt;font size=2&gt;: &lt;/font&gt;&lt;font color=#0000ff size=2&gt;0&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;1px&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;0&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;0&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font size=2&gt; ;&amp;nbsp;&lt;br&gt;
&lt;/font&gt;&lt;font color=#ff0000 size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;padding&lt;/font&gt;&lt;font size=2&gt;: &lt;/font&gt;&lt;font color=#0000ff size=2&gt;4px&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;8px&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font size=2&gt;;&amp;nbsp;&lt;br&gt;
&lt;/font&gt;&lt;font color=#ff0000 size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;color&lt;/font&gt;&lt;font size=2&gt;: &lt;/font&gt;&lt;font color=#0000ff size=2&gt;#333&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font size=2&gt;;&amp;nbsp;&lt;br&gt;
&lt;/font&gt;&lt;font color=#ff0000 size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;text-decoration&lt;/font&gt;&lt;font size=2&gt;: &lt;/font&gt;&lt;font color=#0000ff size=2&gt;none&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font size=2&gt;;&amp;nbsp;&lt;br&gt;
&lt;/font&gt;&lt;font color=#ff0000 size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;border&lt;/font&gt;&lt;font size=2&gt;: &lt;/font&gt;&lt;font color=#0000ff size=2&gt;1px&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;solid&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;#949494&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font size=2&gt;;&amp;nbsp;&lt;br&gt;
&lt;/font&gt;&lt;font color=#ff0000 size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;border-bottom&lt;/font&gt;&lt;font size=2&gt;: &lt;/font&gt;&lt;font color=#0000ff size=2&gt;none&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font size=2&gt;;&amp;nbsp;&lt;br&gt;
&lt;/font&gt;&lt;font color=#ff0000 size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;background&lt;/font&gt;&lt;font size=2&gt;: &lt;/font&gt;&lt;font color=#0000ff size=2&gt;#686868&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font size=2&gt;;&amp;nbsp;&lt;br&gt;
&lt;/font&gt;&lt;font color=#ff0000 size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;color&lt;/font&gt;&lt;font size=2&gt;: &lt;/font&gt;&lt;font color=#0000ff size=2&gt;#949494&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New" size=2&gt;; 
&lt;br&gt;
}&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
...to turn a &amp;lt;UL&amp;gt; with the ID="nav" into some tabs.&amp;nbsp; For example we add
the following to the master page: 
&lt;/p&gt;
&lt;font face="Courier New"&gt;&lt;font color=#0000ff&gt;&amp;lt;&lt;/font&gt;&lt;font color=#a52a2a&gt;ul&lt;/font&gt;&lt;font color=#000080&gt; &lt;/font&gt;&lt;font color=#ff0000&gt;id&lt;/font&gt;&lt;font color=#0000ff&gt;="nav" &lt;/font&gt;&lt;font color=#0000ff&gt;&amp;gt;&lt;/font&gt;&lt;/font&gt;&amp;nbsp;&lt;br&gt;
&lt;font face="Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color=#a52a2a&gt;&lt;font color=#0000ff&gt;&amp;lt;&lt;/font&gt;li &lt;font color=#ff0000&gt;id&lt;/font&gt;&lt;font color=#0000ff&gt;="navHome"&lt;/font&gt;&lt;font color=#0000ff&gt;&amp;gt;&amp;lt;&lt;/font&gt;a&lt;/font&gt; &lt;font color=#ff0000&gt;href&lt;/font&gt;&lt;font color=#0000ff&gt;="default.aspx"&lt;/font&gt;&amp;gt;Home&lt;font color=#a52a2a&gt;&lt;font color=#0000ff&gt;&amp;lt;/&lt;/font&gt;a&lt;font color=#0000ff&gt;&amp;gt;&lt;/font&gt;&lt;font color=#0000ff&gt;&amp;lt;/&lt;/font&gt;li&lt;/font&gt;&lt;font color=#0000ff&gt;&amp;gt;&lt;/font&gt;&lt;/font&gt;&lt;font color=#a52a2a&gt;&lt;font color=#0000ff&gt;&amp;nbsp;&lt;/font&gt;
&lt;br&gt;
&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color=#0000ff&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;/font&gt;&lt;font color=#a52a2a&gt;li &lt;font color=#ff0000&gt;id&lt;/font&gt;&lt;font color=#0000ff&gt;="&lt;/font&gt;&lt;font color=#0000ff&gt;navProducts"&lt;/font&gt;&lt;font color=#0000ff&gt;&amp;gt;&amp;lt;&lt;/font&gt;a&lt;/font&gt; &lt;font color=#ff0000&gt;href&lt;/font&gt;&lt;font color=#0000ff&gt;="products.aspx"&lt;/font&gt;&amp;gt;Products&lt;font color=#a52a2a&gt;&lt;font color=#0000ff&gt;&amp;lt;/&lt;/font&gt;a&lt;font color=#0000ff&gt;&amp;gt;&amp;lt;&lt;/font&gt;&lt;font color=#0000ff&gt;/&lt;/font&gt;li&lt;/font&gt;&lt;font color=#0000ff&gt;&amp;gt;&lt;/font&gt;&lt;/font&gt;&amp;nbsp;&lt;br&gt;
&lt;font face="Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color=#008000&gt;&amp;lt;!-- ...and so on...
--&amp;gt;&lt;/font&gt;&lt;/font&gt;&lt;font color=#008000&gt; 
&lt;br&gt;
&lt;/font&gt;&lt;font face="Courier New" color=#a52a2a&gt;&lt;font color=#0000ff&gt;&amp;lt;/&lt;/font&gt;ul&lt;font color=#0000ff&gt;&amp;gt;&lt;/font&gt;&lt;/font&gt; 
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
OK so far.&amp;nbsp; The thing with tabs is you always want the tab of the current page
to glow a little or something to indicate what page the user is up to.
&lt;/p&gt;
&lt;p&gt;
A common way is to assign an ID attribute&amp;nbsp;to the body tag of each page and include
some CSS that looks at the body ID and overrides the &lt;font face="Courier New"&gt;&lt;font color=#a31515&gt;#nav&lt;/font&gt;&lt;font color=#000000 size=2&gt; &lt;/font&gt;&lt;font color=#a31515 size=2&gt;a&lt;/font&gt;&lt;font size=2&gt;&amp;nbsp;&lt;/font&gt;&lt;/font&gt; for
the current page.
&lt;/p&gt;
&lt;p&gt;
The trick comes when the pages all descend from an ASP.NET 2.0 Master Page - the body
tags are going to be identical on each page.
&lt;/p&gt;
&lt;p&gt;
As luck would have it, &lt;a href="http://www.w3.org/TR/REC-CSS2/selector.html#attribute-selectors"&gt;CSS
lets us select based on any attribute&lt;/a&gt;.&amp;nbsp; Once the page is rendered each page
will get its own form tag where the Action attribute represents the current loaded
page as so: &amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
&lt;font face="Courier New"&gt;&amp;lt;&lt;font color=#000080&gt;form&lt;/font&gt; &lt;font color=#a52a2a&gt;name&lt;/font&gt;=&lt;font color=#ff0000&gt;"aspnetForm"&lt;/font&gt; &lt;font color=#a52a2a&gt;method&lt;/font&gt;=&lt;font color=#ff0000&gt;"post"&lt;/font&gt; &lt;font color=#a52a2a&gt;action&lt;/font&gt;=&lt;font color=#ff0000&gt;"Default.aspx"&lt;/font&gt; &lt;font color=#a52a2a&gt;id&lt;/font&gt;=&lt;font color=#ff0000&gt;"aspnetForm"&lt;/font&gt;&amp;gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
Which would let us add the following to our stylesheet:
&lt;/p&gt;
&lt;font color=#a31515 size=2&gt; 
&lt;p&gt;
&lt;font face="Courier New"&gt;#nav&lt;/font&gt;
&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color=#000000 size=2&gt; &lt;/font&gt;&lt;font color=#a31515 size=2&gt;a:hover&lt;/font&gt;&lt;font color=#000000 size=2&gt;, &lt;/font&gt;&lt;font color=#a31515 size=2&gt;body&lt;/font&gt;&lt;font color=#000000 size=2&gt; &lt;/font&gt;&lt;font color=#a31515 size=2&gt;form[action="Default.aspx"]&lt;/font&gt;&lt;font color=#000000 size=2&gt; &lt;/font&gt;&lt;font color=#a31515 size=2&gt;#NavPlaceHolder&lt;/font&gt;&lt;font color=#000000 size=2&gt; &lt;/font&gt;&lt;font color=#a31515 size=2&gt;#nav&lt;/font&gt;&lt;font color=#000000 size=2&gt; &lt;/font&gt;&lt;font color=#a31515 size=2&gt;#navHome&lt;/font&gt;&lt;font color=#000000 size=2&gt; &lt;/font&gt;&lt;font color=#a31515 size=2&gt;a&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font size=2&gt;&lt;font color=#000000&gt; &lt;/font&gt;
&lt;br&gt;
{ 
&lt;br&gt;
&lt;/font&gt;&lt;font color=#ff0000 size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;background&lt;/font&gt;&lt;font size=2&gt;: &lt;/font&gt;&lt;font color=#0000ff size=2&gt;#ffffff&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New" size=2&gt;; 
&lt;br&gt;
}&lt;/font&gt;&gt;
&lt;p&gt;
OK So far but the problem is it is case sensitve!&amp;nbsp; We&amp;nbsp;would need&amp;nbsp;-
If the page loads as default.aspx our tab won't highlight.&amp;nbsp; &lt;strong&gt;This just
won't do!&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
The trick is to add a new ContentPlaceHolder in our master page straight above the
UL listed above
&lt;/p&gt;
&lt;font size=2&gt; 
&lt;p&gt;
&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color=#0000ff size=2&gt;&amp;lt;&lt;/font&gt;&lt;font color=#a31515 size=2&gt;asp&lt;/font&gt;&lt;font color=#0000ff size=2&gt;:&lt;/font&gt;&lt;font color=#a31515 size=2&gt;ContentPlaceHolder&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#ff0000 size=2&gt;runat&lt;/font&gt;&lt;font color=#0000ff size=2&gt;="server"&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#ff0000 size=2&gt;id&lt;/font&gt;&lt;font color=#0000ff size=2&gt;="pageIdPlaceHolder"&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;&amp;gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;&amp;lt;/&lt;/font&gt;&lt;font color=#a31515 size=2&gt;asp&lt;/font&gt;&lt;font color=#0000ff size=2&gt;:&lt;/font&gt;&lt;font color=#a31515 size=2&gt;ContentPlaceHolder&lt;/font&gt;&lt;font color=#0000ff size=2&gt;&amp;gt;&lt;/font&gt;&lt;/font&gt;&gt;
&lt;p&gt;
Each page that descends from our master page should then override that ContentPlaceHolder
to add an empty Span with a page-specific ID as so: 
&lt;/p&gt;
&lt;font color=#0000ff size=2&gt; 
&lt;p&gt;
&lt;font face="Courier New"&gt;&amp;lt;&lt;/font&gt;
&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color=#a31515 size=2&gt;asp&lt;/font&gt;&lt;font color=#0000ff size=2&gt;:&lt;/font&gt;&lt;font color=#a31515 size=2&gt;Content&lt;/font&gt;&lt;font color=#000000 size=2&gt; &lt;/font&gt;&lt;font color=#ff0000 size=2&gt;ID&lt;/font&gt;&lt;font color=#0000ff size=2&gt;="pageIdContent"&lt;/font&gt;&lt;font color=#000000 size=2&gt; &lt;/font&gt;&lt;font color=#ff0000 size=2&gt;ContentPlaceHolderID&lt;/font&gt;&lt;font color=#0000ff size=2&gt;="pageIdPlaceHolder"&lt;/font&gt;&lt;font color=#000000 size=2&gt; &lt;/font&gt;&lt;font color=#ff0000 size=2&gt;runat&lt;/font&gt;&lt;font color=#0000ff size=2&gt;="server"&lt;/font&gt;&lt;font color=#000000 size=2&gt; &lt;/font&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;&lt;font face="Courier New"&gt;&amp;gt;&lt;/font&gt;
&lt;br&gt;
&lt;font face="Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color=#a31515 size=2&gt;span&lt;/font&gt;&lt;font color=#000000 size=2&gt; &lt;/font&gt;&lt;font color=#ff0000 size=2&gt;id&lt;/font&gt;&lt;font color=#0000ff size=2&gt;="ProductsPage"&amp;gt;&amp;lt;/&lt;/font&gt;&lt;font color=#a31515 size=2&gt;span&lt;/font&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;&lt;font face="Courier New"&gt;&amp;gt; &lt;font color=#008000&gt;&amp;lt;!--
This page will show the Products tab as selected --&amp;gt;&lt;/font&gt;&lt;/font&gt;
&lt;br&gt;
&lt;font face="Courier New"&gt;&amp;lt;/&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color=#a31515 size=2&gt;asp&lt;/font&gt;&lt;font color=#0000ff size=2&gt;:&lt;/font&gt;&lt;font color=#a31515 size=2&gt;Content&lt;/font&gt;&lt;font color=#0000ff size=2&gt;&amp;gt;&lt;/font&gt;&lt;/font&gt;&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
and then we can add a rule&amp;nbsp;to our CSS for each page that would read:&amp;nbsp; &lt;em&gt;Whenever
there is an element with the ID="ProductsPage" right next to one with the ID="nav"
do the following.&lt;/em&gt;&amp;nbsp; The + operator selects the next adjacent node in the
document as so:
&lt;/p&gt;
&lt;font color=#0000ff size=2&gt;&lt;font color=#a31515 size=2&gt; 
&lt;p&gt;
&lt;font face="Courier New"&gt;#&lt;font color=#0000ff&gt;&lt;font color=#a52a2a&gt;ProductsPage&lt;/font&gt; &lt;/font&gt;&lt;/font&gt;
&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color=#a31515 size=2&gt;+&lt;/font&gt;&lt;font color=#000000 size=2&gt; &lt;/font&gt;&lt;font color=#a31515 size=2&gt;#nav&lt;/font&gt;&lt;font color=#000000 size=2&gt; &lt;/font&gt;&lt;font color=#a31515 size=2&gt;#navProducts&lt;/font&gt;&lt;font color=#000000 size=2&gt; &lt;/font&gt;&lt;font color=#a31515 size=2&gt;a&lt;/font&gt;&lt;/font&gt;&lt;font size=2&gt;
&lt;br&gt;
&lt;font face="Courier New"&gt;{&lt;/font&gt;
&lt;br&gt;
&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color=#ff0000 size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;background&lt;/font&gt;&lt;font size=2&gt;: &lt;/font&gt;&lt;font color=#0000ff size=2&gt;#ffffff&lt;/font&gt;&lt;/font&gt;&lt;font size=2&gt;&lt;font face="Courier New"&gt;;&lt;/font&gt;
&lt;br&gt;
&lt;font face="Courier New"&gt;}&lt;/font&gt;&lt;/font&gt;&gt;
&lt;p&gt;
&lt;font size=2&gt;&lt;font color=#000000&gt;And there you have it!&amp;nbsp; Accessable and maintainable
nav bars from a UL using CSS, plus keeping all the time saving layout features of
Master Pages. &lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font size=2&gt;&lt;font color=#808080&gt;Listening To:&amp;nbsp; &lt;em&gt;The History Of Breaks&lt;/em&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;/font&gt;&gt;&gt;</description>
      <comments>http://deepdark.net/CommentView,guid,0eaa175f-2819-4d06-9820-38fe39e82fb5.aspx</comments>
      <category>CSS</category>
      <category>UX</category>
      <category>ASP.Net</category>
    </item>
  </channel>
</rss>