Упорядочить несколько флажков, например, сетку. Без таблиц?
В настоящее время я работаю над большим составом с большим количеством флажков.
Есть ли способ показать их как сетку, например. 4 столбца?
Я знаю, что вы можете делать это с помощью таблиц, но я действительно не хочу использовать их для стилизации вещей, если это действительно не нужно. Итак, есть ли способ с CSS?
Пример:
[] текст [] текст [] текст [] текст
[] текст [] текст [] текст [] текст
...
Ответы
Ответ 1
Вот решение с полной разметкой флажка и CSS, а также рабочий пример.
.checkbox-grid li {
display: block;
float: left;
width: 25%;
}
<ul class="checkbox-grid">
<li><input type="checkbox" name="text1" value="value1" /><label for="text1">Text 1</label></li>
<li><input type="checkbox" name="text2" value="value2" /><label for="text2">Text 2</label></li>
<li><input type="checkbox" name="text3" value="value3" /><label for="text3">Text 3</label></li>
<li><input type="checkbox" name="text4" value="value4" /><label for="text4">Text 4</label></li>
<li><input type="checkbox" name="text5" value="value5" /><label for="text5">Text 5</label></li>
<li><input type="checkbox" name="text6" value="value6" /><label for="text6">Text 6</label></li>
<li><input type="checkbox" name="text7" value="value7" /><label for="text7">Text 7</label></li>
<li><input type="checkbox" name="text8" value="value8" /><label for="text8">Text 8</label></li>
</ul>
Ответ 2
Попробуйте ul li
<div>
<ul class="chk">
<li>checkbox</li>
<li>checkbox</li>
<li>checkbox</li>
<li>checkbox</li>
<li>checkbox</li>
<li>checkbox</li>
<li>checkbox</li>
<li>checkbox</li>
</ul>
</div>
.chk
{
width:100%;
}
.chk li
{
display:inline-block;
width:25%;
}
Ответ 3
Свойство columns является прекрасным выбором для этой задачи, так как вы можете легко реагировать на него.
http://jsfiddle.net/FmV9k/1/ (префиксы не включены)
.checkboxes {
columns: 4 8em;
}
<ul class="checkboxes">
<li><label><input type="checkbox" name="text1" value="value1" />Text 1</label></li>
<li><label><input type="checkbox" name="text2" value="value2" />Text 2</label></li>
<li><label><input type="checkbox" name="text3" value="value3" />Text 3</label></li>
<li><label><input type="checkbox" name="text4" value="value4" />Text 4</label></li>
<li><label><input type="checkbox" name="text5" value="value5" />Text 5</label></li>
<li><label><input type="checkbox" name="text6" value="value6" />Text 6</label></li>
<li><label><input type="checkbox" name="text7" value="value7" />Text 7</label></li>
<li><label><input type="checkbox" name="text8" value="value8" />Text 8</label></li>
</ul>
Мы указали 4 столбца, но они должны быть как минимум в 8 раз. Если для всех 4 столбцов недостаточно места, то при необходимости они будут удалять столбцы, чтобы обеспечить минимальную ширину.
Ответ 4
Попробуйте "float:left;display:table-cell
" и псевдокласс ":nth-child
" и "float:none
"
проверьте это: http://jsfiddle.net/7gdgQ/1/ (прокомментировано)
И удачи!
Ответ 5
Конечно, вы можете использовать div и такие, чтобы не делать этого, не бойтесь таблиц. У них есть соответствующие приложения, и вы должны использовать их, если ваши попытки сделать это оправдано.
Вот решение css на основе div: http://jsfiddle.net/XugFX/
HTML
<div class="row">
<div class="col"><input type="checkbox" /><label>Box 1</label></div>
<div class="col"><input type="checkbox" /><label>Box 2</label></div>
<div class="col"><input type="checkbox" /><label>Box 3</label></div>
<div class="col"><input type="checkbox" /><label>Box 4</label></div>
</div>
<div class="row">
<div class="col"><input type="checkbox" /><label>Box 5</label></div>
<div class="col"><input type="checkbox" /><label>Box 6</label></div>
<div class="col"><input type="checkbox" /><label>Box 7</label></div>
<div class="col"><input type="checkbox" /><label>Box 8</label></div>
</div>
CSS
.row {
border: 1px solid red;
overflow: hidden;
padding: 5px;
}
.col {
border: 1px solid blue;
float: left;
padding: 5px;
margin-right: 5px;
}
Ответ 6
Вы можете поместить флажки и дать каждой ширине 25% родительского контейнера.