概述

CSS函数calc()可以用在任何一个需要<length>的地方.有了calc(),你可以通过计算来决定一个对象的大小和形状.

你还可以在一个calc()内部嵌套另一个calc().

语法

如何阅读 CSS 语法。

calc(expression)

expression
一个数学表达式,该表达式的结果会作为最终的<length>.

表达式

该表达式中可以使用下面的几个运算符连接任意的简单表达式:

+
加法
-
减法
*
乘法
/
除法.

表达式中的操作数可以使用任意的长度语法.如果你愿意,你可以在一个表达式中混用多种不同的长度单位.在需要时,你还可以使用小括号来调整计算顺序.

例子

使用指定的外边距定位一个对象

使用calc()可以很容易的为一个对象设置一个左右两边相等的外边距.在这个例子中,使用CSS创建了一个横跨整个窗口的banner,该banner左右两边各有一个距离窗口边缘40像素的间距:

.banner {   position:absolute;   left: 40px;   width: 90%;                       /* fallback for browsers without support for calc() */   width: -webkit-calc(100% - 80px);  /* WebKit 536.3 (Chrome 19) and above, experimental */   width:         calc(100% - 80px);  /* final CSS3 compliant implementation; Firefox 16 and IE 9, and above */   border: solid black 1px;   box-shadow: 1px 2px;   background-color: yellow;   padding: 6px;   text-align: center; }
<div class="banner">This is a banner!</div>

自动调整表单域的大小以适应其容器的大小

calc()的另外一个用例是用来确保一个表单域的大小适合当前的可用空间,而不会在保持合适的外边距的同时,因挤压超出其容器的边缘.

看一下下面的CSS:

input {   padding: 2px;   display: block;   width:  98%;                      /* fallback for browsers without support for calc() */   width: -webkit-calc(100% - 1em);  /* WebKit 536.3 (Chrome 19) and above, experimental */   width:         calc(100% - 1em);  /* final CSS3 compliant implementation; IE 9 and above */ }  #formbox {   width:  130px;                 /* fallback for browsers without support for calc() */   width:    -moz-calc(100% / 6);   /* Gecko 2.0 (Firefox 4) and above, experimental, will be dropped */   width: -webkit-calc(100% / 6);   /* WebKit 536.3 (Chrome 19) and above, experimental */   width:         calc(100% / 6);   /* final CSS3 compliant implementation; Firefox 16 and IE 9, and above */   border: 1px solid black;   padding: 4px; }

这个例子中,form元素自身使用了窗口可用宽度的1/6,然后,为了让form元素内部的input元素保持合适的大小,我们再一次使用了calc(),让它的宽度为其容器的宽度减1em.下面的HTML使用了上面的CSS:

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

浏览器兼容性

Feature Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
Basic support ? 4.0 (2) -moz
16.0 (16)
? ? ?
On gradients' color stops ? 19.0 (19) ? ? ?

Feature Chrome Firefox (Gecko) Internet Explorer Opera Safari (WebKit)
Basic support 19 (WebKit 536.3) -webkit 4.0 (2) -moz
16 (16)
9 - -webkit(buggy)
On gradients' color stops 19 (WebKit 536.3) -webkit 19 (19) 9 - -webkit(buggy)

相关链接

