Your Search Results

    calc Redirect 1

    This is an experimental technology
    Because this technology's specification has not stabilized, check the compatibility table for the proper prefixes to use in various browsers. Also note that the syntax and behavior of an experimental technology is subject to change in future versions of browsers as the spec changes.

    Summary

    The calc() CSS function can be used anywhere a <length>, <frequency>, <angle>, <time>, <number>, or <integer> is required. With calc(), you can perform calculations to determine CSS property values.

    It is possible to use calc() inside another calc().

    Syntax

    calc(expression)

    Values

    expression
    A mathematical expression, the result of which is used as the value.

    Expressions

    The expression can be any simple expression combining the following operators:

    +
    Addition.
    -
    Subtraction.
    *
    Multiplication. At least one of the arguments must be a <number>.
    /
    Division. The right-hand side must be a <number>.

    The operands in the expression may be any length syntax value. You can use different units for each value in your expression, if you wish. You may also use parentheses to establish computation order when needed.

    Note: Division by zero results in an error being generated by the HTML parser.
    Note: The + and - operators must always be surrounded by whitespace. The operand of calc(50% -8px) for instance will be parsed as a percentage followed by a negative length, an invalid expression, while the operand of calc(50% - 8px) is a percentage followed by a minus sign and a length. Even further, calc(8px + -50%) is treated as a length followed by a plus sign and a negative percentage.
    The * and / operators do not require whitespace, but adding it for consistency is allowed, and recommended.

    Examples

    Positioning an object on screen with a margin

    calc() makes it easy to position an object with a set margin. In this example, the CSS creates a banner that stretches across the window, with a 40-pixel gap between both sides of the banner and the edges of the window:

    .banner {
      position: absolute;
      left: 40px;
      width: 90%;               /* fallback for browsers without support for calc() */
      width: calc(100% - 80px);
      border: solid black 1px;
      box-shadow: 1px 2px;
      background-color: yellow;
      padding: 6px;
      text-align: center;
    }
    
    <div class="banner">This is a banner!</div>

    Automatically sizing form fields to fit their container

    Another use case for calc() is to help ensure that form fields fit in the available space, without extruding past the edge of their container, while maintaining an appropriate margin.

    Let's look at some CSS:

    input {
      padding: 2px;
      display: block;
      width: 98%;               /* fallback for browsers without support for calc() */
      width: calc(100% - 1em);
    }
    
    #formbox {
      width: 130px;             /* fallback for browsers without support for calc() */
      width: calc(100% / 6);
      border: 1px solid black;
      padding: 4px;
    }
    

    Here, the form itself is established to use 1/6 of the available window width. Then, to ensure that input fields retain an appropriate size, we use calc() again to establish that they should be the width of their container minus 1em. Then, the following HTML makes use of this CSS:

    <form>
      <div id="formbox">
      <label>Type something:</label>
      <input type="text">
      </div>
    </form>
    

    Specifications

    Specification Status Comment
    CSS Values and Units Module Level 3 Candidate Recommendation  

    Browser compatibility

    Feature Chrome Firefox (Gecko) Internet Explorer Opera Safari (WebKit)
    Basic support 19 (WebKit 536.3) -webkit
    26
    4.0 (2) -moz
    16 (16)
    9 - 6 -webkit (buggy)
    On gradients' color stops 19 (WebKit 536.3) -webkit
    27 (maybe 26)
    19 (19) 9 - 6 -webkit (buggy)
    Feature Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
    Basic support <= 2.3.6 not supported 4.0 (2) -moz
    16.0 (16)
    ? ? <= IOs 6.1.3 not supported
    On gradients' color stops ? 19.0 (19) ? ? ?

    See also

    Document Tags and Contributors

    Contributors to this page: Sheppy
    Last updated by: Sheppy,
    Hide Sidebar