2015-09-21 15 views
24

Jaki jest prawidłowy CSS, aby zmusić Safari, aby nie nakładał się na elastyczne elementy w obrębie domyślnego kontenera elastycznego?Nakładające się elementy flexbox CSS w Safari

Safari wydaje się nadawać zbyt wiele szerokości, aby wygiąć elementy o dużej zawartości.

Safari: (v8.0.8 na Mac OS X 10.10.5 Yosemite)
flex-items-safari.png

Flex pozycje wyświetlane prawidłowo w Chrome i Firefox.

Chrome:
enter image description here


CSS:

main { 
    display: flex; 
    border: 3px solid silver; 
    } 
main >div { 
    background-color: plum; 
    margin: 10px; 
    } 


HTML:

<main> 
    <div> 
     Doh!!!!!!!!!!! 
    </div> 
    <div> 
     Lorem ipsum dolor sit amet, consectetur adipiscing 
     elit, sed do eiusmod tempor incididunt ut labore et 
     dolore magna aliqua. Ut enim ad minim veniam. 
    </div> 
</main> 

Fiddle kodem:
http://jsfiddle.net/LL05grus/6

+0

Wygląda na to, że problem został rozwiązany. Testowany z ** Safari 10.0 ** na ** macOS 10.12 Sierra **. –

Odpowiedz

35

element maleje. Musisz ustawić właściwość flex-shrink na 0 na kurczącym się elemencie.

main >div:first-child { 
    -webkit-flex: 0; 
    flex-shrink: 0; 
} 
+3

To było naprawdę pomocne! Jednak musiałem iść z flex: 0 0 auto, aby rozwiązać problem po mojej stronie. – Gabin

+0

Miał ten sam problem, jeden z elementów flex nie dostał wystarczająco dużo miejsca na safari mobilne. Wydaje się, że rozwiązuje to dla mnie. Dzięki – Springrbua

+6

Możesz również dodać "flex-shrink: 0;" do elementu, który zapobiega zmniejszaniu się jego minimalnego rozmiaru. – Max

0

Ja także miałem podobny problem, gdzie Flex kierunek pudełko zmieniona na kolumnie pokrywały przedmioty na iPadzie. Problem dotyczył właściwości flex: 0 1 0; zastosowanej do elementu potomnego. Podaj wartość bazową auto. flex: 0 1 auto;

.parent{ 
    display: flex; 
    flex-direction: column; 
} 
.parent .child{ 
    flex: 0 1 auto; 
} 
Powiązane problemy