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()來實現適應布局。
calc()是css3新添加屬性,它可以讓你使用一個算術表達式來表達長度值,這意味着可以用它來定義div的寬度,並設置margin、padding、border等。
calc()的運算規則
使用”+”、”-”、”*”、”/”四則運算;
可以使用百分比、px、em、rem等單位;
可以混合使用各種單位進行計算。
實例1:定位在頁面上的塊元素,含有外邊距
.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);