初探CSS3中的calc()功能


Posted in HTML / CSS onJuly 14, 2015

之前,我们想要实现一个完美的宽度自适应的输入框好麻烦,曾经也被作为对前端技术的一个挑战。类似的常见场景还有100%宽+边框的容器等。遇到这些情况,我们不得不分外小心,因为各个浏览器的表现可能不一致。

现在,firefox和webkit相继支持calc()功能了,我们也可以学习下了。
calc()是干嘛的?

calc()是单词calculate(计算)的缩写,是css3的一个新的长度单位功能,可以使用简单的数学运算。

嗯,CSS3越来越高级了。
运算规则

calc()使用通用的数学运算规则,但是也提供更智能的功能:

    使用“+”“-”“*”“/”四则运算;
    可以使用百分比、px、em、rem等单位;
    可以混合使用各种单位进行计算。

实例:

我们来看几个小例子来理解下calc()功能吧:

CSS Code复制内容到剪贴板
  1. .box{ border:1px solid #dddwidth:calc(100%-2px) }  

容器宽度加上边框宽度正好100%。

CSS Code复制内容到剪贴板
  1. .box{ width:calc(10em+20px) }  

宽度,10em加20px。

CSS Code复制内容到剪贴板
  1. .box{ margin-left:20pxwidth:calc(100%/3-20px); }    
  2. .box:nth-child(3n){ margin-left:0; }  

3栏等宽布局。
浏览器支持

firefox 4.0+已经开支支持calc()功能,不过要使用-moz-calc()私有属性,chrome从19 dev版,也开始支持私有的-webkit-calc()写法,IE9这次则牛逼了一次,原生支持标准的不带前缀的写法了。Opera貌似还不支持~~

所以如果我们要用这个属性的话,要记得带上各浏览器的兼容性。

eric meyer提到w3c规范的一条备注(评论里面的同学也有提到):

    Note that the grammar requires spaces around binary ‘+’ and ‘-’ operators. The ‘*’ and ‘/’ operators do not require spaces. via CSS3 Values and Units specification

也就是说,”+”、”-“两个符号边上必须要有空格,而”*”、”/”符号则不是必须的。

然后我们可能要这样写:

CSS Code复制内容到剪贴板
  1. width: calc(100%/3 - 2*1em - 2*1px);  

这样写也是可以的:

CSS Code复制内容到剪贴板
  1. width: calc(100% / 3 - 2 * 1em - 2 * 1px);  

但是这样写就是错的:

CSS Code复制内容到剪贴板
  1. width: calc(100%/3-2*1em-2*1px);  

嗯,这样很容易写错啊。还好现在支持的浏览器还不太多,我会继续观望并保持更新~~

HTML / CSS 相关文章推荐
一款基于css3麻将筛子3D翻转特效的实例教程
Dec 31 HTML / CSS
使用CSS3来制作消息提醒框
Jul 12 HTML / CSS
图解CSS3制作圆环形进度条的实例教程
May 26 HTML / CSS
纯CSS3实现的井字棋游戏
Nov 25 HTML / CSS
详解CSS3+JS完美实现放大镜模式
Dec 03 HTML / CSS
HTML5-WebSocket实现聊天室示例
Dec 15 HTML / CSS
详解Canvas事件绑定
Jun 27 HTML / CSS
HTML5标签与HTML4标签的区别示例介绍
Jul 18 HTML / CSS
HTML5实现简单图片上传所遇到的问题及解决办法
Jan 20 HTML / CSS
如何让pre和textarea等HTML元素去掉滚动条自动换行自适应文本内容高度
Aug 01 HTML / CSS
HTML CSS 一个标签实现带动画的抖音LOGO
Apr 26 HTML / CSS
HTML中link标签属性的具体用法
May 07 HTML / CSS
CSS3中线性颜色渐变的一些实现方法
Jul 14 #HTML / CSS
CSS3中HSL和HSLA的简单使用示例
Jul 14 #HTML / CSS
用CSS3实现背景渐变的方法
Jul 14 #HTML / CSS
使用CSS3制作响应式导航菜单的方法
Jul 12 #HTML / CSS
使用CSS3来制作消息提醒框
Jul 12 #HTML / CSS
使用CSS3创建动态菜单效果
Jul 10 #HTML / CSS
简单介绍CSS3中Media Query的使用
Jul 07 #HTML / CSS
You might like
在PHP中使用灵巧的体系结构
2006/10/09 PHP
如何使用php判断服务器是否是HTTPS连接
2013/07/05 PHP
PHP和MySql中32位和64位的整形范围是多少
2016/02/18 PHP
解读PHP的Yii框架中请求与响应的处理流程
2016/03/17 PHP
yii2 在控制器中验证请求参数的使用方法
2019/06/19 PHP
JScript的条件编译
2007/05/29 Javascript
在js中判断checkboxlist(.net控件客户端id)是否有选中
2013/04/11 Javascript
jQuery制作简单柱状图实例
2015/01/28 Javascript
js判断主流浏览器类型和版本号的简单实现代码
2016/05/26 Javascript
原生javascript 学习之js变量全面了解
2016/07/14 Javascript
Bootstrap实现导航栏的2种方式
2016/11/28 Javascript
nodejs操作mysql实现增删改查的实例
2017/05/28 NodeJs
详解swiper在vue中的应用(以3.0为例)
2018/09/20 Javascript
webpack是如何实现模块化加载的方法
2019/11/06 Javascript
优化Python代码使其加快作用域内的查找
2015/03/30 Python
Python中的多重装饰器
2015/04/11 Python
动感网页相册 python编写简单文件夹内图片浏览工具
2016/08/17 Python
带你了解python装饰器
2017/06/15 Python
python虚拟环境virtualenv的安装与使用
2017/09/21 Python
Django自定义用户认证示例详解
2018/03/14 Python
pandas 获取季度,月度,年度首尾日期的方法
2018/04/11 Python
利用Django-environ如何区分不同环境
2018/08/26 Python
Python解析命令行读取参数之argparse模块
2019/07/26 Python
Python编程中类与类的关系详解
2019/08/08 Python
python matplotlib 画dataframe的时间序列图实例
2019/11/20 Python
中国跨境在线时尚零售商:Bellelily
2018/04/06 全球购物
Holland & Barrett爱尔兰:英国领先的健康零售商
2019/03/31 全球购物
美团网旗下网上订餐平台:美团外卖
2020/03/05 全球购物
SQL Server 2000数据库的文件有哪些,分别进行描述
2013/03/30 面试题
动态密码技术
2012/10/18 面试题
自荐信格式技巧有哪些呢
2013/11/19 职场文书
电脑饰品店的创业计划书
2014/01/21 职场文书
国旗下讲话演讲稿
2014/05/08 职场文书
小学生纪念九一八事变演讲稿
2014/09/14 职场文书
2014年乡镇工作总结
2014/11/21 职场文书
后勤工作个人总结
2015/02/28 职场文书