Почему я не могу поместить выпадающее меню под кнопкой?

#html #css #button #drop-down-menu

#HTML #css #кнопка #выпадающее меню

Вопрос:

Я сейчас в таком отчаянии. Пробовал 2 дня, чтобы решить эту проблему, но все еще безрезультатно. Выпадающее меню не может быть правильно помещено под ситуацию и кнопку упражнения. Оно отображается в левой части панели навигации вместо нижней части кнопки, что может быть связано с тем, что я использовал float left в строке 19 CSS в fiddle:

 .navbar a,.sit,.exercise {
   float:left; 
}
  

класс «navbar» предназначен для всей панели навигации

класс «dropdown1» предназначен для следующего: класс «sit» предназначен для кнопки «ситуация», класс «situ» предназначен для выпадающего меню в «sit»

класс «dropdown2» предназначен для следующего: класс «exercise» предназначен для кнопки «exercise», класс «exec» предназначен для выпадающего меню в «exercise»

Я попытался поместить position: relative в класс «sit» и класс «exercise». Однако в результате в выпадающем меню появляется полоса прокрутки, и вам нужно прокрутить ее вниз, чтобы увидеть все меню. Позиция даже не меняется!

вот код в fiddle https://jsfiddle.net/zo0raL86 /

Я ожидаю, что выпадающее меню может отображаться под правой кнопкой. Очень надеюсь, что вы сможете протянуть мне руку помощи! Большое вам спасибо

Ответ №1:

Ваша основная проблема в том, что вы установили все свои значения с плавающей точкой для дочерних элементов, которые вы на самом деле хотите использовать. Например: у вас есть

 .navbar a,.sit,.exercise {
    float:left;
    width: 32.78%;
}
  

В то время как значение float:left; и ширина должны быть на их родительских элементах .i3 , .dropdown1 и .dropdown2 вот так …

 .i3,
.dropdown1,
.dropdown2 {
    width: 33.333%;
    float: left;
}
  

Это решит основы вашей проблемы и проблему дополнительной ширины, которую вы выразили в своей скрипке.

Еще лучше установить ширину .sit и .exercise на 100%.

Я обновил вашу скрипку здесь, чтобы вы могли видеть код на месте.

Комментарии:

1. это работает!! Большое вам спасибо!!! Не знаю, как выразить, насколько я благодарен!! Думаю, мне действительно нужно больше сосредоточиться на отношениях между родительскими и дочерними элементами. Спасибо!!!

Ответ №2:

Добавьте это в свою таблицу стилей:

 .navbar > div{
  display: inline-block;
  width: 32.78%;
}
  

Затем добавьте несколько пикселей к top значению .situ и .exec тогда оно будет отображаться прямо под кнопкой.

Я также обновил ваш html.

 <div class="navbar">
   <div class="i3">
     <a href="About.asp">About</a>
   </div>

   <div class="dropdown1">    
    <a href="#">Situation
      <div class="situ">
        <a href="situation1.asp">s1</a>
        <a href="situation2.asp">s2</a>
        <a href="situation3.asp">s3</a>
      </div>       
    </a>
   </div>

   <div class="dropdown2">
    <a href="#">Exercise
      <div class="exec">
        <a href="exercise1.asp">e1</a>
        <a href="exercise2.asp">e2</a>
        <a href="exercise3.asp">e3</a>
      </div>       
    </a>
   </div>     
</div>
  

Удалите bottom значение из выпадающих списков и добавьте

 .situ, .exec{
  top: 123px;
}
  

Значение должно быть суммой ваших margin-top и height , чтобы плавно вписываться в навигацию.

Комментарии:

1. большое спасибо за ответ! Я добавил код, однако результат все еще немного отличается от моих ожиданий …… Я ожидаю, что выпадающее меню отображается прямо под кнопкой, но теперь оно отображается поверх кнопки… вот исправленный код jsfiddle.net/o0dc4wL8 добавьте код, который вы предоставили, и нижнее значение. место и верхнее значение в .exec. Выпадающее меню, в которое было добавлено нижнее значение, находится немного в стороне от кнопки. Я действительно благодарен за вашу помощь!!