Log in

View Full Version : Nested Side Bar Menu - Background Color Question



Jimmy506
05-07-2011, 07:08 PM
Hi,
I'm using the "Nested Side Bar Menu":
http://www.dynamicdrive.com/style/csslibrary/item/nested_side_bar_menu/

Question: Is there a way to have a separate background color for the sub-menu?
In other words- a different color than the parent menu...

In the CSS: /*Sub level menu items */
If I try to add this- nothing seems to change.
.background-color: #E2F1F8;
}



Thanks very much,
Jimmy

deathbycheese
05-07-2011, 09:52 PM
Hi Jimmy,

Try giving the <li>s of each level a separate class, removing any background-color references that are within the non-li parent containers. Then assign a bkgd color to each <li> level.

dbc





-------------------------------------------------
If this was helpful, please click the 'thanks' button.

jscheuer1
05-08-2011, 10:49 AM
/*Sub level menu items */
.sidebarmenu ul li ul{
position: absolute;
width: 170px; /*Sub Menu Items width */
top: 0;
visibility: hidden;
background-color: yellow;
}

Jimmy506
05-08-2011, 05:48 PM
Hey thanks guys-

I still can't seem to make it work though.

On the idea of giving each <li> it's own class... I don't even know how to start with doing that.

Anyway you could demonstrate using the example here:
http://www.dynamicdrive.com/style/csslibrary/item/nested_side_bar_menu/

Thanks,
Jimmy

deathbycheese
05-08-2011, 06:30 PM
When initially attempting to help, I tried John's method too. For some reason, however, the parent ul css stays in control of the sub ul, so it didn't work - very strange. So, I tried separating the li's with their own classes and omitting background color reference from the parent ul li ul format. This was the only way I could get it to work. Here's what I did:

Remove the background-color reference from here:


.sidebarmenu ul li a:link, .sidebarmenu ul li a:visited, .sidebarmenu ul li a:active{
background-color: #012D58; /*background of tabs (default state)*/
}


Give each level's li it's own class:




.level1 {
background-color: #ff2233;
}

.level2 {
background-color: #440044;
}


.level3 {
background-color: #009900;
}

and

<ul id="sidebarmenu1">
<li class="level1"><a href="#">Item 1</a></li>
<li class="level1"><a href="#">Item 2</a></li>
<li class="level1"><a href="#">Folder 1</a>
<ul class="sub1">
<li class="level2"><a href="#">Sub Item 1.1</a></li>
<li class="level2"><a href="#">Sub Item 1.2</a></li>
</ul>
</li>

...etc



dbc







-------------------------------------------------
If this was helpful, please click the 'thanks' button.

Jimmy506
05-08-2011, 07:51 PM
Hey thanks to both of you: John and DBC!

DBA...Once I removed this background-color reference, John's method started working:
.sidebarmenu ul li a:link, .sidebarmenu ul li a:visited, .sidebarmenu ul li a:active{
background-color: #012D58; /*background of tabs (default state)*/
}

But also your <li> styling is working out too. Thanks for the time to spell it out for me.
Jimmy

deathbycheese
05-08-2011, 08:20 PM
Teamwork. :)








-------------------------------------------------
If this was helpful, please click the 'thanks' button.

ajfmrf
05-09-2011, 03:36 AM
http://web-user.net/1test/4/1.html



<html>
<head>
<title></title>
<style type="text/css">

/*Credits: Dynamic Drive CSS Library */
/*URL: http://www.dynamicdrive.com/style/ */

.sidebarmenu ul{
margin: 0;
padding: 0;
list-style-type: none;
font: bold 13px Verdana;
width: 180px; /* Main Menu Item widths */
border-bottom: 1px solid #ccc;
}

.sidebarmenu ul li{
position: relative;
}

