css3 calc()自適應佈局屬性 ---瀏覽器版本相容性的問題
阿新 • • 發佈:2018-12-29
我們想要實現頁面自適應佈局時,通常因為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);