初探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 30 HTML / CSS
用css3制作纸张效果(外翻卷角)
Feb 01 HTML / CSS
CSS3 绘制BMW logo实的现代码
Apr 25 HTML / CSS
CSS3实现多重边框的方法总结
May 31 HTML / CSS
css3 clip实现圆环进度条的示例代码
Feb 07 HTML / CSS
canvas画布实现手写签名效果的示例代码
Apr 23 HTML / CSS
html5中地理位置定位api接口开发应用小结
Jan 04 HTML / CSS
html5 CSS过度-webkit-transition使用介绍
Jul 02 HTML / CSS
html5基础标签(html5视频标签 html5新标签用法)
Dec 30 HTML / CSS
基于HTML5 WebGL的3D机房的示例
Mar 16 HTML / CSS
HTML5触摸事件(touchstart、touchmove和touchend)的实现
May 08 HTML / CSS
使用Html5 Stream开发实时监控系统
Jun 02 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异步多线程swoole用法实例
2014/11/14 PHP
thinkphp制作404跳转页的简单实现方法
2016/09/22 PHP
用javascript将数据库中的TEXT类型数据动态赋值到TEXTAREA中
2007/04/20 Javascript
jQuery实现等比例缩放大图片让大图片自适应页面布局
2013/10/16 Javascript
js实现仿百度瀑布流的方法
2015/02/05 Javascript
js改变embed标签src值的方法
2015/04/10 Javascript
用NODE.JS中的流编写工具是要注意的事项
2016/03/01 Javascript
BootStrap智能表单实战系列(八)表单配置json详解
2016/06/13 Javascript
详解Angular2中的编程对象Observable
2016/09/17 Javascript
JQuery遍历元素的后代和同胞实现方法
2016/09/18 Javascript
JS数字千分位格式化实现方法总结
2016/12/16 Javascript
Vue实现双向数据绑定
2017/05/03 Javascript
使用JS动态显示文本
2017/09/09 Javascript
JS实现移动端整屏滑动的实例代码
2017/11/10 Javascript
在weex中愉快的使用scss的方法步骤
2020/01/02 Javascript
Python基于checksum计算文件是否相同的方法
2015/07/09 Python
解决Django生产环境无法加载静态文件问题的解决
2019/04/23 Python
浅谈Pandas Series 和 Numpy array中的相同点
2019/06/28 Python
PyCharm永久激活方式(推荐)
2020/09/22 Python
pyinstaller打包找不到文件的问题解决
2020/04/15 Python
IE10 Error.stack 让脚本调试更加方便快捷
2013/04/22 HTML / CSS
HTML5和CSS3实例教程总结(推荐)
2016/07/18 HTML / CSS
处理textarea中的换行和空格
2019/12/12 HTML / CSS
德国原装品牌香水、化妆品和手表网站:BRASTY.DE
2016/10/16 全球购物
英文推荐信格式范文
2014/05/09 职场文书
竞聘演讲稿精彩开头和结尾
2014/05/14 职场文书
投标文件签署授权委托书范本
2014/10/12 职场文书
2014年乡镇安全生产工作总结
2014/12/02 职场文书
监察建议书
2015/02/04 职场文书
2015年乡镇统计工作总结
2015/04/22 职场文书
2015年财政局工作总结
2015/05/21 职场文书
小学远程教育工作总结
2015/08/13 职场文书
2019年年中职场激励人心语录30条
2019/08/07 职场文书
浅谈Vue的computed计算属性
2022/03/21 Vue.js
Python闭包的定义和使用方法
2022/04/11 Python
Win11如何默认打开软件界面最大化?Win11默认打开软件界面最大化的方法
2022/07/15 数码科技