And yet another requirement if you use MasterPages. The panel targeted by the HoverMenuExtender covers everything in the area used by the ContentPlaceHolder in which it is placed. The popup panel looks transparent. But any part of the panel that displays outside of its home ContentPlaceHolder will show the contents of the web content in addition to the panel. You can see everything and nothing is covered up, so it looks like a jumbled mess.
My solution was to create another ContentPlaceHolder in the MasterPage. It is higher up in the DOM hierarchy than the other ContentPlaceHolders.
This is necessary in IE7. (I haven't tested it in IE6, but it is probably also necessary.) However, popups display correctly over all ContentPlaceHolders in IE8 without this work-around.
Example: This is in the MasterPage. In IE7, any popup placed within bodyAllContentPlaceHolder will display above anything in all of the other ContentPlaceHolders as it should.
<div class="bodyMainLeft">
<div class="bodyMainRight">
<asp:ContentPlaceHolder ID="bodyAllContentPlaceHolder" runat="server">
</asp:ContentPlaceHolder>
<div class="bodyLeft">
<asp:ContentPlaceHolder ID="bodyLeftContentPlaceHolder" runat="server">
</asp:ContentPlaceHolder>
</div>
<div class="bodyRight">
<asp:ContentPlaceHolder ID="bodyRightContentPlaceHolder" runat="server">
</asp:ContentPlaceHolder>
</div>
<div class="bodyContent">
<asp:ContentPlaceHolder ID="bodyContentPlaceHolder" runat="server">
</asp:ContentPlaceHolder>
</div>
<div class="clearone">
</div>
</div>
<!-- bodyMainRight -->
</div>
<!-- bodyMainLeft -->
The Page:
Objects that should display over all other objects on the page go here.
<asp:Content ID="bodyAll" ContentPlaceHolderID="bodyAllContentPlaceHolder"
runat="Server">
<div class="divHelpPopup1">
<uc2:HelpPopup ID="HelpPopup1" runat="server" />
<asp:Label ID="lblHelpPopup1" runat="server" CssClass="lblHelpPopup1" Text="Roll your mouse over the question mark."></asp:Label>
</div>
</asp:Content>
CSS:
Use CSS position: absolute to position the popup panel. Give it a width. Use z-index to keep it on top.
.divHelpPopup1
{
position: absolute;
left: 0;
top: 7em;
width: 145px;
padding: 1em;
z-index: 90;
}