CSS下拉菜单不起作用

时间:2013-08-19 09:50:52

标签: css

我正在学习CSS的基础并试图创建一个下拉菜单,我尝试使用纯CSS创建一个下拉菜单,但它无法正常工作。

到目前为止,我尝试了这段代码:

CSS

<!-- because of the * default code it takes out all margin and padding or idententation -->
*{
    margin: 0px;
    padding: 0px;}

body
{
    font-family: verdana;
    background-color: ABC;
    padding: 50px;
}

h1
{
    text-align: center;
    border-bottom: 2px solid #009;
    margin-bottom: 50px;
}

/*rules for navigation menu */
/*============================================*/
ul#navmenu, ul.sub1
{
    list-style-type: none;<!-- sets bullets to none -->

}

ul#navmenu li
{
    outline: 1px solid red;
    width: 125px;
    text- align: center;
    position: relative;
    float: left;
    margin-right: 4px;
}

ul#navmenu a
{
    text-decoration: none;
    display: block; <!-- this code makes the link a button instead  pointing specifically on the link -->
    width: 125px;
    height: 25px;
    line-height: 25px;
    background-color: #FFF;
    border: 1px solid #CCC;
    border-radius: 5px;
}

ul#navmenu .sub1 li
{

}

ul#navmenu .sub1 a 
{
    margin-top: 0px;
}

ul#navmenu li:hover > a
{
 background-color: #CFC; <!-- sets all link color when hovering to yellow  -->
}

ul#navmenu li:hover a: hover
{
    background-color: #FF0;  <!-- sets all link color when hovering to yellow  -->
}

ul#navmenu ul.sub1
{
    display: none;
    position: absolute;
    top: 26px;
    left: 0px;

}

ul#navmenu li:hover .sub1
{
    display: block;
}

HTML

<h1>Navigation Menu</h1>

<ul id="navmenu">
<li><a href="#">Hyperlink 1</a></li>
<li><a href="#">Hyperlink 2</a></li>
    <ul id="sub1"> 
        <li><a href="#">Hyperlink 2.1</a></li>
        <li><a href="#">Hyperlink 2.2</a></li>
    </ul>
<li><a href="#">Hyperlink 3</a></li>
<li><a href="#">Hyperlink 4</a></li>
</ul>

</body>
</html>

下拉菜单不起作用,它不隐藏子菜单,我不知道为什么。

以下是使用Internet Explorer的图片截图:

IE

使用谷歌浏览器时:

Chrome

