Разрушение div после float css

У меня есть div, называемый NAV, и внутри NAV у меня есть UL с 5 ли, которые я плаваю влево, это то, что есть, но когда я это делаю, NAV рушится. Я знаю это, потому что я поставил рамку вокруг NAV, чтобы увидеть, не обрушится ли она, и это так. Вот пример.

свернуто http://img401.imageshack.us/img401/8867/collapsedze4.png

нет свернутого http://img71.imageshack.us/img71/879/nocollapsedkx7.png

как вы можете видеть на первом изображении, ссылки в блоке NAV смещены влево, а черная граница наверху - это фактический div, называемый NAV.

на этом изображении вы можете увидеть, как у него есть верхняя и нижняя границы, и он не свернулся.

вот некоторые из HTML и CSS, которые я использовал.

альтернативный текст http://img301.imageshack.us/img301/5514/codejc8.png

#nav #ulListNavi  a  {
    float: left;
}

Где вопрос? Я не нашел вопросительного знака и не понял вашего вопроса, если он есть.

Kevin Le - Khnle 16.12.2008 08:07

Хотя я получил ответ, который мне был нужен на этот «вопрос», мне было сложно читать.

Kit Roed 02.11.2011 23:44
Улучшение производительности загрузки с помощью 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 страниц, которые помогут...
18
2
40 408
9

Ответы 9

Попробуйте также переместить содержащий элемент влево.

добавьте этот код после вашего ul:

<div style = "clear: both"></div> 

Одним из решений является добавление стиля «clear: both» к элементу после последней плавающей привязки, например:

<div id = "nav">
  <ul id = "ulListNavi">
    <li><a href = "#">Home</a></li>
    <li><a href = "#">Search</a></li>
    <li><a href = "#">Flowers</a></li>
    <li><a href = "#">My Account</a></li>
    <li><a href = "#">Contact Us</a></li>
  </ul>
  <div style = "clear:both;"></div>
</div>

Это заставляет содержащий элемент очищать все плавающие элементы перед закрытием содержащего поля.

Вот еще несколько вариантов очистки поплавков:

http://www.quirksmode.org/css/clearing.html

http://www.sitepoint.com/blogs/2005/02/26/simple-clearing-of-floats/

Что касается лучшего способа сделать это, это почти священная война, пуристы будут волноваться из-за лишнего div, если вас не беспокоит небольшая дополнительная разметка, добавление очищенного div, предложенное Джошуа и AJ, будет работать нормально. , и это надежный метод, но есть как минимум 17 других способов сделать это ...

Добавьте в контейнер любое значение overflow, кроме visible:

div#nav { overflow:auto; }

Затем добавьте width, чтобы восстановить ширину

div#nav { width: 100%; overflow:auto; }

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

Bart 20.11.2009 18:57

@YuriKolovsky - Нет ничего идеального! Почему бы не добавить свой ответ? Но поторопитесь, ведь вопрос открыт уже 3 с половиной года ...

Ken 10.05.2012 15:43

@ Кен Так? Я нашел его только сейчас и хотел бы, чтобы другие люди, которые обнаруживают это сейчас, узнали о проблеме, лучше поздно, чем никогда.

Timo Huovinen 10.05.2012 17:08

@YuriKolovsky Извините, комментарий за три с половиной года был больше уколом user36682. А если серьезно, если у вас есть лучший ответ, вы должны добавить его (или отредактировать мой ответ, чтобы улучшить его) - это то, о чем все это место. :)

Ken 10.05.2012 21:51

Без изменения вашего HTML:

#nav
{
    width: 100%;
    overflow: auto;
    border: solid 1px red;
}
#ulListNavi
{
    margin: 0;
    padding: 0;
    list-style: none;
}
#nav #ulListNavi li
{
    float: left;
}
#nav #ulListNavi li a
{
    margin-left: 5px;
}

Работает в IE8 и FF 3.5

Не беспокойтесь об очистке элементов или переполнении. Добавь это:

#nav {
    float: left;
}

Когда вы размещаете LI, #nav больше ничего не "содержит", поэтому он сворачивается. Но если #nav также является плавающим, он содержит все, что находится внутри него, поэтому он снова расширяется.

(Также рассмотрите возможность удаления div #nav и просто применения тех же стилей к UL.)

Это лучший ответ. Плавать только внешний div. Нет смысла ставить якоря на воду. Хотя стоит упомянуть, что вопрос не иллюстрирует необходимость что-либо размещать.

Jason Capriotti 17.11.2010 21:00

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

Если вы запустите <LI>s, я думаю, вы решите свою проблему.

#nav #ulListNavi  li  {
    float: left;
}

Самым быстрым решением было бы добавить overflow: hidden, чтобы очистить float родительского элемента:

#nav{overflow:hidden;}

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