css3 calc()的更多相关文章

  1. css3 calc():css简单的数学运算-加减乘除

    css3 calc():css简单的数学运算–加减乘除 多好的东西啊,不用js,一个css就解决了. .box{ border:1px solid #ddd; width:calc(100% - 10 ...

  2. css3 calc()的用法

    转载自:css3 calc()的用法 说明:calc(四则运算):任何长度值都可以使用calc()函数进行计算:和平时的加减乘除优先顺序一样一样的: 特别注意:calc()里面的运算符必须前后都留一个 ...

  3. CSS3 calc()函数使用

    1.calc是什么? calc是英文单词calculate(计算)的缩写,用于动态计算长度值. calc()函数支持 "+", "-", "*&quo ...

  4. border-box和CSS3 calc()解决盒模型加边框或边距后尺寸变大的问题

    box-sizing box-sizing的CSS属性是用来改变默认的CSS框模型 属性 初始值:content-box 适用于:接受的所有元素的宽度或高度 继承:无 媒体:visual 指定的:as ...

  5. CSS3 calc()的使用

    前言: 平时在制作页面的时候,总会碰到有的元素是100%的宽度.众所周知,如果元素宽度为100%时,其自身不带其他盒模型属性设置还好,要是有别的,那将导致盒子撑破.比如说,有一个边框,或者说有marg ...

  6. css3 calc()方法详解

    calc()对大家来说,或许很陌生,不太会相信calc()是css中的部分.因为看其外表像个函数,既然是函数为何又出现在CSS中呢?这一点也让我百思不得其解,今天有一同事告诉我,说CSS3中有一个属性 ...

  7. CSS3 calc() 会计算的属性

    calc是英文单词calculate(计算)的缩写,是css3的一个新增的功能,你可以使用calc()给元素的border.margin.pading.font-size和width等属性设置动态值. ...

  8. 三栏布局之 css3 calc和 flex

    圣杯布局的实现,有很多种. 大致都是借助 padding, margin, float之类的,当然这是传统的实现方式.更多的参考方式圣杯布局小结. 这里说的是用css3 cal 和flex来实现,因为 ...

  9. CSS3 calc实现滚动条出现页面不跳动

    什么是calc()? calc()从字面我们可以把他理解为一个函数function.其实calc是英文单词calculate(计算)的缩写,是css3的一个新增的功能,用来指定元素的长度.比如说,你可 ...

随机推荐

  1. C连接MySQL数据库开发之Windows环境配置及测试

    一.开发环境 Win8.1 64位.VS2013.MySQL5.5.3764位 MySQL安装目录为:C:\Program Files\MySQL\MySQL Server 5.5 二.配置工程环境 ...

  2. bzoj 2631: tree 动态树+常数优化

    2631: tree Time Limit: 30 Sec  Memory Limit: 128 MBSubmit: 1716  Solved: 576[Submit][Status] Descrip ...

  3. L1、L2范式及稀疏性约束

    L1.L2范式及稀疏性约束 假设需要求解的目标函数为: E(x) = f(x) + r(x) 其中f(x)为损失函数,用来评价模型训练损失,必须是任意的可微凸函数,r(x)为规范化约束因子,用来对模型 ...

  4. 当用DJANGO的migrate不成功时。。。。

    URL:http://my.oschina.net/u/862582/blog/355421 因为操作SQL数据库时不规范,或是多人开发时产生了同步问题,就可能导致正规的MIGRATE时不能完成. 已 ...

  5. quartz源码解析--转

    quartz源码解析(一)  . http://ssuupv.blog.163.com/blog//146156722013829111028966/ 任何个人.任何企业.任何行业都会有作业调度的需求 ...

  6. 关于sql语句in的使用注意规则( 转)

    select * from tuser where userno not in(select userno from filter_barcode) 上面这条语句子查询里,userno 并不存在fil ...

  7. leetcode面试准备:Count Complete Tree Nodes

    1 题目 Given a complete binary tree, count the number of nodes. In a complete binary tree every level, ...

  8. LeetCode解题报告:Reorder List

    Reorder List Given a singly linked list L: L0→L1→…→Ln-1→Ln,reorder it to: L0→Ln→L1→Ln-1→L2→Ln-2→… Yo ...

  9. git在myelispse中的安装

    1.git在myelispse中的安装 http://blog.csdn.net/chinaonlyqiu/article/details/8830050

  10. 使用Git将本地代码上传到GitHub

    #1注册GitHub账号 *1)到https://github.com/注册GitHub账号 #2在GitHub上建立GitHub仓库 *1)登录后点击右下方的"new repository ...