calc

Übersicht

Mit der CSS-Funktion calc() lassen sich Werte für CSS-Eigenschaften berechnen.

calc() kann überall verwendet werden, wo <length>, <frequency>, <angle>, <time>, <number> und <integer> eingesetzt werden dürfen.

Syntax

calc( <calc-sum> )

wobei
<calc-sum> = <calc-product> [ [ '+' | '-' ] <calc-product> ]*

wobei
<calc-product> = <calc-value> [ '*' <calc-value> | '/' <number> ]*

wobei
<calc-value> = <number> | <dimension> | <percentage> | ( <calc-sum> )

/* Eigenschaft: calc(Ausdruck) */
width: calc(100% - 80px);

Werte

Ausdruck
Ein mathematischer Ausdruck, dessen Ergebnis als Wert verwendet wird.

Ausdrücke

Der Ausdruck kann eine beliebige Kombination der folgenden Operatoren sein:

+
Addition.
-
Subtraktion.
*
Multiplikation (muss mindestens eine <number> enthalten).
/
Division (Divisor muss eine <number> sein).

Bei den Operanden darf es sich um jeden Wert vom Typ <length> handeln, insbesondere können auch verschiedene Einheiten miteinander verrechnet werden.
Das Setzen von Klammern ist ebenfalls möglich.

calc()-Funktionen können ineinander verschachtelt werden.

Hinweis: Die Operatoren + und - erfordern zwingend ein Leerzeichen zwischen dem Operator und den Werten. Zum Beispiel würde calc(50% -8px) als Prozentwert, gefolgt von einer negativen Pixel-Länge interpretiert. Eine korrekte Subtraktion ergibt sich nur mit einem Leerzeichen zwischen - und 8px: calc(50% - 8px)
Bei einer Multiplikation oder Division spielen Leerzeichen keine Rolle, sind aber der Lesbarkeit wegen empfohlen.
Berechnungen für die Breite oder Höhe von Tabellenspalten und -spaltengruppen sowie Tabellenzeilen und -zeilengruppen, sowie Tabellenzellen können vom Browser als Wert auto behandelt werden. Dies gilt für Tabellen mit dem Typ auto oder fixed.

Beispiele

Relative Größe eines Objekts mit einer absoluten Positionierung

Mit calc() ist es kein Problem mehr, die Maße eines Objekts in Abhängigkeit anderer Maße festzulegen.

In diesem Beispiel wurde ein Banner erstellt, das die gesamte verfügbare Breite einnehmen, dabei jedoch auf beiden Seiten einen Abstand einnehmen soll, der exakt 40 Pixeln beträgt.

Links ist die Position mit left: 40px definiert. Mit calc(100% - 80px) werden von der Gesamtbreite 80 Pixel abgezogen (2 * 40 Pixel), so verbleibt am rechten Rand ein Abstand von ebenfalls exakt 40 Pixeln.

.banner {
  position: absolute;
  left: 40px;
  width: 90%;               /* fallback for browsers without support for calc() */
  width: calc(100% - 80px);
}
<div class="banner">This is a banner!</div>

Spezifikation

Spezifikation Status Anmerkung
CSS Values and Units Module Level 3
Die Definition von 'calc()' in dieser Spezifikation.
Anwärter Empfehlung

Browserkompatibilität

