以前发现calc这个布局新属性以后就很是喜欢,爱不释手。在公司的实习的时候,开发微信端的页面,使用了几回calc,后来发如今Android的上的不支持~蛋疼。因而处处找替代方案,终于在stackoverflow上找到一个满意的答复,好~接下来进入正文~css
calc()
能让你给元素的作计算,你能够给一个div元素,使用百分比、em、px和rem单位值计算出其宽度或者高度,好比说“width:calc(50% + 2em)”,这样一来你就不用考虑元素DIV的宽度值究竟是多少,而把这个烦人的任务交由浏览器去计算。html
calc()
的运算规则:android
使用“+”、“-”、“*” 和 “/”四则运算;css3
可使用百分比、px、em、rem等单位;web
能够混合使用各类单位进行计算;bootstrap
表达式中有“+”和“-”时,其先后必需要有空格,如"width: calc(12%+5em)"这种没有空格的写法是错误的;浏览器
表达式中有“*”和“/”时,其先后能够没有空格,但建议留有空格。微信
兼容性ide
浏览器对calc()的兼容性还算不错,在IE9+、FF4.0+、Chrome19+、Safari6+都获得较好支持,一样须要在其前面加上各浏览器厂商的识别符,不过惋惜的是,移动端的浏览器还没仅有“firefox for android 14.0”支持,其余的全军覆没。布局
语法
box-sizing : content-box || border-box || inherit
取值说明
border-box
:元素的宽度/高度(width/height)等于元素边框宽度(border)加上元素内边距(padding)加上元素内容宽度/高度(content width/height)即:Element Width/Height = border+padding+content width/height。
content-box
:元素的宽度/高度等于元素内容的宽度/高度。
兼容性
相比于box-sizing而言 calc的Android browser的支持性太差了,因此布局的时候,box-sizing能够用来解决calc的问题
//html <div class="sideBar">sideBar</div> <div class="content">content</div> //css //使用calc .content { width: 65%; //照顾Android 平稳退化 width: calc(100% - 300px); } //使用box-sizing .sideBar { position: absolute; top:0; left:0; width: 300px; } .content { padding-left: 300px; width: 100%; -moz-box-sizing: border-box; box-sizing: border-box; }
以上的代码来自于stackoverflow,很是棒的解决方案~
以后在工做中,发现bootstrap的源码有这么一段代码~
box-sizing这个货仍是很是有用的呀~
* { -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; } *:before, *:after { -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; }
第一篇经过解决本身遇到的问题而来的文章~
参考资料:
WilsonLiu's blog首发地址:http://blog.wilsonliu.cn