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

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

calc()是干嘛的?

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

嗯,CSS3越来越高级了。

运算规则

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

使用“+”“-”“*”“/”四则运算;

可以使用百分比、px、em、rem等单位;

可以混合使用各种单位进行计算。

实例:

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

CSS Code复制内容到剪贴板

.box{border:1pxsolid#ddd;width:calc(100%-2px) }

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

CSS Code复制内容到剪贴板

.box{width:calc(10em+20px) }

宽度,10em加20px。

CSS Code复制内容到剪贴板

.box{margin-left:20px;width:calc(100%/3-20px); }

.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复制内容到剪贴板

width: calc(100%/3 - 2*1em - 2*1px);

这样写也是可以的:

CSS Code复制内容到剪贴板

width: calc(100% / 3 - 2 * 1em - 2 *1px);

但是这样写就是错的:

CSS Code复制内容到剪贴板

width: calc(100%/3-2*1em-2*1px);

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

css之calc,初探CSS3中的calc()功能相关推荐

  1. css3 中的calc用法

    定义与用法 calc() 函数用于动态计算长度值. 1.需要注意的是,运算符前后 都需要保留一个空格,例如:width: calc(100% - 10px): 2.任何长度值都可以使用calc()函数 ...

  2. [css] 举例说明在css3中怎么实现背景裁剪?

    [css] 举例说明在css3中怎么实现背景裁剪? background-clip: border-box(默认,背景延伸至边框外沿,但是在边框的下层) padding-box(背景延伸至paddin ...

  3. [css] 你有用过sass中的Mixin功能吗?它有哪些作用?

    [css] 你有用过sass中的Mixin功能吗?它有哪些作用? 1.混合用法 2.函数用法1. @mixin ellipsis-one {overflow: hidden;text-overflow ...

  4. CSS3中的calc()函数以及在less中的使用

    1. calc()函数 在CSS3中我们可以通过calc()函数来动态计算长度值,如: #div {width: calc(100% - 100px); } 它的语法是 calc(expression ...

  5. css3中使用calc()计算宽高

    calc()是什么? 是CSS3中新增的一个函数,calculate(计算)的缩写.用于动态计算宽/高,你可以使用calc()给元素的各个属性设置值[margin.border.padding.fon ...

  6. CSS3中的calc( )属性

    作用: calc() 函数用于动态计算长度值 其实,calc()这个形式看起来就很容易让人想到Javascript里的函数,当然他不是js里的函数,但是他有着类似函数的功能,可以用来计算,括号里是一个 ...

  7. css3中的calc()

    1.什么是calc()? calc是英文单词calculate(计算)的缩写,是css3的一个新增的功能,用来指定元素的长度.比如说,你可以使用calc()给元素的border.margin.padi ...

  8. CSS3中使用calc()设置浏览器宽度和高度减去固定值的写法

    设置宽度:width:calc(100vw - 123px); 说明:1.vw是width of view(port)的缩写: 2.100vw表示百分之百的视图宽度: 3.123px是需要减去的宽度: ...

  9. css中变形,css3中变形处理

    transfrom功能 在css3 中可以使用transfrom功能实现文字或图像的旋转,缩放,倾斜,移动等变形处理 deg是css3中使用的一种角度单位. 旋转: 使用rotate方法,在参数中加入 ...

最新文章

  1. Altium Designer Winter09 的使用心得
  2. CFileFind 遍历目录与子目录
  3. Java面试题集(二)list与Map相关知识(1.2)
  4. yii3正式版什么时候发布_华为mate50pro什么时候发布
  5. C#设计模式之十二代理模式(Proxy Pattern)【结构型】
  6. 59s计时器C语言程序步骤详解,51单片机00-59秒计时器 0-59s Timer
  7. 使用反射获取类的静态属性值
  8. Windows11动态磁贴替代软件大盘点 _φ(❐_❐✧ windows教程
  9. android盒子没声音,TCL安卓智能电视没声音解决办法
  10. java pdf 水印_java pdf加水印的方法
  11. ACM------吃在工大(合工大OJ 1359)
  12. 人民日报喊你学数学!实力不允许?8本书带你入门
  13. js实现数字时钟,按钮实现暂停开始
  14. 光纤收发器的原理及应用_光纤收发器的作用原理
  15. php单例模式(Singleton)
  16. 视频教程-图形图像-无中生有Photoshop CS6背景素材技法ps教程 [超多案例]-其他
  17. java implements的用法总结
  18. 机器学习之决策树原理
  19. 用户画像构建(理论篇)
  20. erp沙盘采购总监的心得_(完整word版)ERP沙盘模拟采购总监心得

热门文章

  1. java 视频边下边播,android 边下边播放mp3完美实现(有缓冲和播放进度效果)
  2. 著名的斐波那契额数列,1 1 2 3 5 8输出第n项
  3. R语言系统教程(三):多维数组和矩阵
  4. iOS storyBoard 和 纯代码 实现 九宫格 切图
  5. DDD专题之--入门
  6. 关于springboot部署服务器的步骤
  7. 代码文本对比-前端工具
  8. java程序员必备英语词汇_java程序员常用英文单词整理
  9. Linux修改配置文件(自动)
  10. 如何搭建免费图床给Typora使用(PicGo + Gitee(码云)实现markdown图床)