loading...

My first component in Angular - Box

aziziyazit profile image Azizi Yazit ・2 min read

You can grab the code here https://stackblitz.com/edit/flexboxcssinjs

Box

All HTML elements can be considered as boxes. In CSS, the term "box model" is used when talking about design and layout.

The CSS box model is essentially a box that wraps around every HTML element. It consists of: margins, borders, padding, and the actual content. The image below illustrates the box model

In every design system that I made, Box component is the first component that I developed.

We uses Angular and emotionJS (CSS-in-JS) for code example.

Box component code (snippet version)

The Box component can be implemented as simple as this:

<Box p="20px 20px" ml="10px" mr="10px" w="200px" h="auto">
 Content
</Box>

Please note that we are not using brackets [rule]="value" as we are expecting literal string.

And we can extend the Box to create other component e.g Flexbox

By using Flexbox component, creating a flexbox is not an issue anymore

<Flexbox w="100vw" justifyContent="space-between">
  <Box w="50px" h="50px" bgColor="rebeccapurple">
  </Box>
  <Box w="50px" h="50px" bgColor="rebeccapurple">
  </Box>
  <Box w="50px" h="50px" bgColor="rebeccapurple">
  </Box>
</Flexbox>

We can also do a checking on the value and helps developer to identify the typo (me myself is not kind of person who remember all the rule values)

Here is an example how to add simple validation on values.

In above example we check the value of justifyContent and only if its a valid value, the justifyContent rule added into style.

Box component can be Base component to other components e.g. Semantic Components like section, header, article, nav and many more...

Semantic components

class SectionComponent extends BoxComponent {}
class HeaderComponent extends BoxComponent {}
class ArticleComponent extends BoxComponent {}
class NavComponent extends BoxComponent {}




Summary

Abstracting the Box component as a Base component will make our life easier because all the components of HTML can be considered as a boxes. Like Box component, all the HTML elements (boxes) is consists of:

  • Content The content of the box, where text and images appear
  • Padding Clears an area around the content. The padding is transparent
  • Border A border that goes around the padding and content
  • Margin Clears an area outside the border. The margin is transparent

By extending the Box component, all mentioned above have been covered.

Posted on by:

aziziyazit profile

Azizi Yazit

@aziziyazit

Component library developer (angular and react)

Discussion

pic
Editor guide