I recently learned about flex-box and have been doing some research into it. Hopefully I'll write up a “All about flexbox” post, but for now I want to go through a hands on example of using flexbox in the wild.
What are we working on?
I want to convert the menu of this site to use flexbox.
What does it look like now?
Right now I support three cases:
Large (desktop)

Medium (tablet) - this looks almost the same but the fonts are slightly smaller.

Small (phone)

Ok, let’s make it flexible.
Step 1: remove most of the styling
I went through and removed most of the styling. I kept some things I knew I wanted, but most of it went.

Step 2: add flexbox
I added display: flex to the containing element. It kinda worked, but looked funny because I’d removed the rest of the styling.

Step 3: layout within the flexbox
Next I added how I wanted the content to flex within the flexbox by adding justify-content: flex-end. This meant all the <li>s got squished to the right.

I played around with a few options for justify-content, particularly space-between. While that would better show off flexbox’s capabilities, I decided I didn’t actually want my nav bar all that flexible. Having too much space between the items looks quite strange - especially true on larger monitors. I probably should have thought of this before I started converting my nav bar to use flexbox, but oh well. For learning!
Step 4: add styling back in
Most of my previous styles were still required. I'd hoped I could remove some lines, but it doesn’t seem to be the case.

Step 5: mobile - vertical display
Yes, yes, mobile first and all that. I just wanted to get things working, ok?
The display: flex I added previously was applied to the mobile, so I didn't need to add that again.
But I want the mobile navigation to go vertically, so I changed the flex-direction from row (the default) to flex-direction: column.

Woot! Getting pretty close!
Step 6: mobile - center align
Next up was to center the <li>s across the screen. So I used align-items: center to get all my ducks in a row.

Step 7: mobile - spacing
Finally the spacing around the <li>s was a bit weird so I used justify-content: space-around to display them evening within the nav dropdown's space.

Done!
After all that it was quite a small change with no change to the user experience. But I did learn more about flexbox, so I’ve got that going for me!