CSS calc() 响应式布局calc()从字面可以理解为一个函数function。calc是英文单词calculate(计算)的缩写,是css3的一个新增的功能。比如说,可以使用calc()给元素的border、margin、pading、font-size和width等属性通过计算表达式设置动态值。
calc()能做什么?
calc()能让给元素的做计算,可以给一个div元素,使用百分比、em、px和rem单位值计算出其宽度或者高度,比如说 width:calc(50% + 2em) ,这样一来就不用考虑元素div的宽度值到底是多少,而把这个任务交由浏览器去计算。
calc()语法
calc()语法非常简单,支持算数运算符,使用数学表达式来表示:
width: calc(expression);
其中expression是一个表达式,用来计算长度的表达式。calc()的运算规则calc()使用通用的数学运算规则,但是也提供更智能的功能:
- 使用“+”、“-”、“*” 和 “/”四则运算;
- 可以使用百分比、px、em、rem等单位;
- 可以混合使用各种单位进行计算;
- 表达式中有“+”和“-”时,其前后必须要有空格,如
widht: calc(12%+5em)这种没有空格的写法是错误的; - 表达式中有“*”和“/”时,其前后可以没有空格,但建议留有空格。
举个例子,做一个三列并排的模块,宽度按百分比、有padding值、有border值、还有margin-right,而且这三个值是px,
li{list-style-type:none;float:left;width:33.3333%;height:50px;padding:10px;margin-right:10px;background:#FF6666;border:5px solid #DAC8A7;}
效果图:
它是不会好好并列的,在这种情况下就不好计算了,就算算出来也有那么一点误差,现在就用到了calc(),
li{list-style-type:none;float:left;//width:33.3333%;height:50px;padding:10px;margin-right:15px;background:#FF6666;border:5px solid #DAC8A7;width:calc(33.3333% - (10px + 5px) * 2 - 15px )}
通过(width-(padding+border)*2-margin)进行计算。
再稍微优化一下左右边15px的空距,让两边都挨边。在父级上加个margin-right:-15px,现在用这个去做响应模式应该很方便了。
