2017-06-22 38 views
5

Próbuję zrobić prosty projekt z flexbox, ale mam problem z IE11. Zasadniczo chcę stopki, która trzyma się dna tylko wtedy, gdy zawartość nie jest wystarczająco wysoka. Nie mam problemu z Chrome że robi tak:Flexbox, min-height i IE11

*, 
 
*:after, 
 
*:before { 
 
    box-sizing: border-box; 
 
} 
 

 
html, 
 
body { 
 
    height: 100%; 
 
    margin: 0; 
 
    padding: 0; 
 
} 
 

 
body { 
 
    display: flex; 
 
    flex-direction: column; 
 
} 
 

 
main { 
 
    flex: 1; 
 
}
<header> 
 
    Header 
 
</header> 
 
<main> 
 
    <p>Main</p> 
 
    <p>Main</p> 
 
    <p>Main</p> 
 
    <p>Main</p> 
 
    <p>Main</p> 
 
</main> 
 
<footer> 
 
    Footer 
 
</footer>

prostu grać z numerem <p>main</p> zobaczyć niewłaściwego zachowania z IE11.

Czy istnieje sposób na osiągnięcie tego bez JavaScript?

+0

nie działa. W takim przypadku "Stopka" pojawia się bezpośrednio pod "Nagłówkiem" na górze "Główne". – ssougnez

+0

Ach tak tak, możesz po prostu zmienić flex: 1, aby się rozwijać: 1 i to powinno działać – Pete

Odpowiedz

5

IE ma min-height błąd i potrzebuje display: flex na flex kontenerów kolumna rodzic, w tym przypadku html

Fiddle demo

Aktualizacja CSS jak ten

*, 
 
*:after, 
 
*:before { 
 
    box-sizing: border-box; 
 
} 
 
html, body { 
 
    margin: 0; 
 
    display: flex; 
 
} 
 
body { 
 
    flex-direction: column; 
 
    min-height: 100vh; 
 
} 
 
main { 
 
    flex-grow: 1; 
 
}
<header> 
 
    Header 
 
</header> 
 
<main> 
 
    <p>Main</p> 
 
    <p>Main</p> 
 
    <p>Main</p> 
 
    <p>Main</p> 
 
    <p>Main</p> 
 
</main> 
 
<footer> 
 
    Footer 
 
</footer>

+0

Działa dobrze, dzięki – ssougnez

+0

Błąd 'min-height' nie był problemem w tym przypadku. Ale 'flex-grow: 1' robi lewę, ponieważ po usunięciu' flex: 1' resetuje 'flex-basis' do domyślnego' auto'. –

+1

@Michael_B Pomyślałem o tym właśnie teraz, po twoim komentarzu w odpowiedzi, dzięki jeszcze raz – LGSon

2

Na main, zamiast flex: 1 użyj flex: auto. To powinno być wszystko, czego potrzebujesz.


flex: 1 skrótowym reguła załamuje się:

  • flex-grow: 1
  • flex-shrink: 1
  • flex-basis: 0

flex: auto skrótowym reguła załamuje się:

  • flex-grow: 1
  • flex-shrink: 1
  • flex-basis: auto

IE ma problemy z parsowania flex-basis: 0.

Więcej informacji:

+0

To też działa .. + 1. Nadal jednak w jaki sposób 'flex: auto' zmienia się w' 1 1 auto', gdy domyślną wartością jest '0 1 auto'? – LGSon

+0

@LGSon, https: //www.w3.org/TR/css-flexbox-1/# flex-common –

+1

Aha, dziękuję .... naprawdę to przegapiłem wcześniej, uważam, że zmieniło to tylko podstawę elastyczną (należę do starszego pokolenia i nie czytamy podręczników :) – LGSon