I’m struggling with CSS Flexbox. Each time I think I’m about to get it in an aha momet, I’m actually two steps backwards. I’m taking The Odin Project course and I’m at the phase where I am building the landing page. I’ve worked on it for 16 straight hours and I’m almost finished. It just looks like shit on a small screen but in fairness, the curriculum did mention that. Otherwise, what I have looks like the goal. I did one or two extra easy touches.

Okay so one question: when is it better to use flex-direction: column and when is it better to use flex-direction row? I’m seriously confused.

  • FlickOfTheBean@lemmy.world
    link
    fedilink
    arrow-up
    16
    ·
    edit-2
    1 year ago

    Best to not switch away from the default (row) unless you really know what you’re doing. Here’s the guide I always consulted for flexbox direction help. I just consulted it until I got the feel for it. I could guess at what you’re doing but I think this resource will be better than me hemming and hawing over what you’re trying to do: https://css-tricks.com/snippets/css/a-guide-to-flexbox/

    So some tips:

    1. column flips what the actual keywords of flex do (justify-content starts to act like align-items and visa versa).
    2. it’s easier to develop for small screens and then expand up to large screens. This is because you already know what you’ll have to expand from and you won’t have to squish anything down. (I’m not saying you should restart your project though, this is a future tip only. Only restart if everything is truly fubar.)
  • shootwhatsmyname@lemm.ee
    link
    fedilink
    English
    arrow-up
    6
    ·
    1 year ago

    Here is an awesome interactive article by Josh W Comeau on flexbox. It has some good examples in there on what you’re talking about too.

    In many situations, the default flex-direction: row (elements laid out left to right) is what you want when using flex.

    flex-direction: column on the other hand lays elements out from top to bottom. This is basically how elements are laid out anyways—that’s why it’s less common to use this direction. You would typically use this direction on a container that has a larger height than its child elements because now the flex properties can actually position elements within the container and utilize the empty space. Otherwise, most flex properties don’t do anything in this direction.

  • ulkesh@beehaw.org
    link
    fedilink
    English
    arrow-up
    3
    ·
    1 year ago

    When you want your child elements laid out left to right: flex-direction: row

    When you want your child elements laid out top to bottom: flex-direction: column

  • w3dd1e@lemm.ee
    link
    fedilink
    English
    arrow-up
    1
    ·
    1 year ago

    Yo! I’m in exactly the same place in my Odin Project curriculum. I’m also actually doing OpenClassrooms bootcamp (through my employer). I didn’t struggle too much with flex (except in column format. It’s so bad.) feel free to DM me and chat about it if you want a project partner! I’m on discord too. Same username.

    • w3dd1e@lemm.ee
      link
      fedilink
      English
      arrow-up
      1
      ·
      1 year ago

      I was talking to my teacher about how annoying flex box columns are and he was saying it wasn’t designed with columns in mind and he expects it to be updated in some future version of CSS. But until then, it depends how you want the box to grow/shrink.

      I also found, you can trick it into a column while still using a row if you give the items a 100% width of their container and let them wrap to the next row. It might not always be right to do that, but it could probably work in some situations if it’s not going well in column format.

      Good luck!