files/en-us/web/css/reference/values/sqrt/index.md
The sqrt() CSS function is an exponential function that returns the square root of a number.
The function pow(x, 0.5) is equivalent to sqrt(x).
/* A <number> value */
width: calc(100px * sqrt(9)); /* 300px */
width: calc(100px * sqrt(25)); /* 500px */
width: calc(100px * sqrt(100)); /* 1000px */
The sqrt(x) function accepts only one value as its parameter.
x
Returns a {{cssxref("<number>")}} which is the square root of x.
x is +∞, the result is +∞.x is 0⁻, the result is 0⁻.x is less than 0, the result is NaN.{{CSSSyntax}}
This example shows how you can use the sqrt() function to calculate sizes.
<div class="boxes">
<div class="box">50px</div>
<div class="box one">100px</div>
<div class="box two">150px</div>
<div class="box three">200px</div>
</div>
Here we are using CSS custom properties to define the sizes to be used. First, we declare the first size (--size-0), which is then used to calculate the other sizes.
--size-1 is calculated by multiplying the value of --size-0 (50px) by the square root of 4 (2), which results in 100px.--size-2 is calculated by multiplying the value of --size-0 (50px) by the square root of 9 (3), which results in 150px.--size-3 is calculated by multiplying the value of --size-0 (50px) by the square root of 16 (4), which results in 200px.:root {
--size-0: 50px;
--size-1: calc(var(--size-0) * sqrt(4)); /* 100px */
--size-2: calc(var(--size-0) * sqrt(9)); /* 150px */
--size-3: calc(var(--size-0) * sqrt(16)); /* 200px */
}
.boxes {
display: flex;
flex-wrap: wrap;
justify-content: space-around;
}
.box {
width: var(--size-0);
height: var(--size-0);
background-color: tomato;
color: white;
display: flex;
align-items: center;
justify-content: center;
}
The sizes are then applied as the width and height values of the selectors.
.one {
width: var(--size-1);
height: var(--size-1);
}
.two {
width: var(--size-2);
height: var(--size-2);
}
.three {
width: var(--size-3);
height: var(--size-3);
}
{{EmbedLiveSample('Scale sizes based on square root', '100%', '220px')}}
{{Specifications}}
{{Compat}}