用CSS做二级菜单为什么没有隐藏?

html-css022

用CSS做二级菜单为什么没有隐藏?,第1张

<style>

#menu ul li ul {

   display:none

}

#menu ul li:hover ul {

   display:block

}

</style>

<div id="menu">

   <ul>

      <li>

         <a href="about.htm" target="_blank">About</a>

         <ul>

            <li>二级菜单1</li>

            <li>二级菜单2</li>

            <li>二级菜单3</li>

         </ul>

      </li>

      <li>

         <a href="pricing.htm" target="_blank">Pricing</a>

         <ul>

            <li>二级菜单4</li>

            <li>二级菜单5</li>

            <li>二级菜单6</li>

         </ul>

      </li>

      <li>

         <a href="contact.htm" target="_blank">Contact</a>

         <ul>

            <li>二级菜单7</li>

            <li>二级菜单8</li>

            <li>二级菜单9</li>

         </ul>

      </li>

   </ul>

</div>

代码粘贴的太复杂;

先给你分析一下原理:二级菜单没有在没有hover属性的情况下是隐藏的所以需要display:none,当鼠标hover的时候二级菜单才会列出来,这是纯css可以实现的;

知道上面的原理之后,下面比较容易实现具体看例子:

HTML代码:

<ul>

<li><a href="">一级菜单</a></li>

<li><a href="">一级菜单</a>

<ul class="drop-ul">

<li ><a href="">二级菜单</a></li>

</ul>

</li>

</ul>

CSS代码:

ul li ul.drop-ul{ display: noneposition:relative }/*正常情况下隐藏*/

ul li:hover ul.drop-ul li{display: block} /*当鼠标放上去二级菜单li 显示出来*/

/*这个时候你会发现二级菜单显示的位置可能不对可以使用position属性*/

ul li:hover ul.drop-ul li{position:absolute}

/*通过top right left 调整位置,根据实际情况调整背景颜色,字体颜色等,细节东西*/

此时可能会发现会二级菜单出现有那么一点点的生硬;没关系配合jquery实现缓慢展现效果

$(document).ready(function() {

if($(window).width() > 768) {

$('ul li').hover(

function() {

$('ul', this).stop().slideDown(200)

  },

function() {

     $('ul', this).stop().slideUp(200)

   }

)

}

})

注意不知道jquery的新手使用记住先加载Jquery.min.js文件,放在此段js前面;