使用CSS3中的calc()属性来以算式表达尺寸数值


Posted in HTML / CSS onJune 06, 2016

我们想要实现页面自适应布局时,通常因为margin的存在,而比较麻烦;有时候想要实现宽度自适应的输入框时,也因为padding或margin的存在,而相当繁琐,同时由于浏览器兼容性而导致最终效果不一致。css3新添加属性box-sizing,在一定程度上解决了上面的问题,而在今天的文章中我们来通过css3新增加的另外一个属性calc()来实现适应布局。

calc()是css3新添加属性,它可以让你使用一个算术表达式来表达长度值,这意味着可以用它来定义div的宽度,并设置margin、padding、border等。
calc()的运算规则:
1.使用”+”、”-”、”*”、”/”四则运算;
2.可以使用百分比、px、em、rem等单位;
3.可以混合使用各种单位进行计算。

用法
calc()语法非常简单,就像我们小时候学加 (+)、减(-)、乘(*)、除(/)一样,使用数学表达式来表示:

CSS Code复制内容到剪贴板
  1. .haorooms {   
  2.   width: calc(expression);   
  3. }  

这样padding和margin和百分比一起用,问题就可以解决了。

例如,我们margin是20px。那么我们就可以写成

CSS Code复制内容到剪贴板
  1. .haorooms{   
  2.   width: calc(100% - 20px);  //注:减号前后要有空格,否则很可能不生效!!   
  3. }  

也可以这么用:

CSS Code复制内容到剪贴板
  1. .box {   
  2.     background#f60;   
  3.     height50px;   
  4.     padding10px;   
  5.     border5px solid green;   
  6.      width: 90%;/*写给不支持calc()的浏览器*/  
  7.     width:-moz-calc(100% - (10px + 5px) * 2);   
  8.     width:-webkit-calc(100% - (10px + 5px) * 2);   
  9.     width: calc(100% - (10px + 5px) * 2);   
  10. }  

示例
实例1:定位在页面上的块元素,含有外边距

CSS Code复制内容到剪贴板
  1. .banner {   
  2.   position:absolute;   
  3.   left40px;   
  4.   width: -moz-calc(100% - 80px);   
  5.   width: -webkit-calc(100% - 80px);   
  6.   width: calc(100% - 80px);   
  7.   bordersolid black 1px;   
  8.   box-shadow: 1px 2px;   
  9.   background-coloryellow;   
  10.   padding6px;   
  11.   text-aligncenter;   
  12. }  

实例2:自动调整大小的表单,又适应容器

CSS Code复制内容到剪贴板
  1. input {   
  2.   padding2px;   
  3.   displayblock;   
  4.   width: -moz-calc(100% - 1em);   
  5.   width: -webkit-calc(100% - 1em);   
  6.   width: calc(100% - 1em);   
  7. }     
  8.   
  9. #formbox {   
  10.   width: -moz-calc(100%/6);   
  11.   width: -webkit-calc(100%/6);   
  12.   width: calc(100%/6);   
  13.   border1px solid black;   
  14.   padding4px;   
  15. }  
XML/HTML Code复制内容到剪贴板
  1. <form>  
  2.   <div id="formbox">  
  3.   <label>Type something:</label>  
  4.   <input type="text">  
  5.   </div>  
  6. </form>  
HTML / CSS 相关文章推荐
CSS3制作精致的照片墙特效
Jun 07 HTML / CSS
CSS3制作翻转效果_动力节点Java学院整理
Jul 11 HTML / CSS
CSS3旋转——彩色扇子兼容firefox浏览器
Jun 04 HTML / CSS
HTML5 Canvas实现文本对齐的方法总结
Mar 24 HTML / CSS
html5 canvas实现圆形时钟代码分享
Dec 25 HTML / CSS
HTML5中新标签和常用标签详解
Mar 07 HTML / CSS
html5使用canvas画一条线
Dec 15 HTML / CSS
带你认识HTML5中的WebSocket
May 22 HTML / CSS
Html5 web本地存储实例详解
Jul 28 HTML / CSS
Html5适配iphoneX刘海屏的简单实现
Apr 09 HTML / CSS
webView加载html图片遇到的问题解决
Oct 08 HTML / CSS
详解HTML5布局和HTML5标签
Oct 26 HTML / CSS
浅析css3中matrix函数的使用
Jun 06 #HTML / CSS
CSS3 animation实现逐帧动画效果
Jun 02 #HTML / CSS
利用CSS3的线性渐变linear-gradient制作边框的示例
Jun 02 #HTML / CSS
移动端Web页面的CSS3 flex布局快速上手指南
May 31 #HTML / CSS
CSS3条纹背景制作的实战攻略
May 31 #HTML / CSS
CSS3实现多重边框的方法总结
May 31 #HTML / CSS
结合CSS3的新特性来总结垂直居中的实现方法
May 30 #HTML / CSS
You might like
PHP实现自动发送邮件功能代码(qq 邮箱)
2017/08/18 PHP
纯JS实现五子棋游戏兼容各浏览器(附源码)
2013/04/24 Javascript
利用js的Node遍历找到repeater的一个字段实例介绍
2013/04/25 Javascript
浅谈jQuery异步对象(XMLHttpRequest)
2014/11/17 Javascript
js实现鼠标移到链接文字弹出一个提示层的方法
2015/05/11 Javascript
JavaScript精炼之构造函数 Constructor及Constructor属性详解
2015/11/05 Javascript
js仿淘宝和百度文库的评分功能
2016/05/15 Javascript
jquery 正整数数字校验正则表达式
2017/01/10 Javascript
js 实现获取name 相同的页面元素并循环遍历的方法
2017/02/14 Javascript
基于JavaScript实现数码时钟效果
2020/03/30 Javascript
PHP自动加载autoload和命名空间的应用小结
2017/12/01 Javascript
vue按需加载组件webpack require.ensure的方法
2017/12/13 Javascript
js判断节假日实例代码
2017/12/27 Javascript
js实现input密码框显示/隐藏功能
2020/09/10 Javascript
taro小程序添加骨架屏的实现代码
2019/11/15 Javascript
JS关闭子窗口并且刷新上一个窗口的实现示例
2020/03/10 Javascript
javascript 易错知识点实例小结
2020/04/25 Javascript
Angular+ionic实现折叠展开效果的示例代码
2020/07/29 Javascript
Python功能点实现:函数级/代码块级计时器
2019/01/02 Python
PowerBI和Python关于数据分析的对比
2019/07/11 Python
python创建与遍历List二维列表的方法
2019/08/16 Python
Python写出新冠状病毒确诊人数地图的方法
2020/02/12 Python
Python chardet库识别编码原理解析
2020/02/18 Python
Python调用.net动态库实现过程解析
2020/06/05 Python
python datetime时间格式的相互转换问题
2020/06/11 Python
解决PDF 转图片时丢文字的一种可能方式
2021/03/04 Python
雅高酒店中国:Accorhotels.com China
2018/03/26 全球购物
古驰英国官网:GUCCI英国
2020/03/07 全球购物
伊莱克斯阿根廷网上商店:Tienda Electrolux
2021/03/08 全球购物
毕业生的自我评价
2013/12/30 职场文书
利群广告词
2014/03/20 职场文书
幼儿园心得体会范文
2016/01/21 职场文书
小学语文教师竞聘演讲稿范文
2019/08/09 职场文书
深入浅析python3 依赖倒置原则(示例代码)
2021/07/09 Python
Python可变集合和不可变集合的构造方法大全
2021/12/06 Python
vue数据字典取键值项目的字典问题
2022/04/12 Vue.js