CSS Почему блоки div перекрываются?

Я пытаюсь создать отзывчивый веб-сайт, используя только CSS. .У меня есть контейнер, в котором есть весь код. Внутри у меня есть nav div и средний div. Контейнер позиционируется относительно, в то время как навигация и середина позиционируются абсолютно. Кроме того, немного странный вопрос, но в Internet Explorer (не судите) раскрывающееся меню раздела навигации открывается горизонтально, а не вертикально. Кажется, я не могу найти причину, по которой он это делает.

Вот код (мои оригинальные коды css были улучшены Крисом Хэппи из css- почему мой навигационный div и средний div перекрываются?)

div#Container
    {
      position: relative;
    }

    .nav
    {
      width: 100%;  
      position: absolute;
      background-color: white;  /*Code to add a white background to list*/
      padding: 15px;  
    }

      .nav a
          {
            color: #ffffff;
            text-decoration: none;
            background-color: #000000;
          }

          .nav ul
          {
            display:block;
          }

          .nav ul a
          {
            display: block;
            float:left;
            width: 150px;
            padding: 10px 20px;
            border: 1px solid #ffffff;
            text-align: center;
            font-size: 1.3em;
          }

          .nav ul a:hover
          {
            background: red;
          }

          .nav ul li
          {
            display: inline-block;
            vertical-align: top;
          }
          
          .nav ul ul li {  display: block;  }

          .nav ul li:hover > ul
          {
            display:block;
          }

          .nav ul li ul
          {
            margin:0;
            padding: 0;
            display: none;
            background-color: #000000;
            top: 45px;
           }

div#middle
 {
   position: absolute;
 }
<div id = "Container">
      <div class = "nav">
        <ul>
          <li><a href = "#">Home</a></li>
          <li><a href = "#">Cars</a></li>
          <li><a href = "#">Parts &amp; Tools</a>
            <ul>
              <li><a href = "#">Parts</a></li>
              <li><a href = "#">Tools</a></li>
            </ul>
          </li>
          <li><a href = "#">About</a></li>
          <li><a href = "#">Contact</a></li>
        </ul>
      </div>
      
      <div class = "middle">
        <p>text</p>
      </div>
     
    </div>

Так в чем же здесь настоящая проблема - не были ли ваши частично совпадающие проблемы не устранены с ответами на ваш предыдущий вопрос? Затем вам следует попытаться прояснить это с людьми, которые там ответили, а не создавать новый вопрос на ту же тему.

misorude 09.10.2018 13:14

Кроме того, поместите сюда HTML и CSS, которые принадлежат вместе, в один фрагмент кода - запускать каждый по отдельности в отдельных фрагментах довольно бессмысленно.

misorude 09.10.2018 13:15

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

Paprika 09.10.2018 13:16

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

Paprika 09.10.2018 13:22
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
0
4
53
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я не вижу HTML для среднего div, но абсолютная позиция означает фиксированную позицию относительно «фрейма» в вашем случае к div #container. Таким образом, div nav и средний div перекрываются, потому что они игнорируют друг друга и оба позиционируются относительно div #container. вы можете указать divs с фиксированной шириной и высотой, а также с фиксированным отступом, чтобы они не сталкивались. Пример:

.nav
{
position: absolute;
margin-top:  0;
margin-left: 0;
width: 300px;
}
.middle
{
position: absolute;
margin-top: 0;
margin-left: 300px;
}

Другой пример

<html>
<head>
</head>
<body>
<div style = "position: relative;border: solid;margin: 40px;height: 300px;">
<div style = "position: absolute; margin: 50px 100px; border: solid; width: 100px;height: 100px;">
</div>
<div style = "position: absolute; margin: 40px 90px; border: solid; width: 100px;height: 100px;">
</div>
</div>
</body>
</html>

О, теперь я понял. Спасибо! Что, если бы я хотел расположить середину относительно контейнера навигации, но при этом сохранить навигацию относительно контейнера? или это просто плохая практика веб-разработки?

Paprika 09.10.2018 13:50

Внутри вашего контейнера я бы использовал абсолютную позицию. Они по-прежнему «относительны» к контейнеру, но это все равно что добавить картинку в Word. В большинстве случаев все остальное происходит не так, потому что два div с относительной позицией делают позицию по отношению друг к другу и помещают каждый в новую строку. И имеет значение, является ли div 1 относительным или div 2. Так что не бездельничайте и дайте каждому четкую позицию.

Johnpc 09.10.2018 14:12

Другие вопросы по теме