CSS3的calc()使用

摘自:http://www.w3cplus.com/css3/how-to-use-css3-calc-function.html
作者:大漠

calc()對大家來說,或許很陌生,不太會相信calc()是css中的部分。因爲看其外表像個函數,既然是函數爲何又出現在CSS中呢?這一點也讓我百思不得其解,今天有一同事告訴我,說CSS3中有一個屬性能實現自適應的佈局,首先讓我想到的是box-sizing,但跟我說還可以計算,這讓我不得不想起calc()。因爲早先在官網和一些blog上看到相關的介紹,但一直沒有深入,也沒有自己去測試過。今天花了一下午的時間徹底學習了一下calc()。於是就有了這篇blog,希望對大家有所幫助。

平時在製作頁面的時候,總會碰到有的元素是100%的寬度。衆所周知,如果元素寬度爲100%時,其自身不帶其他盒模型屬性設置還好,要是有別的,那將導致盒子撐破。比如說,有一個邊框,或者說有margin和padding,這些都會讓你的盒子撐破。我們換句話來說,如果你的元素寬度是100%時,只要你在元素中添加了border,padding,margin任何一值,都將會把元素盒子撐破(標準模式下,除IE怪異模式)。這樣一來就會相當的麻煩,平時我們碰到這樣的現象時,也是相當的謹慎,有時甚至無法解決,只能通過改變結構來實現。就算你通過繁瑣的方法實現了,但有於瀏覽器的兼容性而導致最終效果不一致。雖然前面介紹的CSS3屬性中的box-sizing在一定程度上解決這樣的問題,其實今天的calc()函數功能實現上面的效果來得更簡單。

什麼是calc()?

學習calc()之前,我們有必要先知道calc()是什麼?只有知道了他是個什麼東東?在實際運用中更好的使用他。

calc()從字面我們可以把他理解爲一個函數function。其實calc是英文單詞calculate(計算)的縮寫,是css3的一個新增的功能,用來指定元素的長度。比如說,你可以使用calc()給元素的border、margin、pading、font-size和width等屬性設置動態值。爲何說是動態值呢?因爲我們使用的表達式來得到的值。不過calc()最大的好處就是用在流體佈局上,可以通過calc()計算得到元素的寬度。

calc()能做什麼?

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

calc()語法

calc()語法非常簡單,就像我們小時候學加 (+)、減(-)、乘(*)、除(/)一樣,使用數學表達式來表示:

.elm {
  width: calc(expression);
}

其中”expression”是一個表達式,用來計算長度的表達式。

calc()的運算規則

calc()使用通用的數學運算規則,但是也提供更智能的功能:

使用“+”、“-”、“*” 和 “/”四則運算;
可以使用百分比、px、em、rem等單位;
可以混合使用各種單位進行計算;
表達式中有“+”和“-”時,其前後必須要有空格,如”widht: calc(12%+5em)”這種沒有空格的寫法是錯誤的;
表達式中有“*”和“/”時,其前後可以沒有空格,但建議留有空格。

瀏覽器的兼容性

瀏覽器對calc()的兼容性還算不錯,在IE9+、FF4.0+、Chrome19+、Safari6+都得到較好支持,同樣需要在其前面加上各瀏覽器廠商的識別符,不過可惜的是,移動端的瀏覽器還沒僅有“firefox for android 14.0”支持,其他的全軍覆沒。

大家在實際使用時,同樣需要添加瀏覽器的前綴

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章