/ / Flexbox et positionnement absolu ne fonctionnant pas dans Chrome et Safari - html, css, css3, flexbox, position css

Flexbox et positionnement absolu ne fonctionnant pas dans Chrome et Safari - html, css, css3, flexbox, position css

J'ai une classe de boutons avec les styles suivants:

.button {
align-items: center;
background-color: #fff;
border: 2px solid;
border-color: #f48120;
color: #f48120;
cursor: pointer;
display: inline-flex;
font-size: 20px;
font-weight: bold;
justify-content: center;
margin-bottom: 5px;
padding: 3px 10px;
position: relative;
text-transform: lowercase;
}

.button::after {
background-color: #fff;
bottom: -4px;
content: "f111";
display: flex;
font-family: "FontAwesome";
font-size: 5px;
justify-content: center;
position: absolute;
width: 25%;
}
<button class="button">Enviar</button>

Dans Firefox, il se présente comme prévu:

Résultat dans Firefox

Mais dans Chrome, Safari et Vivaldi, cela ressemble à ceci:

Résultat en chrome

Si je décoche puis coche à nouveau l'attribut "position: absolute" dans l'inspecteur, le cercle s'aligne au centre. Est-ce un bogue Blink / Webkit?

Réponses:

1 pour la réponse № 1

Les éléments absolus ne seront pas positionnés par les parents alignés. Il suffit de le positionner à gauche et de le transformer pour le centrer.

juste une sidenote, il n'y a pas besoin d'utiliser display: flex; sur l'élément absolu.

.button {
align-items: center;
background-color: deeppink;
border: 2px solid;
border-color: aqua;
cursor: pointer;
display: inline-flex;
font-size: 20px;
font-weight: bold;
justify-content: center;
margin-bottom: 5px;
padding: 3px 10px;
position: relative;
text-transform: lowercase;
}

.button:after {
content: "";
background-color: deepskyblue;
bottom: -4px;
font-size: 5px;
position: absolute;
width: 25%;
height: 10px;
left: 50%;
transform: translateX(-50%);
}
<button type="button" class="button">Submit</button>


0 pour la réponse № 2

Quatre points à considérer:

  1. Les éléments flex qui sont absolument positionnés n'acceptent pas les propriétés flex du parent. Étant donné qu’ils sont hors de flux, les enfants d’un conteneur Flex positionnés de manière absolue sont retirés d’un contexte de mise en forme flexible et revenir à un bloquer le contexte de mise en forme (ou autre modèle de boîte).

  2. HTML <button> les éléments ne peuvent pas être des conteneurs flexibles.

  3. Les éléments flex positionnés de manière absolue peuvent ne pas être supprimés du flux normal dans certains navigateurs.

  4. Centrer le texte sur une image en flexbox