2013-02-04 6 views
9

Obecnie pracuję nad dużą formularną z wieloma polami wyboru. Czy istnieje sposób wyświetlenia ich jako siatki, np. 4 kolumny?Rozmieść wiele pól wyboru, takich jak siatka. Bez tabel?

Wiem, że można to zrobić za pomocą tabel, ale nie chcę ich używać do stylu, jeśli nie jest to konieczne. Czy jest jakiś sposób na CSS?

Przykład:
[] tekst [] tekst [] tekst [] tekst
[] tekst [] tekst [] tekst [] tekst
...

Odpowiedz

29

Oto rozwiązanie, z pełną znaczników wyboru i CSS, a przykład pracy.

HTML

<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> 

CSS

.checkbox-grid li { 
    display: block; 
    float: left; 
    width: 25%; 
} 

Zapoznaj się z przykładem pracuje tutaj: http://jsfiddle.net/FmV9k/

+0

Zmiana wyświetlania na blok jest niepotrzebna w przypadku unoszenia się, ponieważ zmienna automatycznie zmienia właściwość wyświetlania elementu. – cimmanon

+1

To może być prawda, jednak chciałbym upewnić się, że element jest właściwie ustawiony na blok na wszelki wypadek. Biorąc pod uwagę moje doświadczenia z opracowywaniem dla IE, lepiej być konkretnym, jeśli chodzi o te rzeczy. – Axel

+0

Gotowy! thx do was wszystkich :) – h3ader

-1

Można pływać pola wyboru i dać każdy o szerokości 25% kontenera nadrzędnego.

+0

Nie powinieneś ich najpierw owijać? – Vogel612

3

Spróbuj 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%; 
} 
1

Można oczywiście użyć div i takie, aby to zrobić, nie bój stołów chociaż. Mają stosowne aplikacje i powinieneś ich używać, jeśli to, co próbujesz zrobić, gwarantuje ich używanie.

Oto div rozwiązanie oparte na CSS: 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; 
} 
+1

Tabele służą do tabelarycznych danych, a nie do struktury treści.Zatem użycie tabeli dla tego żądania nie ma sensu semantycznie. – Axel

3

Właściwość kolumny jest dobrym wyborem dla tego zadania, ponieważ można sprawiają, że reaguje bardzo łatwo.

http://jsfiddle.net/FmV9k/1/ prefiksy (brak w zestawie)

.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> 

Mamy określone 4 kolumny, ale muszą być minimum 8em szerokości. Jeśli nie ma wystarczająco dużo miejsca dla wszystkich 4 kolumn, to usunie kolumny, jeśli to konieczne, aby zapewnić minimalną szerokość.

+0

Kolumny CSS3 nie są obsługiwane przez IE. http://msdn.microsoft.com/en-us/library/cc351024%28v=vs.85%29.aspx#multicolumn – Axel

+0

Teoretycznie tak, ale sprawdź [aktualną dostępność tego stylu] (http: // caniuse.com/multicolumn). – bishop

+0

Ta metoda jest preferowana, jeśli nie chcesz, aby twoje przedmioty były wąż od lewej do prawej, a następnie od góry do dołu. Spowoduje to umieszczenie elementów od góry do dołu, a następnie od lewej do prawej. – jaredbaszler