DEV Community

Avinash
Avinash

Posted on

Atomic-CSS in Styled-components

Atomic CSS using styled-components

Disclaimer: I'm no expert on Atomic CSS. I have just learned this pattern and excited to share my knowledge. If you want to deep dive in this topic please refer links in the resources section

In this post. I will try to make to introduce you with a CSS design pattern which is currently gaining popularity in the frontend community.
Also, I will be showing you how you can achieve this with styled-component in your react app.

What is Atomic CSS?

The definition according to css-tricks is

Atomic CSS is the approach to CSS architecture that favors small, single-purpose classes with names based on visual function.

According to me, it's a functional way of writing CSS. Writing smallest possible utility and then composing it to achieve bigger components.

Mixins in Style-components

In order to compose styles in styled-components, we will be using mixin.
Let's look into a small example of a mixin.

const padding = props => (props.padding ? `padding: ${props.padding}px;` : "padding: 0px;");
const Box = styled.div`
  ${padding}
  background-color: red;
`;

then you can use this in your react components like this

 <Box padding={20}>Box</Box>

Now using mixins to achieve Atomic CSS

const padding = props =>
  ({ padding } ? `padding: ${props.padding}px;` : "padding: 0px;");
const bgr_blue = `background-color: #357edd;`
const br_20 = `border-radius: 20px;`

const Box = styled.div`
  ${padding}
  ${bgr_blue}
  ${br_20}
`;

Full Working Example

You can find full working codesandbox example here


Resources:

CSS-Tricks
Atomic CSS-in-JS
Styled-system

Top comments (0)