calc 函数
calc
函数用于动态计算长度值。
定义与用法
width: calc(100% - 10px);
它可以被使用在<length>
,<frequency>
,<angle>
,<time>
,<number>
,<integer>
等数据类型中。
.demo {
width: calc(50vmax + 3rem);
padding: calc(1vw + 1em);
transform: rotate(calc(1turn + 28deg));
background: hsl(100, calc(3 * 20%), 40%);
font-size: calc(50vw / 3);
}
注:
任何长度值都可以使用 calc()函数进行计算
calc()函数支持"+", "-", "\*", "/"
运算,使用标准的数学运算优先级规则
使用“+”和“-”时,其前后必须要有空格,如"widht: calc(12%+5em)"这种没有空格的写法是错误的;
使用“*”和“/”时,其前后可以没有空格,但建议留有空格。
calc 嵌套使用
.demo {
width: calc(100% / calc(100px * 2));
}
相当于:
.demo {
width: calc(100% / (100px * 2));
}
示例:居中元素(假设.demo 盒子的高度和宽度都为 300px)
.demo {
position: absolute
top: calc(50% - 150px);
left: calc(50% - 150px);
}
这就相当于:
.demo {
position: absolute;
top: 50%;
left: 50%;
marging-top: -150px;
margin-left: -150px;
}
calc()函数的兼容性
calc() as CSS unit value 可以看出浏览器对于 calc()函数的支持度还是不错的。
而对于不支持的浏览器来说,calc()函数将会把整个表达式给忽略掉。这就意味着我们将必须提供一个静态值给不支持的浏览器使用。
.demo {
width: 90%; /*非支持浏览器设置静态值*/
width: calc(100% - 50px);
}