Hi this seems due the IE z-index bug see http://verens.com/archives/2005/07/15/ie-z-index-bug/
olivier jon randahl wrote:
First, let me say thank you to Joel for making the new CSS for Superfish so easy to configure now! All those comments make such the difference! and Second, here's my dilema: We have a site, first thing that loads is a lovely flash movie which resides in the main container below the horizontal navigation which has a single dropdown from one choice. Once the movie has played the user is presented with a static page with an additional nav on the side (totally seperate from hNav) and a static hero shot image all below the horzontal nav at the top. The user can navigate through the site using the main horizontal nav at any point, either during the flash movie or after. It all works fine, exactly as planned, in Firefox; unfortunately the dropdown menu shows partially underneath the main container if viewed in IE (both 6 & 7). Having trolled through the differing posts about the above topics, I have tried everything I can to get this to work! Alas, I have failed. I am begging anyone to please lend a hand and see where I have gone wrong! I am pasting the css I'm using, please feel free to comment, postulate, or slam it all. Thanks in advance! Jon <code><pre> /--------------------------------------------------------------------------------------------------/ the style calls held in the template: <link rel="stylesheet" type="text/css" href="/_assets/css/main.css" media="screen" /> <link rel="stylesheet" type="text/css" href="/_assets/css/ thickbox.css" media="screen" /> <link rel="stylesheet" type="text/css" href="/_assets/css/ supafish.css" media="screen" /> /--------------------------------------------------------------------------------------------------/ Structural CSS pertaining to elements concerned: #header { position: absolute; top: 0; left: 5px; width: 850px; height: 56px; margin: 0; padding: 0; } #content { position: absolute; top: 56px; left: 275px; width: 580px; height: 580px; margin: 0; padding: 0; } #hdrNav { position: absolute; top: 0; right: 0; width: 490px; height: 56px; z-index: 1; } #hdrNav li { display: inline; position: relative; z-index: 1; } #hdrNav li a.toplevel { display: block; float: left; width: auto; height: 56px; line-height: 56px; margin: 0; padding: 0; } #hdrNav li img { display: block; float: left; width: 7px; height: 56px; margin: 0; padding: 0; } #hdrNav li a#n1-home { width: 63px; background: #fff url('/_assets/img/ navigation/home.gif') 0 0 no-repeat; } #hdrNav li a#n1-avby { width: 90px; background: #fff url('/_assets/img/ navigation/availability.gif') 0 0 no-repeat; } #hdrNav li a#n1-lctn { width: 76px; background: #fff url('/_assets/img/ navigation/location.gif') 0 0 no-repeat; } #hdrNav li a#n1-amts { width: 121px; background: #fff url('/_assets/ img/navigation/amenities.gif') 0 0 no-repeat; } #hdrNav li a#n1-news { width: 62px; background: #fff url('/_assets/img/ navigation/news.gif') 0 0 no-repeat; } #hdrNav li a#n1-cntc { width: 70px; background: #fff url('/_assets/img/ navigation/contacts.gif') 0 0 no-repeat; } #hdrNav li a#n1-avby ul#n1-abvy-sub { position: relative; z-index: 99; } #hdrNav li a:hover#n1-home, #hdrNav li a:hover#n1-avby, #hdrNav li a:hover#n1-lctn, #hdrNav li a:hover#n1-amts, #hdrNav li a:hover#n1-news, #hdrNav li a:hover#n1-cntc { background-color: #eef3f7; } /--------------------------------------------------------------------------------------------------/ Supafish CSS: (with changes made) /* This file is commented in great detail for educational purposes. There is also * an uncommented version for use production use here: * http://users.tpg.com.au/j_birch/plugins/superfish/superfish.css */ /**************** ESSENTIAL STYLES ***************/ /* This first group of styles are most important for the function of Superfish. * The more cosmetic styling rules are grouped together below under the heading * ORIGINAL SKIN. * * Note that this CSS file will create the kind of menu demonstrated on the main * page of the Superfish documentation, ie. top tier of nav is horizontal, with * subsequent tiers vertical. */ /* remove any default styles */ .nav, .nav * { margin:0; padding:0; list-style:none; } /* top ul.nav element */ .nav { z-index:99; line-height:1.0; /* makes calculating the 'top' value for first submenu easier */ } /* nested submenu ul elements */ .nav ul { position:absolute; /* remove from flow and allow positioning */ top:-999em; /* hide submenu in screen-reader and search-engine friendly way */ width:88px; /* VARIABLE. Must have a width for menu items to inherit. Use ems so font scaling does not break design*/ } /* submenu items */ .nav ul li, .nav a { /* this affects top level anchors too */ width: 100%;/* stretch submenu items to width of submenu ul width (see .nav ul rules above) */ } /* all li elements */ .nav li { z-index:99; /* ensure submenus appear above other page items. Increase if needed, but do not exceed thickbox overlay z-index! */ float:left; /* must float all li elements. Vertical submenu items are restrained by parent ul width (see .nav ul rules above) */ position:relative; /* make child submenu ul position relative to parent li */ } /* all anchor elements */ .nav a { display:block; /* make IE6 obey width when text-indent is used */ } /**** Position of second tier of nav ****/ .nav li:hover ul, /* this pure CSS hover is overridden by the .superfish rules below which are applied only when JavaScript is available. This way, the menu degrades to regular CSS dropdown when JavaScript is unavailable */ ul.nav li.sfHover ul /* this is the familiar IE6 hover support. With Superfish, all browsers use this rule when JS is available. This is because the JS needs to be able to control hide and reveal delays and animations without the pure CSS rule intruding. Note the tag selector ul.nav instead of just .nav - this gives it the most specificity of all and makes it trump all other positioning rules, including the .superfish overrides below */ { left:-1px; /* position first submenu directly under parent li */ top:2.7em; /* VARIABLE. This is calculated by adding 1em text height to top and bottom anchor element padding (original skin: .75em top + . 75em bottom + 1em text height = 2.5em) */ } /**** Position of third tier of nav ****/ /* Note that this rule must appear here in the code order in order for it to override previous positioning rules so that this and subsequent nested submenus still remain hidden when the parent submenu is shown. Do not group these selectors with other top:-999em rules */ .nav li:hover li ul, .nav li.sfHover li ul { top:-999em; /* hide submenu in screen-reader and search-engine friendly way */ } /* DO NOT attempt to group these selectors with similar earlier rules. The code order is important so the rules override previous ones correctly */ .nav li li:hover ul, /* this pure CSS hover is overridden by the .superfish rules below which are applied only when JavaScript is available. This way, the menu degrades to regular CSS dropdown when JavaScript is unavailable */ ul.nav li li.sfHover ul /* this is the familiar IE6 hover support. With Superfish, all browsers use this rule when JS is available. This is because the JS needs to be able to control hide and reveal delays and animations without the pure CSS rule intruding. Note the tag selector ul.nav instead of just .nav - this gives it the most specificity of all and makes it trump all other positioning rules, including the .superfish overrides below */ { left:83px; /* VARIABLE. Offset subsequent submenus to the right by the amount you set for the submenu widths (see .nav ul rules above) */ top:-1px; /* position subsequent submenus horizontally aligned to parent li */ } /**** Position of fourth tier of nav (not used on main demo page. You could delete this block for a three tiered nav) ****/ /* Note that this rule must appear here in the code order in order for it to override previous positioning rules so that this and subsequent nested submenus still remain hidden when the parent submenu is shown. Do not group these selectors with other top:-999em rules */ .nav li li:hover li ul, .nav li li.sfHover li ul { top:-999em; /* hide submenu in screen-reader and search-engine friendly way */ } /* DO NOT attempt to group these selectors with similar earlier rules. The code order is important so the rules override previous ones correctly */ .nav li li li:hover ul, /* this pure CSS hover is overridden by the .superfish rules below which are applied only when JavaScript is available. This way, the menu degrades to regular CSS dropdown when JavaScript is unavailable */ ul.nav li li li.sfHover ul /* this is the familiar IE6 hover support. With Superfish, all browsers use this rule when JS is available. This is because the JS needs to be able to control hide and reveal delays and animations without the pure CSS rule intruding. Note the tag selector ul.nav instead of just .nav - this gives it the most specificity of all and makes it trump all other positioning rules, including the .superfish overrides below */ { left:83px; /* VARIABLE. Offset subsequent submenus to the right by the amount you set for the submenu widths (see .nav ul rules above) */ top:-1px; /* position subsequent submenus horizontally aligned to parent li */ } /**** Position of further tiers of nav ****/ /* To add further tiers, you need copy the previous block of code (everything back until the "Position of fourth tier of nav" comment) and paste it in here. Then add an extra li just after .nav in each of the pasted selectors. So the new block will differ from the copied block in the same way that the block for the fourth tier differs from the block for the third tier.*/ /**** Very important ****/ /* this negates the pure CSS hovers so submenu remains hidden and JS controls when and how it appears. This is in turn is overridden by the .sfHover rules above as they have greater specificity */ /* notice there are three selectors here. You need three for a four tier menu system. If you had a five tier system you would copy the last selector of these three and paste it below to create a fourth selector and add another li just after the .superfish part. On the other hand if you only had a three tiered menu you could delete the third line here and save some file size.*/ .superfish li:hover ul, .superfish li li:hover ul, .superfish li li li:hover ul { top: -999em; /* hide submenu in screen-reader and search-engine friendly way */ } /******************** ORIGINAL SKIN ******************/ /* * The CSS below is my attempt to extract most of the stuff you need to change in order * to reskin the menu with the appearance you require. However, certain rules above * (indicated with the word "VARIABLE") may also need to be altered to suit the width * and height of your menu items and submenus. For example, if you need wider submenus * eg: .nav ul { width:12em} then you will need to also apply that value * to the left offset of any deeper nested submenus, eg: * .nav li li:hover ul, * ul.nav li li.sfHover ul { left:12em; top:-1px; } * * Other than that, most of the cosmetic stuff is below: */ .nav { float:left; /* necessary if you don't want this element to collapse */ margin-bottom:1.5em; /* add space beneath nav. Purely cosmetic */ } .nav li.sfHover { width:90px; /* affects top level menu items only, as nested li elements have width 100% of their ul parent (see .nav ul rules above)*/ } .nav a { color: #86959c; padding: .25em 0; /* note that the top and bottom padding will affect the 'top' value (marked with the word "VARIABLE") of the second tier of nav (see "essential rules" above and alter accordingly) */ text-decoration:none; text-indent: 2em; } .nav li:hover, .nav li.sfHover, .nav a:focus, .nav a:hover, .nav a:active { background:#eaf5f6; /* hover highlight */ } .nav li li { border:1px solid #86959c; border-bottom: none; background:#eaf0f6; /* slightly darker shade for nested submenus */ width: 83px; } .nav li li.last { border:1px solid #86959c; width: 83px; } .nav li li li { background:#eaf0f6; /* slightly darker shade for nested submenus */ } </pre></code> thank you for any help!