使用 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(),敬請期待。長度屬性 calc() 現已可在 Chrome 19 (開發人員頻道版本) 中使用 -webkit-calc 屬性,在 Firefox 8 以上版本中使用 -moz-calc 屬性,以及在 Internet Explorer 9 以上版本中使用未加上前置字元的屬性。歡迎在下方留言,與我們分享你的想法。