SOYEZ PRUDENT
Dans certains navigateurs :
flex:1;
ne équivaut pas à flex:1 1 0;
flex:1;
= flex:1 1 0n;
(où n est une unité de longueur).
- flex-grow : un nombre spécifiant combien l'élément va croître par rapport au reste des éléments flexibles.
- flex-shrink : un nombre spécifiant combien l'élément va rétrécir par rapport au reste des éléments flexibles.
- flex-basis : la longueur de l'élément. Valeurs légales : "auto", "inherit", ou un nombre suivi de "%", "px", "em" ou toute autre unité de longueur.
Le point clé ici est que flex-basis nécessite une unité de longueur.
Dans Chrome par exemple, flex:1
et flex:1 1 0
produisent des résultats différents. Dans la plupart des circonstances, il peut sembler que flex:1 1 0;
fonctionne, mais examinons ce qu'il se passe réellement :
EXEMPLE
Flex-basis est ignoré et seul flex-grow et flex-shrink sont appliqués.
flex:1 1 0;
= flex:1 1;
= flex:1;
Cela peut sembler correct à première vue, cependant, si l'unité appliquée du conteneur est imbriquée, attendez-vous à l'inattendu !
Essayez cet exemple dans CHROME
.Wrap{
padding:10px;
background: #333;
}
.Flex110x, .Flex1, .Flex110, .Wrap {
display: -webkit-flex;
display: flex;
-webkit-flex-direction: column;
flex-direction: column;
}
.Flex110 {
-webkit-flex: 1 1 0;
flex: 1 1 0;
}
.Flex1 {
-webkit-flex: 1;
flex: 1;
}
.Flex110x{
-webkit-flex: 1 1 0%;
flex: 1 1 0%;
}
FLEX 1 1 0
FLEX 1
FLEX 1 1 0%
MISE À JOUR 2021
Les dernières versions de tous les principaux navigateurs semblent implémenter flex: 1
et se conformer à la norme W3C. Cela a été vérifié sur Chrome, Opera, Edge, Firefox, Safari, Chromium et quelques variantes de Chromium comme Brave sur macOS, Windows, Linux, iOS et Android. Lorsqu'on a tenté de tester dans Internet Explorer, le navigateur Edge a été chargé de force sur Windows 10.
Si vous vous attendez à ce que les utilisateurs continuent d'utiliser des versions plus anciennes de navigateur, alors l'ajout d'unités est plus sûr.
2 votes
En citant w3schools.com, "La propriété flex est un raccourci pour les propriétés flex-grow, flex-shrink et flex-basis".