#html #css
#HTML #css
Вопрос:
У меня есть эта разметка:
div#wrapper
ul#container1
li#box1
li#box2
li#box3
ul#container2
li#box4
li#box5
li#box6
Ширина экрана достаточна для отображения 5 полей в одной строке, но весь контейнер 2 находится ниже контейнера 1, когда я плаваю, покидая uls
Как я могу заставить первую строку на экране отображать поля с 1 по 5, а вторую строку — поле 6 (как если бы все lis находились внутри одного контейнера и перемещались влево), сохраняя lis внутри двух разных контейнеров?
Спасибо
Комментарии:
1. можете ли вы показать свой код для деталей
2. Указываете ли вы заполнение для ul#container1?
3. @kapillohakare: нет, нет заполнения
4. Можете ли вы отредактировать разметку?
Ответ №1:
Укажите ul
элементы display: inline
и li
элементы display: inline-block
Смотрите здесь: http://jsfiddle.net/hW7Aj/1 /
HTML
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
</ul>
<ul>
<li>4</li>
<li>5</li>
<li>6</li>
</ul>
CSS
ul {
display: inline;
}
li {
display: inline-block;
width: 80px;
border: 1px solid black;
}
Комментарии:
1. Работает нормально, но как насчет более широких экранов? Тогда 6-й li также переместится в верхнюю «строку».
2. @RunningTurtle Добро пожаловать! 🙂 @-KyleSevenoaks Я думаю, это то, о чем просил OP, не так ли?
Ответ №2:
Для html:
<div>
<ul class="li1">
<li>c</li>
<li>c</li>
<li>c</li>
</ul>
<ul class="li1">
<li>c</li>
<li>c</li>
<li id="last">c</li>
</ul>
</div>
CSS:
.li1 {
display: inline;
}
#last {
clear: both;
}
li {
display: inline;
float: left;
}
Комментарии:
1. Почему у вас должно быть отображение inline и float слева? одно или другое должно подойти.
2. Вашему CSS-селектору:
li {display: inline; float: left;}
не нужны оба параметра float: left; и display: inline; Выберите один 🙂3. Да, мы можем использовать display: inline один раз, но требуется float: left.
Ответ №3:
Вероятно, с такой разметкой вы не сможете этого сделать, потому что, если вы перемещаетесь ul
и li
влево, у вас будет каждый ul
контейнер с плавающими элементами, и у вас недостаточно места для размещения 2 плавающих ul
элемента. Вот почему вы перенесли вторую ul
строку в новую.
Вы можете решить эту проблему, поместив все плавающие элементы в один контейнер.
Ответ №4:
Вам нужны два правила CSS:
ul.second li:nth-child(3)
{
clear: both;
}
li {
float: left;
}
HTML
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
</ul>
<ul class="second">
<li>4</li>
<li>5</li>
<li>6</li>
</ul>
Это один из способов сделать это, используя удивительный псевдоселектор n-го дочернего элемента.
Если вам нужно поддерживать IE, вы можете изменить добавить класс в последний li
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
</ul>
<ul<
<li>4</li>
<li>5</li>
<li class="myLi">6</li>
</ul>
и измените CSS соответствующим образом:
li.myLi {
clear: both;
}
li {
float: left;
}