/* Top level menu links style */
.sidebarmenu ul li a{
display: block;
overflow: auto; /*force hasLayout in IE7 */
color: white;
text-decoration: none;
padding: 6px;
border-bottom: 1px solid #778;
border-right: 1px solid #778;
}

.sidebarmenu ul li a:link, .sidebarmenu ul li a:visited {
background-color: #d11b70;
}

.sidebarmenu ul li a:visited{
color: white;
}

.sidebarmenu ul li a:hover{
background-color: blue;
}

/*Sub level menu items */
.sidebarmenu ul li ul{
position: absolute;
width: 170px; /*Sub Menu Items width */
top: 0;
visibility: hidden;
background-color:#3de616;
}

.sidebarmenu ul li ul a:link {
background-color: #3de616;
}

.sidebarmenu ul li ul a:hover{
background-color: blue;
}

.sidebarmenu ul li ul li ul a:link {
background-color: bisque;
}

.sidebarmenu ul li ul li ul a:hover{
background-color: grey;
}

.sidebarmenu a.subfolderstyle{
background: url(right.gif) no-repeat 97% 50%;
}


/* Holly Hack for IE \*/
* html .sidebarmenu ul li { float: left; height: 1%; }
* html .sidebarmenu ul li a { height: 1%; }
/* End */

</style>

<script type="text/javascript">

//Nested Side Bar Menu (Mar 20th, 09)
//By Dynamic Drive: http://www.dynamicdrive.com/style/

var menuids=["sidebarmenu1"] //Enter id(s) of each Side Bar Menu's main UL, separated by commas

function initsidebarmenu(){
for (var i=0; i<menuids.length; i++){
var ultags=document.getElementById(menuids[i]).getElementsByTagName("ul")
for (var t=0; t<ultags.length; t++){
ultags[t].parentNode.getElementsByTagName("a")[0].className+=" subfolderstyle"
if (ultags[t].parentNode.parentNode.id==menuids[i]) //if this is a first level submenu
ultags[t].style.left=ultags[t].parentNode.offsetWidth+"px" //dynamically position first level submenus to be width of main menu item
else //else if this is a sub level submenu (ul)
ultags[t].style.left=ultags[t-1].getElementsByTagName("a")[0].offsetWidth+"px" //position menu to the right of menu item that activated it
ultags[t].parentNode.onmouseover=function(){
this.getElementsByTagName("ul")[0].style.display="block"
}
ultags[t].parentNode.onmouseout=function(){
this.getElementsByTagName("ul")[0].style.display="none"
}
}
for (var t=ultags.length-1; t>-1; t--){ //loop through all sub menus again, and use "display:none" to hide menus (to prevent possible page scrollbars
ultags[t].style.visibility="visible"
ultags[t].style.display="none"
}
}
}

if (window.addEventListener)
window.addEventListener("load", initsidebarmenu, false)
else if (window.attachEvent)
window.attachEvent("onload", initsidebarmenu)

</script>

</head>
<body>
<div class="sidebarmenu">
<ul id="sidebarmenu1">
<li><a href="#">Item 1</a></li>
<li><a href="#">Item 2</a></li>
<li><a href="#">Folder 1</a>
<ul>
<li><a href="#">Sub Item 1.1</a></li>
<li><a href="#">Sub Item 1.2</a></li>
</ul>
</li>
<li><a href="#">Item 3</a></li>

<li><a href="#">Folder 2</a>
<ul>
<li><a href="#">Sub Item 2.1</a></li>
<li><a href="#">Folder 2.1</a>
<ul>
<li><a href="#">Sub Item 2.1.1</a></li>
<li><a href="#">Sub Item 2.1.2</a></li>
<li><a href="#">Sub Item 2.1.3</a></li>
<li><a href="#">Sub Item 2.1.4</a></li>
</ul>
</li>
</ul>
</li>
<li><a href="#">Item 4</a></li>
</ul>
</div>
</body>
</html>


But I seem to be a bit late and not as easy as the other options,-oh well

Bud