使用 calc() 打造更聰明的 CSS 版面配置

Alex Danilo

想建立優質的 CSS 版面配置,第一步就是為網頁應用程式中的所有內容指定尺寸。其中一項眾所期盼的功能,就是能夠混用各種尺寸單位來指定尺寸。舉例來說,如果可以保留 50% 的面積和固定空間 (例如 10 像素),就適合。您可以使用 calc() 屬性立即進行這項作業。這項功能可用於任何使用長度或數字的位置,因此也可以用於定位內容,或是用於 rgb() 色彩值,因此在樣式表中有許多絕佳用途。

calc() 的用途

calc() 屬性可用於樣式表中任何 CSS 長度或數字的位置。

提供兩個讓版面配置更有彈性的主要功能:

  • 混合百分比和絕對值。
  • 混合大小單位。

將百分比與絕對單位混合

讓我們來看看混合百分比和絕對單位的範例。假設你想將 50% 可用區域分配給以小於固定像素量的像素,那麼我們可以按照以下方式撰寫:

#foo {
    width: calc(50% - 100px);
}
<div id="foo">Always 100 pixels less than half the available area</div>

如果背景是綠色,看起來會像這樣:

如果縮小父項大小,看起來會像這樣:

值得一提的是,我們始終知道內容的右側邊緣與所在區域的左邊緣 100 像素。以這種方式組合不同的值類型,可讓網頁應用程式處理不同尺寸裝置的版面配置,而且控制幅度比以往大。

混合單位

另一個棒的是,能夠結合單位與不同的測量結果來取得結果大小。舉例來說,您可以混用「em」和「px」單位,設定與目前字型大小相關的大小。

#bar {
    height: calc(10em + 3px);
}

如需合併值的相關實用範例,請參閱這裡這裡

立即體驗

透過 calc(),您可以使用 +、-、* 和 / 進行加減、乘除和除法,讓各種可能性。凡是可以使用 CSS 長度或數字的任何位置,都可以使用 calc()。我們也正努力盡快為角度和頻率屬性新增 calc()。Chrome 19 (開發人員版) 目前提供長度的 calc() 屬性,方法是在 Firefox 中使用 -webkit-calc 屬性,自第 8 版起 (自第 9 版起採用 -moz-calc 資源),在 Internet Explorer 中則是從第 9 版移除前置字元。請在下方留言,分享你的想法。