28111 sujets

CSS et mise en forme, CSS3

Bonjour j'utilise flex mais apparemment je ne peut l'utilisé que pour les balises enfants.

Si je veux l'utiliser pour des balises petits-enfants et bien je suis obligé de redéclarer flex, dans sa balise parente.
Y a t-il un moyen d'évité de redéclarer flex à chaque fois qu'on veux agencé des balises petits-enfants ?

Je donne un exemple ou si je ne redéclare pas flex et bien les div qui contiennent test1 et test2 ne peuvent pas être manipulées par flex.

        <div id=parent>
          <div id=enfant>Balise enfant 1
            <div>test1</div>
            <div>test2</div>
          </div>
          <div>Balise enfant 2</div>
          <div>Balise enfant 3</div>
        </div>



#parent{
  display: flex;
  flex-direction: column;
}

#enfant{
/*Ici flex-direction ne marche pas,*/
/*je suis obligé de rajouter display: flex;*/
  flex-direction: column; 
}

Merci.
Administrateur
Bonjour,

Je confirme : Flexbox fonctionne sur un modèle Parent-Enfants (et non petits-enfants).

Il faut en effet répéter display: flex (ou display: inherit) pour qu'un Flex-item devienne lui-même un Flex-container.

Bonne journée !
Meilleure solution
Je pense que c'est pas une bonne idée de faire cela mais je suppose que ceci fonctionnerai :

#parent, #parent *{
  display: flex;
}
Administrateur
bacasable a écrit :
Je pense que c'est pas une bonne idée de faire cela mais je suppose que ceci fonctionnerai :

#parent, #parent *{
  display: flex;
}

Je ne le conseillerai pas car cela aurait d'énormes conséquences, c'est un peu comme forcer tous les éléments de la page à devenir des display block (les <a>, les <span>, les icônes, les images, etc.), sauf qu'en plus tu crées un Flexbox Formating Context sur tous les éléments.