1、calc()是css3的一个新增的功能,用来指定元素的长度,你可以使用calc()给元素的border、margin、pading、font-size和width等属性动态的设置值。

2、calc()语法

  1. .element {
  2. widthcalc(expression);
  3. }

3、calc()的运算法则

  1)、使用 "+"、"-"、"*" 和 "/" 运算

  2)、可以使用百分比、px、em、rem等单位运算

  3)、可以混合使用各种单位进行运算

  4)、表达式中有 "+" 和 "-" 时,其前后必须有空格。

  5)、表达式中有 "*" 和 "/" 时,其前后可以没有空格,但建议保留

4、浏览器的兼容性

  在IE9+、FF4.0+、Chrome19+、Safari6+都得到了较好的支持,使用时同样在其前面加上各浏览器厂商的识别符前缀

  1. .element {
  2. -moz-calc(expression);
  3. -webkit-calc(expression);
  4. -o-calc(expression);
  5. -ms-calc(expression);
  6. calc(expression);
  7. }

5、应用

  众所周知,如果元素的宽度为100%时,其自身不带其它盒模型属性设置还好,如果有别的类似margin、padding或border的属性设置,那将导致盒子被撑破。为了解决撑破容器的问题,以前我们只能计算div.box的宽度,用容器的宽度减去padding和border的值 ,但有时候我们苦于不知道元素的总宽度,比如说是自适应布局,只知道一个百分比值,但其它的值又是*px之类的值,这就比较难解决了。随着css3的出现,其中利用box-sizing来改变元素的盒模型以达到最终想要的效果,但是calc()解决此问题更加方便。

  1. <div class="wrapper">
  2. <div id="header">
  3. <h1>CSS3 calc()</h1>
  4. </div>
  5. <div id="main">
  6. <h1>test……</h1>
  7. <p>test……</p>
  8. </div>
  9. <div id="accessory">
  10. <ul>
  11. <li><a href="#">test1……</a></li>
  12. <li><a href="#">test2……</a></li>
  13. <li><a href="#">test3……</a></li>
  14. </ul>
  15. </div>
  16.  
  17. <div id="footer">
  18. footer
  19. </div>
  20. </div>
  1. <style>
  2. body {
  3. background:#E8EADD;
  4. color: #3C323A;
  5. padding: 20px;
  6. }
  7. .wrapper {
  8. width: 1024px;
  9. width: -moz-calc(100% - 40px);
  10. width: -webkit-calc(100% - 40px);
  11. width: calc(100% - 40px);
  12. margin: auto;
  13. }
  14. #header {
  15. background: #f60;
  16. padding: 20px;
  17. width: cal(100% - 20px * 2);
  18. }
  19. #main {
  20. border: 8px solid #B8C172;
  21. float: left;
  22. margin-bottom: 20px;
  23. margin-right: 20px;
  24. padding: 20px;
  25. box-sizing:border-box;
  26. width:75%;
  27.  
  28. /*
  29. width: 704px;
  30. width: -moz-calc(75% - 20px * 2 - 8px * 2);
  31. width: -webkit-calc(75% - 20px * 2 - 8px * 2);
  32. width: calc(75% - 20px * 2 - 8px * 2);*/
  33. }
  34. #accessory {
  35. border: 8px solid #B8C172;
  36. float: right;
  37. padding: 10px;
  38. box-sizing:border-box;
  39. width:calc(25% - 20px);
  40.  
  41. /*
  42. width: 208px;
  43. width: -moz-calc(25% - 10px * 2 - 8px * 2 - 20px);
  44. width: -webkit-calc(25% - 10px * 2 - 8px * 2 - 20px);
  45. width: calc(25% - 10px * 2 - 8px * 2 - 20px);*/
  46. }
  47. #footer {
  48. clear:both;
  49. background: #000;
  50. padding: 20px;
  51. color: #fff;
  52. width: cal(100% - 20px * 2);
  53. }
  54. </style>

