Flexbox, Firefox and the button element
Useful knowledge about flexbox#
When an element receives display: flex;
, all children will be set to block-level. This is not an issue if the flexbox
implementation is complete, but it's good to know about this little quirk.
Beware of the <button>
element#
Interestingly, Firefox has not implemented flexbox
for <button>
in the same way as Webkit or Blink – yet. In Mozilla's implementation, the inline-block-like display behavior of <button>
cannot be changed via CSS display
. Consequently, if you set a <button>
to display: flex;
to vertically center, say, button text and an icon, it will look great in Chrome, but broken in Firefox: text and icon wrap because the CSS renderer sees the display: flex;
and sets all children to block-level, even though the button does not actually become a flexbox
container.
The good news: This is easily fixable by adding a <div>
that wraps the items inside the button and applying the flexbox
styles on it.
What's more, Mozilla has classified this behavior as a bug and is actively working on it (current status: RESOLVED FIXED in Firefox 52).