--- title: calc slug: Web/CSS/calc() translation_of: Web/CSS/calc() ---
La función CSS calc()
puede ser usada en cualquier sitio donde {{cssxref("<length>")}}, {{cssxref("<frequency>")}}, {{cssxref("<angle>")}}, {{cssxref("<time>")}}, {{cssxref("<number>")}}, o {{cssxref("<integer>")}} sea requerido. Con calc()
puedes realizar cálculos para determinar valores de propiedades CSS.
Es posible anidar llamadas a calc()
dentro de otras llamadas calc()
.
calc(expresión)
{{todo("mod,min,max : http://hacks.mozilla.org/2010/06/css3-calc/")}}La expresión puede ser una combinación de los siguientes operadores:
Los operandos en la expresión pueden ser valores tanto positivos como negativos. Puedes usar diferentes unidades para cada valor si lo deseas. Es recomendable el uso de paréntesis para añadir legibilidad a la expresión o para forzar precedencia en las operaciones en caso necesario.
calc(50% -8px)
será tomada como un operando de porcentaje seguido de otro operando de signo negativo (una expresión inválida, dado que no hay operador en medio), mientras que la expresión calc(50% - 8px)
es un porcentaje seguido de una operación de resta.* y
/
no requieren espacio en blanco, pero es recomendable añadirlo por consistencia.calc()
hace más fácil añadir márgenes a un objeto en determinadas circunstancias. En este ejemplo, CSS crea un espacio horizontal de color amarillo que llena el ancho de la ventana con un hueco de 40 pixels en ambos lados:
.banner { position: absolute; left: 40px; width: 90%; /* salvaguarda para navegadores que no reconocen 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>
{{ EmbedLiveSample('Positioning_an_object_on_screen_with_a_margin', '100%', '60') }}
Otro caso de uso para calc()
es asegurar que los campos de un formulario llenan el espacio disponible sin pasarse de los límites de su contenedor mientras mantienen el margen apropiado.
Echémosle un vistazo al CSS:
input { padding: 2px; display: block; width: 98%; /* salvaguarda para navegadores que no reconocen calc() */ width: calc(100% - 1em); } #formbox { width: 130px; /* salvaguarda para navegadores que no reconocen calc() */ width: calc(100% / 6); border: 1px solid black; padding: 4px; }
El formulario usa 1/6 del ancho disponible. Para asegurar que los campos de entrada tienen el tamaño adecuado, usamos calc()
de nuevo para establecer el ancho que deberían tener (el de su contenedor) menos 1em. Para probar esto, usaremos el siguiente HTML:
<form> <div id="formbox"> <label>Type something:</label> <input type="text"> </div> </form>
{{ EmbedLiveSample('Automatically_sizing_form_fields_to_fit_their_container', '100%', '80') }}
Especificación | Estado | Comentario |
---|---|---|
{{SpecName('CSS3 Values', '#calc-notation', 'calc()')}} | {{Spec2('CSS3 Values')}} |
Característica | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari (WebKit) |
---|---|---|---|---|---|
Soporte básico | 19 (WebKit 536.3) {{property_prefix("-webkit")}} 26 |
{{CompatGeckoDesktop("2")}} {{property_prefix("-moz")}} {{CompatGeckoDesktop("16")}} |
9 | - | 6 {{property_prefix("-webkit")}} (buggy) |
On gradients' color stops | 19 (WebKit 536.3) {{property_prefix("-webkit")}} 27 (maybe 26) |
{{CompatGeckoDesktop("19")}} | 9 | - | 6 {{property_prefix("-webkit")}} (buggy) |
Característica | Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|
Soporte básico | {{CompatUnknown}} | {{CompatGeckoMobile("2")}} {{property_prefix("-moz")}} {{CompatGeckoMobile("16")}} |
{{CompatUnknown}} | {{CompatUnknown}} | {{CompatUnknown}} |
On gradients' color stops | {{CompatUnknown}} | {{CompatGeckoMobile("19")}} | {{CompatUnknown}} | {{CompatUnknown}} | {{CompatUnknown}} |