2014-02-03 3 views
2

Почему мой контейнер не является цвет фона красным, а ul не находится внутри контейнера div?ul не находится внутри контейнера div

СТИЛЬ:

#container { 
      width:1000px 
      } 

#categoryorder { 
      float:left; 
      width:500px; 
      margin:0 0 0 50px; 
      display:inline; 
      list-style-type:none 
} 

#categoryorder li { 
      color:#003366; 
      font-size:20px; 
      float:left; 
      width:196px; 
      background-color:#fcfcfc; 
      border: 2px solid #dddddd; 
      margin:0 50px 50px 0; 
      line-height:50px; 
      text-align:center; 
      display:inline; 
      cursor:move 
} 

HTML:

<div id="container" style="background-color: red;"> 
    <ul id="categoryorder"> 
     <li id="ID_1">1</li> 
     <li id="ID_2">2</li> 
     <li id="ID_3">3</li> 
     <li id="ID_4">4</li> 
     <li id="ID_5">5</li> 
     <li id="ID_6">6</li> 
     <li id="ID_7">7</li> 
     <li id="ID_8">8</li> 
    </ul> 
</div> 
+1

Jsfiddle Пожалуйста .. –

+0

HTTP: //jsfiddle.net/vrVAP/84/ –

ответ

8

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

HTML

<div id="container" style="background-color: red;"> 
    <ul id="categoryorder"> 
     <li id="ID_1">1</li> 
     <li id="ID_2">2</li> 
     <li id="ID_3">3</li> 
     <li id="ID_4">4</li> 
     <li id="ID_5">5</li> 
     <li id="ID_6">6</li> 
     <li id="ID_7">7</li> 
     <li id="ID_8">8</li> 
    </ul> 
    <div class="clr"></div> 
</div> 

CSS

.clr{ 
    clear:both; 
    font-size:0; 
} 

JSFiddle

+1

Это правильный ответ - однако вы должны использовать методы clearfix, определенные в этой статье http://css-tricks.com/snippets/css/clear-fix/, как добавление пустых Элементы 'div' только для очистки поплавков - это плохая практика. – ninty9notout

+1

@ ninty9notout - Почему это правильный ответ? Дополнительный div абсолютно не нужен. – j08691

+0

@ j08691 так было, как вы делали clearfix в старые добрые времена, перед псевдоэлементами, поэтому это правильный ответ. Я также упомянул, что это плохая практика, которая заботится о ненужном аргументе и дает ссылку на ресурс, который предоставляет способы очистки clearfix в современных браузерах. – ninty9notout

5

Когда вы плывете детей вы существенно удалить их из потока документа и элемента контейнера высота не сжимается. Добавьте overflow:auto; в ваш #container div, чтобы восстановить поведение, которое вы ищете.

#container { 
    width:1000px; 
    overflow:auto; 
} 

jsFiddle example

Обратите внимание, что этот ответ не требует каких-либо дополнительных (несемантических) дивы, чтобы получить желаемый результат.

1

Измените свой float:left на display:inline-block;

Css:

#categoryorder { 
    width:500px; 
    margin:0 0 0 50px; 
    display:inline-block; /*from float:left; to display:inline-block; */ 
    list-style-type:none; 
} 

DEMO

3

Вы плывут ваши элементы и нужно добавить overflow: hidden к вашему родительскому контейнеру, чтобы восстановить высоту. Используйте это, и вам не нужно добавлять дополнительный div в поток.

#container { 
      width:1000px; overflow: hidden; 
      } 

http://jsfiddle.net/saUp7/1/

+0

Наконец-то я понял, почему мой плавающий контент сделал содержащий DIV сжатие ... :-) Но в чем разница между использованием переполнения: скрытым или автоматическим? Он также работает с авто в соответствии с ответом @ j08691. – Fabricio

+1

, в этом случае они действуют одинаково и просто очищают поплавки, скрытые переполнения скрывают дополнительный контент, но только при фиксированной высоте набора – user934902

1

Просто используйте дисплей: встроенный блок вместо этого (и добавить вертикальное выравнивание: сверху для лучшего взгляда).

Float предназначен для резания блока из потока, поэтому для него характерно нормальное поведение: у вас нет неплавающих блоков внутри, поэтому поток почти ничего не стоит.

Инлайн-блоки в потоке, поэтому он будет работать.

И только один трюк для встроенных блоков: помните пространства!Если они находятся в источнике, там будут небольшие поля внутри блоков, так что просто комментировать ваши отступы

  • что-то
  • другой
  • (смотреть до источника)

    Смежные вопросы