What I did in the beginning of CSS development is really understanding what elements do, and how I could use it in the "real world." Similar to math, everything takes understanding and regular practice. Like js1568 said, sketching out the design could really help. Also, the first thing I worked on was knowing these things:
- The difference between block and inline elements. Inline elements do not have a width, and 'wrap' around elements like text, images, and so on. Block elements will span the width of their container and have, by default, no defined height. Think of this as a box of candy wrappers at a store. The candybar itself is the content. The wrapper around the candybar is an inline element. The box that contains all the candybars is the block element.
- What padding, margin, and borders are. Padding is the space between the content and the edges of the element. Padding lives inside the element. Borders are the literal border surrounding the element. Margin is the spacing outside of the element. So if you had a block element with 20px of padding, 3px borders and 20px of margin, the element would have an additional 43px of width on each side.
Focus on what each attribute does, read up on it and figure out what it does. While learning, try to see how these attributes can be incorporated into real world work. After you've mastered what attributes do, then try to begin applying these skills. Everything takes time and multiple revisions and attempts before you will start to 'adapt'.
Think of it as driving a manual transmission, and at first it can seem overwhelming to get the clutch, acceleration, and everything else in sync. After a while it just becomes second-nature and you don't even think about it.
I've been a frontend developer for 4 years, and at first it took a while to "get it." Just keep trying!