width: 90%;/*寫給不支持calc()的瀏覽器*/ width:-moz-calc(100% - (10px + 5px) * 2); width:-webkit-calc(100% - (10px + 5px) * 2); width: calc(100% - (10px + 5px) * 2);
咱們想要實現頁面自適應佈局時,一般由於margin的存在,而比較麻煩;有時候想要實現寬度自適應的輸入框時,也由於padding或margin的存在,而至關繁瑣,同時因爲瀏覽器兼容性而致使最終效果不一致。css3新添加屬性box-sizing,在必定程度上解決了上面的問題,而在今天的文章中咱們來經過css3新增長的另一個屬性calc()來實現適應佈局。css
calc()是css3新添加屬性,它能夠讓你使用一個算術表達式來表達長度值,這意味着能夠用它來定義div的寬度,並設置margin、padding、border等。
calc()的運算規則css3
使用」+」、」-」、」*」、」/」四則運算;
能夠使用百分比、px、em、rem等單位;
能夠混合使用各類單位進行計算。git
實例1:定位在頁面上的塊元素,含有外邊距web
.banner { position:absolute; left: 40px; width: -moz-calc(100% - 80px); width: -webkit-calc(100% - 80px); width: calc(100% - 80px); border: solid black 1px; box-shadow: 1px 2px; background-color: yellow; padding: 6px; text-align: center; } 實例2:自動調整大小的表單,又適應容器 input { padding: 2px; display: block; width: -moz-calc(100% - 1em); width: -webkit-calc(100% - 1em); width: calc(100% - 1em); } #formbox { width: -moz-calc(100%/6); width: -webkit-calc(100%/6); width: calc(100%/6); border: 1px solid black; padding: 4px; } <form> <div id="formbox"> <label>Type something:</label> <input type="text"> </div> </form> 瀏覽器兼容性 firefox 4.0+已經開支支持calc()功能,須要使用-moz-calc()私有屬性; chrome從19 dev版,開始支持私有的-webkit-calc()寫法; IE9支持原生寫法,calc(); Opera貌似還不支持~~ This is why you see examples like this: width: calc(100%/3 - 2*1em - 2*1px); That’s actually the minimum number of characters you need to write that particular expression, so far as I can tell. Given the grammar requirements, you could legitimately rewrite that example like so: width: calc(100% / 3 - 2 * 1em - 2 * 1px); …but not like so: width: calc(100%/3-2*1em-2*1px);