当我要选择菜单导航项时,我有一个简单的选择下拉菜单,所以现在当我要悬停在菜单项上时,导航将返回选择打开的选项列表.它发生在所有浏览器中.我不知道这是一个错误还是什么.步骤是:
>打开选择下拉选项
>同时将鼠标悬停在导航菜单项上
>现在导航项目位于选项列表后面(不在选择标记后面)
我试过给位置的z-index.但没有任何工作.我认为这不是问题,但需要解释.任何建议将不胜感激.
这是示例代码:
- <style type="text/css">
- /* #################### Navigation bar CSS styling ################## */
- .mynavbar {
- position: relative;
- width: 100%;
- height: 23px; /* corresponds to 'line-height' of a.navbartitle below */
- margin: 0; border: 0; padding: 0;
- background-color: #666633;
- }
- a.navbartitle {
- display: block;
- float: left;
- color: white;
- background-color: #666633;
- font-family: Verdana,Arial,Geneva,Helvetica,sans-serif;
- font-size: 12px;
- font-weight: bold;
- margin: 0; border: 0; padding: 0;
- line-height: 23px; /* corresponds to 'top' value of .submenu below */
- text-align: center;
- text-decoration:none;
- }
- a.navbartitle:hover {
- background-color: #447755;
- }
- /* menu title widths */
- #t1 { width: 104px; }
- #t2 { width: 100px; }
- #t3 { width: 102px; }
- #t4 { width: 102px; }
- #t5 { width: 180px; }
- /* We just specify a fixed width for each menu title. Then,down below we specify
- a fixed left position for the corresponding submenus (e.g. #products_submenu,etc.)
- Using these fixed values isn't as elegant as just letting the text of each
- menu title determine the width of the menu titles and position of the submenus,but we found this hardwired approach resulted in fewer cross-browser/cross-OS
- formatting glitches -- and it's pretty easy to adjust these title widths and the
- corresponding submenu 'left' positions below,just by eyeballing them whenever
- we need to change the navbar menu titles (which isn't often). */
- .submenu {
- position:absolute;
- z-index: 2;
- top: 23px; /* corresponds to line-height of a.navbartitle above */
- padding: 0; margin: 0;
- width:166px; /* If adjust this,then adjust width of .submenu below a too */
- color: white;
- background-color: #666633;
- border: 1px solid #447755; /* Box around entire sub-menu */
- font-family: Verdana,sans-serif;
- font-size: 11px;
- }
- /* Fix IE formatting quirks. */
- * html .submenu { width: 148px; } /* IE needs narrower than width of .submenu above */
- /* End */
- /* position of each sub menu */
- /* We just eyeball the position of each submenu here -- can move left or right as needed.
- If you adjust menu title text,you might want to adjust these too. */
- #products_submenu { left: 0px; visibility: hidden; }
- #services_submenu { left: 104px; visibility: hidden; }
- #funstuff_submenu { left: 204px; visibility: hidden; }
- #aboutus_submenu { left: 306px; visibility: hidden; }
- #contact_submenu { left: 408px; visibility: hidden; }
- /* Note,each submenu is hidden when the page loads - then made visible when
- the mouse goes over the menu title. Using the 'visibility' property instead
- of using the 'display' property avoided a bug in some versions of Safari.
- (The bug is pretty where esoteric: The browser ignored the 'hover' property
- on 'li' objects inside an object whose display property was set to 'none'
- when the page loaded...) Using the 'visibility' property instead of 'display'
- would normaly take up extra room on the page,but that's avoided here by putting
- the submenu on a second layer: see 'position: absolute' and 'z-index: 2'
- in .submenu definition,higher up this page. */
- .submenu a
- {
- display: block;
- color: #eee;
- background-color: #666633;
- width: 146px; /* This should be width of .submenu above minus right-side padding on next line */
- padding: 5px 0px 4px 20px;
- text-decoration: none;
- background-color: #666633;
- border-bottom: #447755 dotted 1px;
- border-top: 0; border-left: 0; border-right: 0;
- }
- ul { position: relative; display: block; }
- li { position: relative; display: block; }
- .submenuBox {
- margin: 0; padding: 0; border: 0;
- }
- .submenuBox ul
- {
- margin: 0; padding: 0; border: 0;
- list-style-type: none;
- }
- .submenuBox ul li {
- margin: 0; padding: 0; border: 0;
- }
- .submenuBox ul li a:link { }
- .submenuBox ul li a:visited { }
- .submenuBox ul li a:hover
- {
- color: #c6e8e2; /* text color for submenu items */
- background-color: #447755;
- border-bottom: #447755 dotted 1px;
- }
- </style>
- <script type="text/javascript">
- // JavaScript functions to show and hide drop-down menus.
- // In SimpleNavBar.html we call ShowMenuDiv each time the mouse goes over
- // either the menu title or the submenu itself,and call HideMenuDiv when the
- // mouse goes out of the menu title or the submenu iteslf (onMouSEOut).
- function ShowItem (itemID) {
- var x = document.getElementById(itemID);
- if (x)
- x.style.visibility = "visible";
- return true;
- }
- function HideItem (itemID) {
- var x = document.getElementById(itemID);
- if (x)
- x.style.visibility = "hidden";
- return true;
- }
- // As noted in the SimpleNavBarStyles.css file,using x.style.visibility as
- // seen below seemed to have better cross browser support than using
- // x.style.display="block" and x.style.display="none" to show and hide
- // the menu.
- </script>
- <div class="mynavbar">
- <a onmouSEOver="ShowItem('products_submenu');" onmouSEOut="HideItem('products_submenu');" href="placeholder.html" id="t1" class="navbartitle">Products</a><a onmouSEOver="ShowItem('services_submenu');" onmouSEOut="HideItem('services_submenu');" href="placeholder.html" id="t2" class="navbartitle">Services</a><a onmouSEOver="ShowItem('funstuff_submenu');" onmouSEOut="HideItem('funstuff_submenu');" href="placeholder.html" id="t3" class="navbartitle">Fun Stuff</a><a onmouSEOver="ShowItem('aboutus_submenu');" onmouSEOut="HideItem('aboutus_submenu');" href="placeholder.html" id="t4" class="navbartitle">About Us</a><a onmouSEOver="ShowItem('contact_submenu','t5');" onmouSEOut="HideItem('contact_submenu');" href="placeholder.html" id="t5" class="navbartitle">Contacts & Directions</a>
- <!-- REPLACE each "placeholder.html" URL below with the specific page you want
- the user to go to when the given submenu item is clicked. -->
- <!-- Products sub-menu,shown as needed -->
- <div onmouSEOut="HideItem('products_submenu');" onmouSEOver="ShowItem('products_submenu');" id="products_submenu" class="submenu" style="visibility: hidden;">
- <div class="submenuBox">
- <ul>
- <li><a class="submenlink" href="placeholder.html">Flying Cars</a></li>
- <li><a class="submenlink" href="placeholder.html">Super Squirters</a></li>
- <li><a class="submenlink" href="placeholder.html">Sling Shots</a></li>
- <li><a class="submenlink" href="placeholder.html">Bamboozlers</a></li>
- <li><a class="submenlink" href="placeholder.html">Kazoos</a></li>
- </ul>
- </div>
- </div>
- <!-- Services sub-menu,shown as needed -->
- <div onmouSEOut="HideItem('services_submenu');" onmouSEOver="ShowItem('services_submenu');" id="services_submenu" class="submenu">
- <div class="submenuBox">
- <ul>
- <li><a class="submenlink" href="placeholder.html">Toy Design</a></li>
- <li><a class="submenlink" href="placeholder.html">Market Research</a></li>
- <li><a class="submenlink" href="placeholder.html">IP Consulting</a></li>
- <li><a class="submenlink" href="placeholder.html">Licensing</a></li>
- </ul></div>
- </div>
- <!-- Fun Stuff sub-menu,shown as needed -->
- <div onmouSEOut="HideItem('funstuff_submenu');" onmouSEOver="ShowItem('funstuff_submenu');" id="funstuff_submenu" class="submenu" style="visibility: hidden;">
- <div class="submenuBox">
- <ul>
- <li><a class="submenlink" href="placeholder.html">Toys We Designed</a></li>
- <li><a class="submenlink" href="placeholder.html">Press Ravings</a></li>
- <li><a class="submenlink" href="placeholder.html">Our Blog</a></li>
- </ul>
- </div>
- </div>
- <!-- About Us sub-menu,shown as needed -->
- <div onmouSEOut="HideItem('aboutus_submenu');" onmouSEOver="ShowItem('aboutus_submenu');" id="aboutus_submenu" class="submenu" style="visibility: hidden;">
- <div class="submenuBox">
- <ul>
- <li><a class="submenlink" href="placeholder.html">Team</a></li>
- <li><a class="submenlink" href="placeholder.html">Investors</a></li>
- <li><a class="submenlink" href="placeholder.html">Partners</a></li>
- <li><a class="submenlink" href="placeholder.html">Careers</a></li>
- <li><a class="submenlink" href="placeholder.html">Our Blog</a></li>
- </ul>
- </div>
- </div>
- <!-- CONTACTS & DIRECTIONS sub-menu,shown as needed -->
- <div onmouSEOut="HideItem('contact_submenu');" onmouSEOver="ShowItem('contact_submenu');" id="contact_submenu" class="submenu" style="visibility: hidden;">
- <div class="submenuBox">
- <ul>
- <li><a class="submenlink" href="placeholder.html">Contact</a></li>
- <li><a class="submenlink" href="placeholder.html">Getting Here</a></li>
- </ul>
- </div>
- </div><!-- end of sub-meus -->
- </div>
- <div><select style="margin-left: 200px; position: relative; z-index: 0;">
- <option value=""></option>
- <option value="28">Test</option>
- <option value="Eff2">Test</option>
- <option value="Effort1">Test</option>
- <option value="FC">Test</option>
- <option value="Effort1">Test</option><option value="Effort1">Test</option><option value="Effort1">Test</option><option value="Effort1">Test</option>
- </select>
- </div>
解决方法
<select>
元素是HTML5中的
interactive content元素和HTML4.01中的
menu元素.因此,它是一个需要用户输入的对象,其行为类似于右键单击上下文菜单,并且如果处于活动状态,则呈现在所有文档元素之上.自己尝试一下 – 打开你的上下文菜单并将鼠标悬停在导航上.
此错误与其他交互式内容元素(如视频)的行为相关联(另请参阅HTML5 rendering).
防止此类行为的唯一方法是在将鼠标悬停在交互式元素上时将活动选择的显示属性更改为none. visibility:hidden的;因为选项仍然显示,并使用display:none;选项将导致渲染错误.
Here is a small demonstration上述技术:
- .mynavbar:hover ~ * .selecthack > select:focus
- .mynavbar:hover ~ .selecthack > select:focus{
- display:none;
- }