HiveBrain v1.2.0
Get Started
← Back to all entries
snippetcssTip

Perfect nested border radius in CSS

Submitted by: @import:30-seconds-of-code··
0
Viewed 0 times
nestedcssradiusborderperfect

Problem

Nesting elements with rounded borders can look very wrong if not done correctly. Luckily, there's a simple math trick to make it look right. All you need to do is calculate the border radius of one of the elements and the distance between them.
The border radius of the outer element should be equal to the sum of the border radius of the inner element and the distance between the two elements. This can be mathematically expressed as innerRadius + distance = outerRadius or more tersely R1 + D = R2.
!Nested border radius formula
Let's take a look at a simple CSS example. Say we want to style two nested boxes with rounded borders. The outer box has a border-radius of 24px and a padding of 8px. Using the previous formula, we can deduce that the inner box should have a border-radius of 16px.
Using CSS variables, we can make this even easier. Depending on the use case, we can adapt the formula to calculate the outer radius from the inner one, or the other way around. Here's an example of how to do this:

Solution

.outer {
  border-radius: 24px;
  padding: 8px;
}

.inner {
  border-radius: 16px;
}


!Nested border radius formula
Let's take a look at a simple CSS example. Say we want to style two nested boxes with rounded borders. The outer box has a border-radius of 24px and a padding of 8px. Using the previous formula, we can deduce that the inner box should have a border-radius of 16px.
Using CSS variables, we can make this even easier. Depending on the use case, we can adapt the formula to calculate the outer radius from the inner one, or the other way around. Here's an example of how to do this:
<code-tabs>
```css title="From outer radius"
.outer {

Code Snippets

.outer {
  border-radius: 24px;
  padding: 8px;
}

.inner {
  border-radius: 16px;
}

Context

From 30-seconds-of-code: nested-border-radius

Revisions (0)

No revisions yet.