Calc expressions

Calc expressions allow you to perform calculations within CSS property values, supporting a wide range of use cases such as responsive design, grid systems, and fluid typography.

Several calc operators are supported:

  • @+@ adds two operands, e.g. pct 90 @+@ px 16.
  • @-@ subtracts the second operand from the first, e.g. pct 100 - px 32.
  • @* multiplies the first operand by the second, e.g. px 16 @* 2.
  • *@ multiplies the first operand by the second, e.g. 2 *@ px 16.
  • @/ divides the first operand by the second, e.g. pct 100 @/ 6.

Notice that each operator includes one or more @ symbols. An operand that is adjacent to this symbol is a measure; otherwise, it is a number or integer.

Here is an example of how the @-@ and @* operators can be used to make a div element span the width of the viewport, but leaving a 32-pixel "margin" on each side:

module Example.StyleSheet where

import Tecton
import Tecton.Rule as Rule

styleSheet :: CSS
styleSheet = do
  body ? margin := nil
  div ? Rule.do
    margin := nil ~ auto -- horizontal centering
    width := vw 100 @-@ px 32 @* 2

Open with Try PureScript