2016-11-11 10 views
5

Wygląda na to, że wystąpił błąd w obliczaniu właściwości wielu kolumn css, obecnych we wszystkich przeglądanych przeze mnie przeglądarkach (najnowszy Chrome, IE11 i Firefox). Jeśli masz 9 pozycji na liście i próbujesz podzielić je na 4 kolumny, ostatnia kolumna jest zawsze pusta.Układ wielu kolumn CSS: niepoprawne dzielenie kolumn

Czy są jakieś obejścia, coś, co je podzieli 3/2/2/2? Z góry dziękuję.

ul { 
 
    -moz-column-count: 4; 
 
    -webkit-column-count: 4; 
 
    column-count: 4; 
 
    background-color: gray; 
 
} 
 
li { 
 
    background-color: tomato; 
 
}
<ul> 
 
    <li>item</li> 
 
    <li>item</li> 
 
    <li>item</li> 
 
    <li>item</li> 
 
    <li>item</li> 
 
    <li>item</li> 
 
    <li>item</li> 
 
    <li>item</li> 
 
    <li>item</li> 
 
</ul>

+0

Numer kolumny dokładnie jest 4 ale minimalna pozycja na kolumnie znajduje się 3 pozycji, więc jeśli dodać jeszcze jeden 'li', to pokaże w ostatnia kolumna –

+0

9% 4! = 0. Zasadniczo, dlaczego to powinno działać? Czego się spodziewałeś? –

+0

nie chodzi o obliczenie jej o wysokości kolumny, gdy jedna kolumna ma 3 pozycje, inne też tworzą przestrzeń dla innego –

Odpowiedz

0

Użyj tego:

.keeptogether{ 
display:inline-block; 
width:100% 
} 

ul { 
 
    -moz-column-count: 4; 
 
    -webkit-column-count: 4; 
 
    column-count: 4; 
 
    background-color: gray; 
 
} 
 
li { 
 
    background-color: tomato; 
 
} 
 
.keeptogether { 
 
    display: inline-block; 
 
    width: 100% 
 
}
<ul> 
 
<div class="keeptogether"> 
 
    <li>item</li> 
 
    <li>item</li> 
 
    <li>item</li> 
 
</div> 
 
<div class="keeptogether"> 
 
    <li>item</li> 
 
    <li>item</li> 
 
</div> 
 
<div class="keeptogether"> 
 
    <li>item</li> 
 
    <li>item</li> 
 
</div> 
 
<div class="keeptogether"> 
 
    <li>item</li> 
 
    <li>item</li> 
 
</div> 
 
</ul>

1

http://caniuse.com/#feat=multicolumn

Wygląda na to, że kolumna- * ma wiele problemów z różnymi przeglądarkami. W twoim przykładzie, jeśli dodałeś jeszcze 1 element li, zobaczysz, że wypełni się on w czwartej kolumnie. Domyślam się, że jest to kwestia podzielności.

1

Działa w ten sam sposób, w jaki powinien działać, jest wystarczająco dużo miejsca w 3 kolumnach na 9 elementów, dlatego nie wchodzi w czwartą, zmniejsza wysokość, a zostanie podzielony na więcej kolumn. lub dodać więcej li że pójdzie w 4 kolumnie

ul { 
 
    -moz-column-count: 4; 
 
    -webkit-column-count: 4; 
 
    column-count: 4; 
 
    background-color: gray; 
 
    height:50px; 
 
} 
 
li { 
 
    background-color: tomato; 
 
}
<ul> 
 
    <li>item</li> 
 
    <li>item</li> 
 
    <li>item</li> 
 
    <li>item</li> 
 
    <li>item</li> 
 
    <li>item</li> 
 
    <li>item</li> 
 
    <li>item</li> 
 
    <li>item</li> 
 
</ul>

+0

Problem polega na tym, że potrzebuję wysokości dynamicznej, na przykład, jeśli więcej elementów zostanie dodanych w linii. –

+0

Wtedy nie powinno być problemu. Kolumna będzie działać poprawnie. –

+0

@downvoter! Wyjaśnij swoje zdanie, aby poprawić odpowiedź. –