My boss wanted from me to start styling .NET components in CSS. The hardest task to accomplish here is to successfully style a TreeView component - which will show nodes in a tree menu order.
Here is the HTML code how the component is parsed:
<div class="AspNet-TreeView" id="TreeView1">
<ul id="TreeView1_UL">
<li class="AspNet-TreeView-Root AspNet-TreeView-Leaf"> <a href="javascript:__doPostBack('TreeView1','sNew Node')"> Menu 1</a> </li>
<li class="AspNet-TreeView-Root AspNet-TreeView-Leaf"> <a href="javascript:__doPostBack('TreeView1','sNew Node')"> Menu 2</a> </li>
<li class="AspNet-TreeView-Root"> <span class="AspNet-TreeView-Expand" onClick="ExpandCollapse__AspNetTreeView(this)"> </span> <a href="javascript:__doPostBack('TreeView1','sNew Node')"> Menu 3</a>
<ul class="AspNet-TreeView-Hide">
<li class="AspNet-TreeView-Leaf"> <a href="javascript:__doPostBack('TreeView1','sNew Node\\\\Submenu 1')"> Submenu 1</a> </li>
<li class="AspNet-TreeView-Leaf"> <a href="javascript:__doPostBack('TreeView1','sNew Node\\\\Submenu 2')"> Submenu 2</a> </li>
</ul>
</li>
<li class="AspNet-TreeView-Root AspNet-TreeView-Leaf"> <a href="javascript:__doPostBack('TreeView1','sNew Node')"> Menu 4</a> </li>
</ul>
</div>
Using the pre-defined classes I end up doing this kind of CSS:
.AspNet-TreeView {
width: 200px;
border-top: solid 1px #DDD;
}
.AspNet-TreeView ul {
list-style: none;
}
.AspNet-TreeView-Leaf {
border-bottom: solid 1px #DDD;
background: url(../../images/structure/node-dot.gif) 8px 9px no-repeat;
}
.AspNet-TreeView-Root {
border-bottom: solid 1px #DDD;
}
.AspNet-TreeView-Root a {
display: block;
width: 170px;
margin-left: 20px;
padding: 5px 5px 5px 5px;
}
.AspNet-TreeView-Selected {
background: #F6F6F6 url(../../images/structure/arrow-right.gif) 8px 9px no-repeat;
}
.AspNet-TreeView-Expand {
display: block;
float: left;
margin: 9px 0px 0px 8px;
padding: 6px 4px 5px 4px;
height: 0px !important;
background: url(../../images/structure/node-plus.gif) 0px 0px no-repeat;
cursor: pointer;
}
.AspNet-TreeView-Collapse {
display: block;
float: left;
margin: 9px 0px 0px 8px;
padding: 6px 4px 5px 4px;
height: 0px !important;
background: url(../../images/structure/node-minus.gif) 0px 0px no-repeat;
cursor: pointer;
}
.AspNet-TreeView-Show li {
border-top: solid 1px #DDD;
background-position: 28px 9px;
}
.AspNet-TreeView-Hide {
display: none;
}
.AspNet-TreeView ul li ul li {
text-indent: 20px;
border-bottom: none;
font-size: 11px;
}
It basically works in Firefox and Opera, but not in IE6. I guess I need to implement some IE specific bug fixes to the “AspNet-TreeView-Expand” and “AspNet-TreeView-Collapse” classes, but don’t know how? Any tips?