CSS-calc 兼容寫法


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);
相關文章
相關標籤/搜索