calc與box-sizing的替代

背景:之前發現calc這個佈局新屬性之後就非常喜歡,愛不釋手。在公司的實習的時候,開發微信端的頁面,使用了幾次calc,後來發現在Android的上的不支持~蛋疼。於是到處找替代方案,終於在stackoverflow上找到一個滿意的答覆,好~接下來進入正文~

calc 與box-sizing 簡單介紹

* calc 屬性*

calc()能讓你給元素的做計算,你可以給一個div元素,使用百分比、em、px和rem單位值計算出其寬度或者高度,比如說“width:calc(50% + 2em)”,這樣一來你就不用考慮元素DIV的寬度值到底是多少,而把這個煩人的任務交由瀏覽器去計算。

calc()的運算規則

  • 使用“+”、“-”、“*” 和 “/”四則運算;
  • 可以使用百分比、px、em、rem等單位;
  • 可以混合使用各種單位進行計算;
  • 表達式中有“+”和“-”時,其前後必須要有空格,如”widht:
  • calc(12%+5em)”這種沒有空格的寫法是錯誤的;
  • 表達式中有“*”和“/”時,其前後可以沒有空格,但建議留有空格。
    兼容性
    瀏覽器對calc()的兼容性還算不錯,在IE9+、FF4.0+、Chrome19+、Safari6+都得到較好支持,同樣需要在其前面加上各瀏覽器廠商的識別符,不過可惜的是,移動端的瀏覽器還沒僅有“firefox for android 14.0”支持,其他的全軍覆沒。

box-sizing

語法

    box-sizing : content-box || border-box || inherit

取值說明
- [1] content-box
此值爲其默認值,其讓元素維持W3C的標準Box Model,也就是說元素的寬度/高度(width/height)等於元素邊框寬度(border)加上元素內邊距(padding)加上元素內容寬度/高度(content width/height)即:Element Width/Height = border+padding+content width/height。

  • [2] border-box
    此值讓元素維持IE傳統的BoxModel(IE6以下版本),也就是說元素的寬度/高度等於元素內容的寬度/高度。(從上面Box Model介紹可知,我們這裏的content width/height包含了元素的border,padding,內容的width/height【此處的內容寬度/高度=width/height-border-padding】)。

兼容性:

佈局比較

**相比於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;
}

最後記:
第一篇通過解決自己遇到的問題而來的文章~

參考資料:

發佈了49 篇原創文章 · 獲贊 1 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章