calc的介绍

在css3样式中有一个类似与函数的计算属性calc(),它主要用于指定元素的长度,无论是border、margin、pading、font-size和width等属性都可以使用calc来设置动态值。calc支持的运算单位有rem , em , %, px,calc是支持单位的混合使用的,其计算优先级别和数学一致。

calc的用法

.elm{
width:calc(expression);
}

其中,expression是一个用来计算长度的表达式,支持“+”,“-”,“*”,“/”运算符。

注意1: 表达式中有“+”和“-”时,其前后必须要有空格,如"widht: calc(12%+5em)"这种没有空格的写法是错误的;而对于“*”,“/”并没有这种要求,但为了风格的统一,建议前后也要留空格。例如:

width: calc(100% -8px); /* 这样会出错,结果为0 */
width: calc(100% - 8px); /* 当 + - 符号用空格隔开时,运算成功 */

注意2:使用 * / 运算符时,必须保证有一个值为数值类型;

calc的兼容:

在IE9+、FF4.0+、Chrome19+、Safari6+支持较好,移动端支持不理想。 如图:

兼容性前缀:

.elm{
width: calc(80% - 10px);
width: -moz-calc(80% - 10px); /*Firefox*/
width: -webkit-calc(80% - 10px); /*chrome safari*/
}

  

在less如何使用

由于less中会把它当表达式计算掉了,需要在参数外面加上: ~("expression"),如:

.elm{
width: calc(~"100% - 80px");
}

  

或者使用e(“”)包裹在里面,如:

width:e("calc(100% - 80px)");

  

可如果要用变量怎么用呢?也不复杂,像下面这样就搞定啦。

.class {
@cap: 50px;
height: calc(~"100% - @{cap}");
}

  

办公资源网址导航 https://www.wode007.com

calc实现适应布局例子

必须使用设置百分比页面同时又有margin时,会出现不够满挤到下一行的情况,所以要用到calc重新计算百分比

<div class="container">
<div class="row">
<div class="col-sm-4 col-xs-6"></div>
<div class="col-sm-4 col-xs-6"></div>
<div class="col-sm-4 col-xs-12"></div>
</div>
<div class="row">
<div class="col-sm-3 col-xs-3"></div>
<div class="col-sm-6 col-xs-6"></div>
<div class="col-sm-3 col-xs-3"></div>
</div>
<div class="row">
<div class="col-sm-1 col-xs-2"></div>
<div class="col-sm-1 col-xs-2"></div>
<div class="col-sm-2 col-xs-8"></div>
<div class="col-sm-2 col-xs-3"></div>
<div class="col-sm-6 col-xs-3"></div>
</div>
</div>

  

@media screen and (min-width:768px){
.col-sm-{
width: calc(8.1% - 20px);
}
.col-sm-{
width: calc(16.7% - 20px);
}
.col-sm-{
width: calc(% - 20px);
}
.col-sm-{
width: calc(33.3% - 20px);
}
.col-sm-{
width: calc(%- 20px);
}
.col-sm-{
width: calc(% - 20px);
}
}

最新文章

  1. redis批量删除key
  2. WPF自定义控件与样式(15)-终结篇 &amp; 系列文章索引 &amp; 源码共享
  3. C#时间处理--DateTime和TimeSpan
  4. How Tomcat Works(六)
  5. 浅谈JavaScript递归
  6. JAVA反射中的getFields()方法和getDeclaredFields ()方法的区别
  7. FFmpeg的HEVC解码器源代码简单分析:解析器(Parser)部分
  8. C# 离线人脸识别 ArcSoft V2.0 Demo
  9. 转 一个oracle11g 使用exp导出空表丢失的问题分析及解决办法
  10. Docker学习笔记-Redis 安装
  11. 【PgSQL安装(含配置)】PostgreSQL简称PgSQL,是1980以加利福尼亚大学开发的DBMS,严格遵守标准SQL。
  12. “耐撕团队”部署并测试onezero团队记帐本项目
  13. codeforces279B
  14. scrapy框架之CrawlSpider操作
  15. [ 9.11 ]CF每日一题系列—— 441C暴力模拟
  16. 《Linux内核分析》第二周学习小结 操作系统是如何工作的?
  17. hdu2444The Accomodation of Students (最大匹配+推断是否为二分图)
  18. 在Maven仓库中添加Oracle数据库的JDBC驱动依赖
  19. 实验一 《网络对抗技术》逆向及Bof技术
  20. Atitit.故障排除系列-----apache 不能启动的排除

热门文章

  1. 全网最全测试点总结:N95 口罩应该如何测试?
  2. 大型Electron应用本地数据库技术选型
  3. iOS-Reactive Cocoa的常见用法
  4. Lavarel 执行:php artisan migrate时报错
  5. .net core3.1 abp动态菜单和动态权限(动态菜单实现和动态权限添加) (三)
  6. IAT表
  7. CSS文本相关之水平排列[4]
  8. 在tp5.1中获取所有控制器的文件名和所有控制器下的方法名
  9. [问题解决]coding时修改代码键入前边后边的自动删除
  10. 3.kubernetes的CNI网络插件-Flannel