初探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实现跳动的动画效果
Sep 12 HTML / CSS
浅析几个CSS3常用功能的写法
Jun 05 HTML / CSS
纯CSS3实现自定义Tooltip边框涂鸦风格的教程
Nov 05 HTML / CSS
HTML5 本地存储实现购物车功能
Sep 07 HTML / CSS
自定义html标记替换html5新增元素
Oct 17 HTML / CSS
HTML 5.1来了 9月份正式发布 更新内容预览
Apr 26 HTML / CSS
html5本地存储 localStorage操作使用详解
Sep 20 HTML / CSS
H5 canvas实现贪吃蛇小游戏
Jul 28 HTML / CSS
吃透移动端 Html5 响应式布局
Dec 16 HTML / CSS
Html5嵌入钉钉的实现示例
Jun 04 HTML / CSS
td 内容自动换行 table表格td设置宽度后文字太多自动换行
Dec 24 HTML / CSS
CSS 鼠标选中文字后改变背景色的实现代码
May 21 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
阿拉伯的咖啡与水烟
2021/03/03 咖啡文化
根据ip调用新浪api获取城市名并转成拼音
2014/03/07 PHP
php通过获取头信息判断图片类型的方法
2015/06/26 PHP
微信公众平台DEMO(PHP)
2016/05/04 PHP
php连接MSsql server的五种方法总结
2018/03/04 PHP
laravel自定义分页的实现案例offset()和limit()
2019/10/15 PHP
让getElementsByName适应IE和firefox的方法
2007/09/24 Javascript
Jquery实现弹出层分享微博插件具备动画效果
2013/04/03 Javascript
jquery 通过name快速取值示例
2014/01/24 Javascript
angular.foreach 循环方法使用指南
2015/01/06 Javascript
jQuery子窗体取得父窗体元素的方法
2015/05/11 Javascript
JavaScript的jQuery库插件的简要开发指南
2015/08/12 Javascript
js阻止默认浏览器行为与冒泡行为的实现代码
2016/05/15 Javascript
jQuery删除节点用法示例(remove方法)
2016/09/08 Javascript
Javascript json object 与string 相互转换的简单实现
2016/09/27 Javascript
Javascript 跨域知识详细介绍
2016/10/30 Javascript
详解React-Native解决键盘遮挡问题(Keyboard遮挡问题)
2017/07/13 Javascript
js实现移动端导航点击自动滑动效果
2017/07/18 Javascript
Vue渲染函数详解
2017/09/15 Javascript
Vuex 使用及简单实例(计数器)
2018/08/29 Javascript
Vue-component全局注册实例
2018/09/06 Javascript
Openlayers实现图形绘制
2020/09/28 Javascript
Python标准库之collections包的使用教程
2017/04/27 Python
html5中监听canvas内部元素点击事件的三种方法
2019/04/28 HTML / CSS
诗普兰迪官方网站:Splendid
2018/09/18 全球购物
戴森比利时官方网站:Dyson BE
2020/10/03 全球购物
extern是什么意思
2016/03/10 面试题
海量信息软件测试笔试题
2015/08/08 面试题
项目负责人任命书
2014/06/04 职场文书
出售房屋委托书范本
2014/09/24 职场文书
乡镇领导班子四风整顿行动工作汇报
2014/10/25 职场文书
见习报告的格式
2014/11/04 职场文书
销售业务员岗位职责
2015/02/13 职场文书
大学生预备党员自我评价
2015/03/04 职场文书
2015年全民国防教育日活动总结
2015/03/23 职场文书
致毕业季:你如何做好自己的职业生涯规划书?
2019/07/01 职场文书