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
    18
    ·
    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
    8
    ·
    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

  • AverageCakeSlice@sh.itjust.works
    link
    fedilink
    English
    arrow-up
    3
    ·
    edit-2
    1 year ago

    So, for flex-direction: column, usually you’ll want to use it when you need multiple items to be consistently spaced vertically. For example, you have a testimonials section on your webpage with some divs that contain quotes, and you want them to be centered in the page, stack on top of each other, and have equal spacing between each quote. This is where flex-direction: column comes in. You just set the flex five to the height you want, slap display: flex and the flex direction properties on it, set justify-content to between, and maybe align-items to center so that all the child divs are in the center of the parent, and voila!

    In real life, you’ll mainly see this used on mobile, where lots of elements need to be stacked on top of each other, but there are cases on other viewports where it makes sense. For example, in lining up fields in a vertical form like a login or sign up page where the username, password, and login/create account buttons are all stacked on top of each other.