初探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 Media Queries(响应式布局可以让你定制不同的分辨率和设备)
Jun 06 HTML / CSS
CSS3媒体查询Media Queries基础学习教程
Feb 29 HTML / CSS
CSS3 实现的缩略图悬停效果
Dec 09 HTML / CSS
前端canvas水印快速制作(附完整代码)
Sep 19 HTML / CSS
整理的15个非常有用的 HTML5 开发教程和速查手册
Oct 18 HTML / CSS
html5 Canvas绘制线条 closePath()实例代码
May 10 HTML / CSS
HTML5 Canvas如何实现纹理填充与描边(Fill And Stroke)
Jul 15 HTML / CSS
利用canvas实现图片压缩的示例代码
Jul 17 HTML / CSS
CSS3实现模糊背景的三种效果示例
Mar 30 HTML / CSS
Unicode中的CJK(中日韩统一表意文字)字符小结
Dec 06 HTML / CSS
HTML实现仿Windows桌面主题特效的实现
Jun 28 HTML / CSS
如何解决flex文本溢出问题小结
Jul 15 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/11/25 PHP
java EJB 加密与解密原理的一个例子
2008/01/11 PHP
php面向对象中static静态属性和静态方法的调用
2015/02/08 PHP
php简单smarty入门程序实例
2015/06/11 PHP
PHP中把错误日志保存在系统日志中(Windows系统)
2015/06/23 PHP
PHP中strcmp()和strcasecmp()函数字符串比较用法分析
2016/01/07 PHP
php 调用ffmpeg获取视频信息的简单实现
2017/04/03 PHP
php面试实现反射注入的详细方法
2019/09/30 PHP
页面中js执行顺序
2009/11/09 Javascript
jQuery ctrl+Enter shift+Enter实现代码
2010/02/07 Javascript
用apply让javascript函数仅执行一次的代码
2010/06/27 Javascript
JS实现仿QQ面板的手风琴效果折叠菜单代码
2015/09/11 Javascript
深入浅析Node.js单线程模型
2017/07/10 Javascript
jQuery实现表格冻结顶栏效果
2017/08/20 jQuery
微信小程序解析富文本过程详解
2019/07/13 Javascript
浅谈v-for 和 v-if 并用时筛选条件方法
2019/11/07 Javascript
Python多线程爬虫简单示例
2016/03/04 Python
python实现批量解析邮件并下载附件
2018/06/19 Python
用python中的matplotlib绘制方程图像代码
2019/11/21 Python
tensorflow实现从.ckpt文件中读取任意变量
2020/05/26 Python
Python中的With语句的使用及原理
2020/07/29 Python
将不规则的Python多维数组拉平到一维的方法实现
2021/01/11 Python
利用CSS3的线性渐变linear-gradient制作边框的示例
2016/06/02 HTML / CSS
怎样实现H5+CSS3手指滑动切换图片的示例代码
2019/05/05 HTML / CSS
Tiqets荷兰:出售欧洲最美丽的景点和博物馆门票
2018/01/09 全球购物
BISSELL官网:北美吸尘器第一品牌
2019/03/14 全球购物
Michael Kors加拿大官网:购买设计师手袋、手表、鞋子、服装等
2019/03/16 全球购物
西部世纪面试题
2014/12/05 面试题
高一政治教学反思
2014/01/28 职场文书
校运会口号
2014/06/18 职场文书
路政管理求职信
2014/06/18 职场文书
关于对大人不礼貌的检讨书
2014/09/29 职场文书
廉政承诺书2015
2015/04/28 职场文书
小型企业的绩效考核制度模板
2019/11/21 职场文书
在Windows下安装配置CPU版的PyTorch的方法
2021/04/02 Python
Python如何使用循环结构和分支结构
2022/04/13 Python