使用CSS对齐和正确定位子菜单

时间:2015-02-04 17:21:34

标签: html css

如何定位第一个度数菜单,使其在相应的菜单选项的底部完全弹出,因为它在右边约2个像素。问题是,如果我指定一定距离,例如" left:20px;",因为定位因子是绝对的,它会在水平方向上滚动所有页面,而不会停留在特定位置。

二度子菜单甚至最差。它显示距离菜单很远,位于节奏的底部,并且由于定位是相对的,我根本无法改变它的坐标。

以下是代码:

HTML

    <nav class="meniu">
        <ul>
        <li>option1</li>
        <li>option2
            <ul class="prezentare">
            <li class="prezentare">suboption2.1</li>        
            <li class="prezentare">suboption2.2</li>                
            </ul>
        </li>   
        <li>option3
            <ul class="resurse">
            <li class="resurse">suboption3.1</li>       
            <li class="resurse">suboption3.2
                <ul>
                <li>suboption3.2.1</li>
                <li>suboption3.2.2</li>
                <li>suboption3.2.3</li>
                </ul>
            </li>       
            <li class="resurse">suboption3.3</li>                   
            </ul>
        </li>
        <li>option4
            <ul class="oferta">
            <li class="oferta">suboption4.1</li>        
            <li class="oferta">suboption4.2</li>                
            </ul>
        </li>
        <li>option5</li>        
        <li>option6
            <ul class="activitati">
            <li class="activitati">suboption6.1
                <ul>
                <li>suboption6.1.1</li>
                <li>suboption6.1.2</li>
                </ul>           
            </li>       
            <li class="activitati">suboption6.2</li>                
            </ul>
        </li>   
        <li>option7</li>            
        </ul>
    </nav>

CSS

    nav.meniu
        {
        cursor: pointer;

        font-family: "Georgia";
        }

     li:hover
        {
        background-color: red;
        }

    /*meniu grad I*/
    ul 
        {
        display:inline;
        list-style:none;
        }

    ul li
        {
        padding: 5px;
        float: left;
        }

    /*First degree submenu*/
    ul li ul 
        {
        display: none;
        }

    ul li:hover ul 
        {
        display: block;
        position: absolute;
        margin: 0px;
        padding: 0px;
        top: 227px;
        font-size: 10px;
        }

    ul li ul li
        {
        background-color: white;
        }

    /*second degree submenu*/
    ul li ul li ul li
        { 
        display: none;
        }

    ul li ul li:hover  ul  li
        {
        display: block;
        right: -178px;
        top:-205px;
        }

    /*formating on elements*/
    .prezentare
        {
        width: 160px;
        }

.resurse
    {
    width: 110px;
    }

.oferta
    {
    width: 120px;   
    }

.activitati
    {
    width: 160px;   
    }

2 个答案:

答案 0 :(得分:0)

您必须相对于父position添加li,然后相应地设置子ul的定位。

&#13;
&#13;
   nav.meniu {
     cursor: pointer;
     font-family: "Georgia";
   }
   li:hover {
     background-color: red;
   }
   /*meniu grad I*/
   ul {
     display: inline;
     list-style: none;
   }
   ul li {
     padding: 5px;
     float: left;
     position: relative;
     /* sets the positioning context */
   }
   /*First degree submenu*/
   ul li ul {
     display: none;
   }
   ul li:hover ul {
     display: block;
     position: absolute;
     margin: 0px;
     padding: 0px;
     top: 100%;
     left: 0;
     font-size: 10px;
   }
   ul li ul li {
     background-color: white;
   }
   /*second degree submenu*/
   ul li ul li ul li {
     display: none;
   }
   ul li ul li:hover ul li {
     display: block;
     right: -178px;
     top: -205px;
   }
   /*formating on elements*/
   .prezentare {
     width: 160px;
   }
   .resurse {
     width: 110px;
   }
   .oferta {
     width: 120px;
   }
   .activitati {
     width: 160px;
   }
&#13;
<nav class="meniu">
  <ul>
    <li>Acasă</li>
    <li>Prezentare
      <ul class="prezentare">
        <li class="prezentare">Istoric</li>
        <li class="prezentare">Personalitatea "Ion Lovinescu"</li>
      </ul>
    </li>
    <li>Resurse
      <ul class="resurse">
        <li class="resurse">Echipa managerială</li>
        <li class="resurse">Profesori
          <ul>
            <li>Preşcolar</li>
            <li>Primar</li>
            <li>Gimnazial</li>
          </ul>
        </li>
        <li class="resurse">Baza materială</li>
      </ul>
    </li>
    <li>Oferta educaţională
      <ul class="oferta">
        <li class="oferta">Plan de şcolarizare</li>
        <li class="oferta">Cursuri opţionale</li>
      </ul>
    </li>
    <li>Proiecte</li>
    <li>Activităţi
      <ul class="activitati">
        <li class="activitati">"Ion Lovinescu", Rădăşeni
          <ul>
            <li>Parteneriate</li>
            <li>Excursii</li>
          </ul>
        </li>
        <li class="activitati">"Mihai Niculaiasa", Lămăşeni</li>
      </ul>
    </li>
    <li>Contact</li>
  </ul>
</nav>
&#13;
&#13;
&#13;

对于第三级菜单,您可能需要调整顶部/左侧值。

答案 1 :(得分:0)

不要使用绝对位置,使用位置相对。

 ul li:hover ul {
    position: relative;
 }