2015-06-24 7 views
20

Stworzyłem listę z ikonami społecznościowymi. Te ikony powinny zawijać się na małych ekranach.Flexbox/IE11: flex-wrap: wrap nie oblewa się (Images + Codepen inside)

używam flex-wrap: wrap; i działa idealnie w Firefox i Chrome:

Chrome, Firefox

Ale Internet Explorer 11 (i IE 10) nie złamie linię:

IE 11

Pióro kodu Przykład

Zobacz kod tutaj: http://codepen.io/dash/pen/PqOJrG

HTML kod

<div> 
    <ul> 
    <li><a href="#"><img src="http://placehold.it/40x40" alt=""></a></li> 
    <li><a href="#"><img src="http://placehold.it/40x40" alt=""></a></li> 
    <li><a href="#"><img src="http://placehold.it/40x40" alt=""></a></li> 
    <li><a href="#"><img src="http://placehold.it/40x40" alt=""></a></li> 
    <li><a href="#"><img src="http://placehold.it/40x40" alt=""></a></li> 
    <li><a href="#"><img src="http://placehold.it/40x40" alt=""></a></li> 
    <li><a href="#"><img src="http://placehold.it/40x40" alt=""></a></li> 
    <li><a href="#"><img src="http://placehold.it/40x40" alt=""></a></li> 
    </ul> 
</div> 

kod CSS

body {background: #000;} 

div { 
    background: rgba(255, 255, 255, .06); 
    display: table; 
    padding: 15px; 
    margin: 50px auto 0; 
} 

ul { 
     display: -webkit-flex; 
     display: -ms-flexbox; 
    display: flex; 
     -webkit-flex-wrap: wrap; 
     -ms-flex-flow: row wrap; 
    flex-wrap: wrap; 
     -ms-flex-pack: center; 
     -webkit-justify-content: center; 
    justify-content: center; 
    list-style: none; 
    padding: 0; 
} 

li { 
    background: purple; 
    margin: 4px; 
} 

img { 
    display: block; 
    height: 40px; 
    padding: 7px; 
    width: 40px; 
} 

To wydaje się być IE bug, który pojawia się, gdy pojemnik rodzic Flex elementu jest ustaw na display: table;. Usunięcie tej linii rozwiązuje problem. Ale potrzebuję display: table; do wyśrodkowania kontenera nadrzędnego.

Jakieś pomysły, jak uzyskać IE11 do zawijania obrazów?

Odpowiedz

20

Spróbuj zdefiniować szerokość kontenera nadrzędnego, np. width: 20%;. W ten sposób kontener zostanie sformatowany według uznania, a funkcja Flex-wrap będzie działać. I tak, możesz usunąć display: table;.

+1

Chociaż to rozwiązanie nie jest w 100% doskonałe, ponieważ nie znam szerokości kontenera nadrzędnego, działa. Wielkie dzięki! – dash

+0

Tak, z procentami nie trzeba definiować jawnej szerokości, na przykład w pikselach, i lepiej zrobić to według wartości względnych. – jhorapb

+0

Wzdłuż tych samych linii można dodać szerokość maksymalną do elementu nadrzędnego, aby zawinąć ją w granicach układu. –