Способ удаления пространства между навигационной панелью и выпадающим меню

#html #css

Вопрос:

Я очень новичок в кодировании и работаю над вымышленным сайтом для ресторана. Кажется, я не могу понять, как удалить пробел между моим выпадающим меню и верхней панелью навигации в разделе меню. В идеале я бы хотел, чтобы розовое выпадающее окно находилось прямо под черной навигационной панелью. Есть какие-нибудь предложения по поводу того, что я сделал не так? Я повсюду играл с полями и отступами. Даже сделал отступ 0 и отступ 0 в начале моей страницы CSS, чтобы посмотреть, окажет ли это влияние, но этого не произошло.

Прилагается мой код для HMTL и CSS

 body {
background-color: #41393d;
}

/* Header */

.header {

width: 100%;
height: 50px;
display: block;
background-color: black;
}

.header_content {

width: 100%;
height: 100%;
display: block;
margin: 0 auto;
background-color: black;
}

.logo_container {

height: 100%;
display: table;
float: left;
}

.logo {

height: 100%;
display: table-cell;
vertical-align: middle;
} /* Navigation */

.navigation {

float: right;
height: 100%;
} .navigation li {

float: left;
height: 100%;
display: table-cell;
padding: 0px 20px;
position: relative;
}

a:hover {

color: #8a8c8f !important;
} .navigation li a {

display: inline-block;
vertical-align: middle;
height: 100%;
color:#BE1E2D;
font-family: athelas, 
serif; font-style:normal;
text-decoration: none;
} .sub_menu1 {

display: none;
}

.navigation li:hover .sub_menu1 {

display: block;
position: absolute;
background: #d4a18d;
} .navigation li:hover .sub_menu1 ul {

display: inline-block;
margin: 0%;
padding: 0%;
text-align: center;
}

.navigation li:hover .sub_menu1 ul li {

padding: 5px;

} 
 <!DOCTYPE html>
TOWN_Restaurant` <header>
            <div class="header">
                    <div class="header_content">
                            <div class="logo_container">
                                    <img alt="TOWN logo" id="image" class="logo" src="images/town_logo.png">
                            </div>`
             <ul class="navigation">
                                <li><a href="index.html">Home</a></li>
                                <li><a href="our_story.html">Our Story</a></li>
                                <li><a href="#">Menu</a>
                                        <div class="sub_menu1">
                                                <ul>
                                                        <li><a href="menu.html">Cuisine</a></li>
                                                        <li><a href="menu_2.html">Beverages</a></li>
                                                </ul>

                                        </div>
                                </li>
                                <li><a href="contact.html">Contact</a></li>
                                <li><a href="reservations.html">Reservations</a></li>

                        </ul>
                </div>

        </div>

</header> 

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

1. добавьте html-код верхней панели навигации

2. Привет, часть вашего html-кода отсутствует, нам это нужно, чтобы помочь вам с вашим вопросом

3. Так странно! Это видно с моей стороны. Я не могу понять, как добавить его в исходный пост, но вот недостающая часть:<заголовок> <заголовок><класс div=»заголовок»> <класс div=»заголовок»><класс div=»заголовок»> <класс div=»заголовок»><класс div=»логоконтейнер»> <класс div=»логоконтейнер»><img alt=»Логотип ГОРОДА» id=»изображение» класс=»логотип» src=»изображения/town_logo.png»> <img alt=»Логотип ГОРОДА» id=»изображение» класс=»логотип» src=»изображения/town_logo.png»></div>

Ответ №1:

Проблема в том, что ваша навигационная <ul> система имеет запас 16 пикселей для верха и низа, в то время как высота составляет 100% от высоты родителя, которая составляет 50 пикселей, поэтому общая высота <ul> :

50 пикселей (высота родителя) 16 пикселей (верхнее поле) 16 пикселей (нижнее поле) = 82 пикселей

и это позволяет ему выбраться из заголовка, который имеет фиксированную высоту 50 пикселей. Чтобы это исправить, вам нужно

1-й: установите для поля навигации <ul> значение 0 и вместо этого используйте заполнение сверху на <li> s, а для их размера в рамке установите значение в поле границы, чтобы заполнение не влияло на высоту s. <li>

2-й: установите верхнюю часть своего «подменю1» на 100% (что в данном случае составляет 50 пикселей на дюйм [высота родителя]), и это приведет к выпадающему меню прямо под вашей навигацией.

и вот это работает:

 body {
  background-color: #41393d;
}


/* Header */

.header {
  width: 100%;
  height: 50px;
  display: block;
  background-color: black;
}

.header_content {
  width: 100%;
  height: 100%;
  display: block;
  margin: 0 auto;
  background-color: black;
}

.logo_container {
  height: 100%;
  display: table;
  float: left;
}

.logo {
  height: 100%;
  display: table-cell;
  vertical-align: middle;
}


/* Navigation */

.navigation {
  float: right;
  height: 100%;
  margin: 0;
}

.navigation li {
  float: left;
  height: 100%;
  display: table-cell;
  padding: 15px 20px;
  position: relative;
  box-sizing: border-box;
}

a:hover {
  color: #8a8c8f !important;
}

.navigation li a {
  display: inline-block;
  vertical-align: middle;
  height: 100%;
  color: #BE1E2D;
  font-family: athelas, serif;
  font-style: normal;
  text-decoration: none;
}

.sub_menu1 {
  display: none;
}

.navigation li:hover .sub_menu1 {
  display: block;
  position: absolute;
  background: #d4a18d;
  top: 100%;
}

.navigation li:hover .sub_menu1 ul {
  display: inline-block;
  margin: 0%;
  padding: 0%;
  text-align: center;
}

.navigation li:hover .sub_menu1 ul li {
  padding: 5px;
} 
 TOWN_Restaurant`
<header>
  <div class="header">
    <div class="header_content">
      <div class="logo_container">
        <img alt="TOWN logo" id="image" class="logo" src="images/town_logo.png">
      </div>`
      <ul class="navigation">
        <li><a href="index.html">Home</a></li>
        <li><a href="our_story.html">Our Story</a></li>
        <li><a href="#">Menu</a>
          <div class="sub_menu1">
            <ul>
              <li><a href="menu.html">Cuisine</a></li>
              <li><a href="menu_2.html">Beverages</a></li>
            </ul>

          </div>
        </li>
        <li><a href="contact.html">Contact</a></li>
        <li><a href="reservations.html">Reservations</a></li>

      </ul>
    </div>

  </div>

</header> 

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

1. Ух ты! Большое спасибо. Я бы никогда не узнал, что моя маржа <ul> была установлена на 16 пикселей. Это произошло автоматически, потому что я не ввел это в свой код. Смогли ли вы выяснить это путем проверки?

2. Да, <ul> по умолчанию принимает значение 1em. это означает, что в 1 раз больше вашего размера шрифта, а поскольку размер шрифта по умолчанию равен 16 пикселей, поэтому <ul>получает поле 16 пикселей. И да, мне пришлось проверить вашу навигацию, чтобы выяснить, в чем проблема, и оказалось, что вы забыли сбросить <ul>. Обычно, когда мы используем <ul>, мы сбрасываем его заполнение, поля и стиль списка.

3. Попался! Вы случайно не знаете, почему мой веб-сайт отображается по-разному в разных браузерах? Например, в Chrome и Firefox настроенный CSS отображается именно так, как я хочу, но в Safari все еще есть пробел.