初探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 相关文章推荐
纯CSS绘制漂亮的圆形图案效果
May 07 HTML / CSS
html5+css3之CSS中的布局与Header的实现
Nov 21 HTML / CSS
详解CSS3的图层阴影和文字阴影效果使用
Jun 09 HTML / CSS
css3实现背景动态渐变效果
Dec 10 HTML / CSS
CSS3属性 line-clamp控制文本行数的使用
Mar 19 HTML / CSS
html5+css3之制作header实例与更新
Dec 21 HTML / CSS
HTML5-WebSocket实现聊天室示例
Dec 15 HTML / CSS
Html5画布_动力节点Java学院整理
Jul 13 HTML / CSS
mui几种页面跳转方式对比总结概括
Aug 18 HTML / CSS
HTML5 HTMLCollection和NodeList的区别详解
Apr 29 HTML / CSS
HTML5输入框下拉菜单功能的示例代码
Sep 08 HTML / CSS
使用CSS3实现按钮悬停闪烁动态特效代码
Aug 30 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 无限分类的树类代码
2009/12/03 PHP
thinkphp中session和cookie无效的解决方法
2014/12/19 PHP
WordPres对前端页面调试时的两个PHP函数使用小技巧
2015/12/22 PHP
WordPress后台中实现图片上传功能的实例讲解
2016/01/11 PHP
PHP实现的简单对称加密与解密方法实例小结
2017/08/28 PHP
js 幻灯片的实现
2011/12/06 Javascript
js获取url中指定参数值的示例代码
2013/12/14 Javascript
JavaScript实现的一个倒计时的类
2015/03/12 Javascript
javascript实现信息增删改查的方法
2015/07/25 Javascript
微信小程序 参数传递实例代码
2017/03/20 Javascript
webpack vue 项目打包生成的文件,资源文件报404问题的修复方法(总结篇)
2018/01/09 Javascript
JS 中可以提升幸福度的小技巧(可以识别更多另类写法)
2018/07/28 Javascript
详解html-webpack-plugin插件(用法总结)
2018/09/12 Javascript
node.JS事件机制与events事件模块的使用方法详解
2020/02/06 Javascript
[01:00:30]TFT vs VGJ.T Supermajor 败者组 BO3 第一场 6.5
2018/06/06 DOTA
Python函数嵌套实例
2014/09/23 Python
Python去除字符串两端空格的方法
2015/05/21 Python
python numpy函数中的linspace创建等差数列详解
2017/10/13 Python
pandas数据分组和聚合操作方法
2018/04/11 Python
Python实现的拟合二元一次函数功能示例【基于scipy模块】
2018/05/15 Python
Python selenium抓取微博内容的示例代码
2018/05/17 Python
Python实现的特征提取操作示例
2018/12/03 Python
PyQt5通信机制 信号与槽详解
2019/08/07 Python
使用python模拟命令行终端的示例
2019/08/13 Python
美国葡萄酒网上商店:Martha Stewart Wine Co.
2019/03/17 全球购物
英国最大的户外商店:Go Outdoors
2019/04/17 全球购物
美国和加拿大计算机和电子产品购物网站:TigerDirect.com
2019/09/13 全球购物
如何利用find命令查找文件
2015/02/07 面试题
大学生职业规划前言模板
2013/12/27 职场文书
库房主管岗位职责
2013/12/31 职场文书
学习群众路线的心得体会
2014/11/05 职场文书
公司财务部岗位职责
2015/04/14 职场文书
房贷工资证明范本
2015/06/12 职场文书
教师节校长致辞
2015/07/31 职场文书
Java中的继承、多态以及封装
2022/04/11 Java/Android
Nginx如何配置根据路径转发详解
2022/07/23 Servers