css3的calc()属性的更多相关文章

  1. css3的calc属性不生效问题

    css3的 calc:计算属性.由于自己做的项目中这个属性不常用到,偶尔用一次还没效果. 后来研究了下是因为运算符两边没加空格. 错误示例:.content{width:calc(100%-50px) ...

  2. css3的 calc属性无效问题解决

    css3的 calc:计算属性. 运算符两边需要加空格,才有效. 错误示例:.mystyle{width:calc(100%-25px)}这样是不生效的 运算符"+ - * /"左 ...

  3. CSS的单位及css3的calc()及line-height百分比

    锚点:css中百分比减去固定元素 单位介绍 说到css的单位,大家应该首先想到的是px,也就是像素,我们在网页布局中一般都是用px,但是近年来自适应网页布局越来越多,em和百分比也经常用到了.然后随着 ...

  4. CSS的单位 及 css3的calc() 及 line-height 百分比

    CSS的单位及css3的calc()及line-height百分比 摘自:http://www.haorooms.com/post/css_unit_calc 单位介绍 说到css的单位,大家应该首先 ...

  5. CSS3的calc()使用

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

  6. CSS3中动画属性transform、transition 和 animation

    CSS3中和动画有关的属性有三个 transform.transition 和 animation.下面来一一说明:        transform   从字面来看transform的释义为改变,使 ...

  7. 半深入理解CSS3 object-position/object-fit属性

    半深入理解CSS3 object-position/object-fit属性 转载:https://www.zhangxinxu.com/wordpress/2015/03/css3-object-p ...

  8. 转载文章CSS3的calc()使用

    calc()对大家来说,或许很陌生,不太会相信calc()是css中的部分.因为看其外表像个函数,既然是函数为何又出现在CSS中呢?这一点也让我百思不得其解,今天有一同事告诉我,说CSS3中有一个属性 ...

  9. CSS3 的calc()方法的使用

    calc()简单介绍 calc()对大家来说,或许很陌生,不太会相信calc()是css中的部分.因为看其外表像个函数,既然是函数为何又出现在CSS中呢?这一点也让我百思不得其解,今天有一同事告诉我, ...

随机推荐

  1. Liferay开发实战(1):入门

    网址: https://www.liferay.com/zh/ 文档: https://dev.liferay.com/develop 入门文章网上很多,中文的较少,存在版本太旧的问题,也缺少一步一步 ...

  2. (转)python之from_bytes、to_bytes

    原文:https://blog.csdn.net/PYTandFA/article/details/78741339 https://python3-cookbook.readthedocs.io/z ...

  3. java信任所有证书

    package com.eeepay.cashOut.util; import java.io.BufferedReader; import java.io.DataOutputStream; imp ...

  4. [Fatal Error] :3:13: Open quote is expected for attribute "{1}" associated with an element type "id".

    用DOM解析XML时出现了如下错误: [Fatal Error] :3:13: Open quote is expected for attribute "{1}" associa ...

  5. 用SpringSecurity从零搭建pc项目-02

    参照这一篇文章吧,比如你不需要做的那么通用,取其中一部分代码即可. https://www.cnblogs.com/lihaoyang/p/8491792.html

  6. asp.net调用js方法

    C#前台js调用后台代码 前台js <script type="text/javascript" language="javascript"> fu ...

  7. 基于boot2docker部署Docker环境

    Docker轻量级的特性使得我们可以快速打包开发环境:一处编译,到处使用.我们可以在第一次编译好需要的开发环境,然后把镜像导出打包,只有有docker环境,便可以快速还原原来的开发环境. 很常用的一个 ...

  8. 24-hadoop-hiveserver2&jdbc-正则数据导入

    hive 可以 类似jdbc链接, 但启动的必须是hiveserver2, 才可以使用 hiveserver2 默认监听 10000 端口 1, 启动: nohup $HIVE_HOME/bin/hi ...

  9. CRM项目再分析建表

    今天老师带着我们分析了一点项目的业务,我们就觉得有些地方呢 有一些不妥额地方,然后呢  我们就在原来表的基础上做了一些修改! 我们也把我们组的项目业务的工作分配了一下! 但是我们遇到了一个组员不和我们 ...

  10. android开发学习笔记系列(6)--代码规范

    在开发android的时候,我对自己写的代码很是不满,原因在于自己看到别人的代码,很是头痛,原因很简单,别人写的代码,我就要去猜他的意思,极其烦恼,嗯,就是他没有遵循代码规范,因此我在博客园上寻找一篇 ...