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
,现在用这个去做响应模式应该很方便了。