If you use percentages, it takes the element width to calculate the radius. To have the capsule-shaped element, you need to pass to the border-radius
property units like rem or px (neither I know the reason for this, but it works). This is why it works when passing 500px. You can use the same value for line-height
and border-radius
properties if you want.
.capsule {
line-height: 48px;
border-radius: 48px;
}
Here you have an example in CodePen. Try to change the variable $label-height
to see how the shape is maintained while the height of the button changes.
In this example, you don't need to set the width or height of the element. You just need to adjust the content's height
and padding
.
The padding property is useful to set a separation between the contents and the component border. See how it looks if I only set the left padding.
If you set the line-height
property of the container, you will set automatically the container height, and center the content inside the container at the same time.
If you want to set the component's width to the component's content width, you can set the component's display property to inline-block
, and use FlexBox to arrange them in a column, for example. And then, set the left and right margins to auto, to avoid the element to grow to its parent width.
And if you want to leave a space between the components, you can set the margin-top
property between consecutive components.
.capsule + .capsule {
margin-top: 15px;
}
Hope it helps :)