Update compatibility data on GitHub
DesktopMobile
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid WebviewChrome für AndroidFirefox für AndroidOpera für AndroidSafari auf iOSSamsung Internet
<calc()>Chrome Vollständige Unterstützung 26
Vollständige Unterstützung 26
Vollständige Unterstützung 19
Mit Präfix
Mit Präfix Benötigt das Herstellerpräfix: -webkit-
Edge Vollständige Unterstützung 12Firefox Vollständige Unterstützung 16
Hinweise
Vollständige Unterstützung 16
Hinweise
Hinweise Before Firefox 57 calc(1*2*3) is not parsed successfully.
Hinweise Firefox 57 increased the number of places calc() could substitute another value. See bug 1350857.
Keine Unterstützung 4 — 53
Mit Präfix
Mit Präfix Benötigt das Herstellerpräfix: -moz-
IE Vollständige Unterstützung 9Opera Vollständige Unterstützung 15Safari Vollständige Unterstützung 7
Vollständige Unterstützung 7
Vollständige Unterstützung 6
Mit Präfix
Mit Präfix Benötigt das Herstellerpräfix: -webkit-
WebView Android Vollständige Unterstützung ≤37
Vollständige Unterstützung ≤37
Vollständige Unterstützung ≤37
Mit Präfix
Mit Präfix Benötigt das Herstellerpräfix: -webkit-
Chrome Android Vollständige Unterstützung 28Firefox Android Vollständige Unterstützung 16
Hinweise
Vollständige Unterstützung 16
Hinweise
Hinweise Before Firefox 57 calc(1*2*3) is not parsed successfully.
Hinweise Firefox 57 increased the number of places calc() could substitute another value. See bug 1350857.
Keine Unterstützung 4 — 53
Mit Präfix
Mit Präfix Benötigt das Herstellerpräfix: -moz-
Opera Android Vollständige Unterstützung 14Safari iOS Vollständige Unterstützung 7
Vollständige Unterstützung 7
Vollständige Unterstützung 6
Mit Präfix
Mit Präfix Benötigt das Herstellerpräfix: -webkit-
Samsung Internet Android Vollständige Unterstützung 1.5
<color> value supportChrome Keine Unterstützung NeinEdge Keine Unterstützung NeinFirefox Vollständige Unterstützung 59IE Keine Unterstützung NeinOpera Keine Unterstützung NeinSafari Vollständige Unterstützung 6WebView Android Keine Unterstützung NeinChrome Android Keine Unterstützung NeinFirefox Android Vollständige Unterstützung 59Opera Android Keine Unterstützung NeinSafari iOS Vollständige Unterstützung 6Samsung Internet Android Keine Unterstützung Nein
Gradient color stops supportChrome Vollständige Unterstützung 19Edge Vollständige Unterstützung 12Firefox Vollständige Unterstützung 19IE Vollständige Unterstützung 9Opera Vollständige Unterstützung 15Safari Vollständige Unterstützung 6WebView Android Vollständige Unterstützung 37Chrome Android Vollständige Unterstützung 28Firefox Android Vollständige Unterstützung 19Opera Android Vollständige Unterstützung 15Safari iOS Vollständige Unterstützung 6Samsung Internet Android Vollständige Unterstützung 1.5
Nested calc() supportChrome Vollständige Unterstützung 51Edge Vollständige Unterstützung 16Firefox Vollständige Unterstützung 48IE Keine Unterstützung NeinOpera Vollständige Unterstützung 38Safari Vollständige Unterstützung 11WebView Android Vollständige Unterstützung 51Chrome Android Vollständige Unterstützung 51Firefox Android Vollständige Unterstützung 48Opera Android Vollständige Unterstützung 41Safari iOS Vollständige Unterstützung 11Samsung Internet Android Vollständige Unterstützung 5.0
<number> value supportChrome Vollständige Unterstützung 31Edge Vollständige Unterstützung 12Firefox Vollständige Unterstützung 48IE Vollständige Unterstützung 9Opera Vollständige Unterstützung 18Safari Vollständige Unterstützung 6WebView Android Vollständige Unterstützung 4.4.3Chrome Android Vollständige Unterstützung 31Firefox Android Vollständige Unterstützung 48Opera Android Vollständige Unterstützung 18Safari iOS Vollständige Unterstützung 6Samsung Internet Android Vollständige Unterstützung 2.0

Legende

Vollständige Unterstützung  
Vollständige Unterstützung
Keine Unterstützung  
Keine Unterstützung
Siehe Implementierungshinweise.
Siehe Implementierungshinweise.
Benötigt ein Herstellerpräfix oder einen anderen Namen zur Verwendung.
Benötigt ein Herstellerpräfix oder einen anderen Namen zur Verwendung.

Siehe auch