我无法继续前进:(任何建议为什么下拉菜单不起作用以及为什么它使用其他浏览器显示不同? 有没有办法如何编写CSS下拉菜单,它会在任何浏览器上显示相同的内容?提前谢谢。

4 个答案:

答案 0 :(得分:4)

JSFIDDLE

截屏:

enter image description here

使用正确的HTML好友:

<ul id="navmenu">
<li><a href="#">Hyperlink 1</a></li>
<li><a href="#">Hyperlink 2</a>
    <ul id="sub1"> 
        <li><a href="#">Hyperlink 2.1</a></li>
        <li><a href="#">Hyperlink 2.2</a></li>
    </ul>
</li>
<li><a href="#">Hyperlink 3</a></li>
<li><a href="#">Hyperlink 4</a></li>
</ul>

并添加此CSS:

li ul{
    display:none;
}

li:hover ul{
    display:block;
}

答案 1 :(得分:1)

喜欢这个

请将ul放入

  • 子菜单
  • <强> DEMO

    <强> HTML

    <ul id="navmenu">
    <li><a href="#">Hyperlink 1</a></li>
    <li><a href="#">Hyperlink 2</a>
        <ul id="sub1"> 
            <li><a href="#">Hyperlink 2.1</a></li>
            <li><a href="#">Hyperlink 2.2</a></li>
        </ul>
        </li>
    <li><a href="#">Hyperlink 3</a></li>
    <li><a href="#">Hyperlink 4</a></li>
    </ul>
    

    <强> CSS

     *{
            margin: 0px;
            padding: 0px;}
    
        body
        {
            font-family: verdana;
            background-color: ABC;
            padding: 50px;
        }
    
        h1
        {
            text-align: center;
            border-bottom: 2px solid #009;
            margin-bottom: 50px;
        }
    
        /*rules for navigation menu */
        /*============================================*/
        ul#navmenu, ul.sub1
        {
            list-style-type: none;<!-- sets bullets to none -->
    
        }
    
        ul#navmenu li
        {
    
            width: 125px;
            text- align: center;
            position: relative;
            float: left;
            margin-right: 4px;
        }
    
        ul#navmenu a
        {
            text-decoration: none;
            display: block; <!-- this code makes the link a button instead  pointing specifically on the link -->
            width: 125px;
            height: 25px;
            line-height: 25px;
            background-color: #FFF;
            border: 1px solid #CCC;
            border-radius: 5px;
        }
    
        ul#navmenu .sub1 li
        {
    
        }
    
        ul#navmenu .sub1 a 
        {
            margin-top: 0px;
        }
    
        ul#navmenu li:hover > a
        {
         background-color: #CFC; <!-- sets all link color when hovering to yellow  -->
        }
    
        ul#navmenu li:hover a: hover
        {
            background-color: #FF0;  <!-- sets all link color when hovering to yellow  -->
        }
    
        ul#navmenu ul.sub1
        {
            display: none;
            position: absolute;
            top: 26px;
            left: 0px;
    
        }
    
        ul#navmenu li:hover .sub1
        {
            display: block;
        }
    li ul{
        display:none;
    }
    
    li:hover ul{
        display:block;
    }
    

    <强> DEMO2

    <强> DEMO3

    答案 2 :(得分:0)

    你需要做三件事......

    1. HTML中的修正,其中有'li'标签,带有'ul',id =“sub1”。您需要将其写为

    <li><a href="#">Hyperlink 2</a>
        <ul id="sub1"> 
            <li><a href="#">Hyperlink 2.1</a></li>
            <li><a href="#">Hyperlink 2.2</a></li>
        </ul>
    </li>
    

    //有一个拼写错误。你在'ul'之前关闭'li'。它最终应该关闭。

    1. 您需要为sub1菜单显示:none。

      li ul {     显示:无; }

    2. 然后当您将“li”

      悬停时显示

      li:hover ul {     显示:块; }

    3. 编辑:在样式标签中写下这个....

      *{
                  margin: 0px;
                  padding: 0px;}
      
              body
              {
                  font-family: verdana;
                  background-color: ABC;
                  padding: 50px;
              }
      
              h1
              {
                  text-align: center;
                  border-bottom: 2px solid #009;
                  margin-bottom: 50px;
              }
      
              /*rules for navigation menu */
              /*============================================*/
              ul
              {
                  list-style-type: none;<!-- sets bullets to none -->
      
              }
      
              ul#navmenu li
              {
                  width: 125px;
                  text- align: center;
                  float: left;
                  margin-right: 4px;
                  background-color: #FFF;
                  border: 1px solid #CCC;
                  border-radius: 5px;
              }
      
              ul#navmenu a
              {
                  text-decoration: none;
                  display: block; <!-- this code makes the link a button instead  pointing specifically on the link -->
                  width: 125px;                
                  line-height: 25px;
      
              }
          ul#navmenu li:hover > a
              {
               background-color: #CFC; 
              }
          li ul{
              display:none;
              left: -40px;
              position: relative;
          }        
          li:hover ul{
              display:block;
      
          }
          ul#sub1 li:hover{
              background-color:red; 
          }
      

      尝试

    答案 3 :(得分:-1)

    您的HTML使用不当,ul#sub1应该是<li>

    的孩子
    <ul id="navmenu">
    <li><a href="#">Hyperlink 1</a></li>
    <li><a href="#">Hyperlink 2</a>
        <ul id="sub1"> 
            <li><a href="#">Hyperlink 2.1</a></li>
            <li><a href="#">Hyperlink 2.2</a></li>
        </ul>
    </li>
    <li><a href="#">Hyperlink 3</a></li>
    <li><a href="#">Hyperlink 4</a></li>
    </ul>