CSS-calc 兼容写法

摘要:
/*编写到不支持calc()的浏览器*/-moz calc(100%-(10px+5px)*2)-webkit calc(100%-(10px+5px;计算值(100%-(10px+5px)*2);包括外缘。横幅{position:绝对;-webkit计算(100%-80px);计算(100%-80 px);方框阴影:黄色;

90%;/*写给不支持calc()的浏览器*/ -moz-calc(100% - (10px + 5px) * 2); -webkit-calc(100% - (10px + 5px) * 2); calc(100% - (10px + 5px) * 2);

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

calc()是css3新添加属性,它可以让你使用一个算术表达式来表达长度值,这意味着可以用它来定义div的宽度,并设置margin、padding、border等。
calc()的运算规则

使用”+”、”-”、”*”、”/”四则运算;
可以使用百分比、px、em、rem等单位;
可以混合使用各种单位进行计算。

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

.banner {
  position:absolute;
  left: 40px;
   -moz-calc(100% - 80px);
   -webkit-calc(100% - 80px);
   calc(100% - 80px);
  border: solid black 1px;
  box-shadow: 1px 2px;
  background-color: yellow;
  padding: 6px;
  text-align: center;
}

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

input {
  padding: 2px;
  display: block;
   -moz-calc(100% - 1em);
   -webkit-calc(100% - 1em);
   calc(100% - 1em);
}  

#formbox {
   -moz-calc(100%/6);
   -webkit-calc(100%/6);
   calc(100%/6);
  border: 1px solid black;
  padding: 4px;
}

<form>
  <div id="formbox">
  <label>Type something:</label>
  <input type="text">
  </div>
</form>

浏览器兼容性

    firefox 4.0+已经开支支持calc()功能,需要使用-moz-calc()私有属性;
    chrome从19 dev版,开始支持私有的-webkit-calc()写法;
    IE9支持原生写法,calc();
    Opera貌似还不支持~~

This is why you see examples like this:

 calc(100%/3 - 2*1em - 2*1px);
That’s actually the minimum number of characters you need to write that particular expression, so far as I can tell. Given the grammar requirements, you could legitimately rewrite that example like so:

 calc(100% / 3 - 2 * 1em - 2 * 1px);
…but not like so:

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

免责声明:文章转载自《CSS-calc 兼容写法》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇用脚本完成mysql工作Delphi6/7 中XML 文档的应用下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

springboot开启gzip压缩

springboot 2.x开启gzip压缩 1.application.yml配置 server: compression: enabled: true min-response-size: 1 mime-types: application/json 2.代码设置(application.yml配置与代码设置二选一) @...

备份与还原mysql 数据库的常用命令。

一、备份数据: Mysqldump常用命令: mysqldump -u用户名 -p密码 --databases 数据库1 数据库2 > xxx.sql 常见选项: -u: 用户名 -p: 密码 -P: 端口号,不写默认3306 --all-databases, -A:备份所有数据库 --databases, -B: 用于备份多个数据库,如果没有该选项...

VB串口通信详解

       转载:https://blog.csdn.net/dongyue786/article/details/8177047   MSComm 控件通过串行端口传输和接收数据,为应用程序提供串行通讯功能。MSComm控件在串口编程时非常方便,程序员不必去花时间去了解较为复杂的API函数,而且在VC、VB、Delphi等语言中均可使用。 Micros...

内层div的margintop影响外层div——引出外边距合并Collapsing margins

内层div的margin-top影响外层div——引出外边距合并Collapsing margins 作者:zccst 今天才算是了解边距合并。正如一位前辈所言,每一个CSS的坑,都让你学到不少知识。 <style type="text/css">body { margin:0; padding:0;}div { margin:0; paddi...

IR-drop问题的分析与修复(五):Padding Clock Cells: ICC2 &amp;amp; Innovus

本文转自:自己的微信公众号《集成电路设计及EDA教程》 时钟网络有其特殊性:1、频率最高;2、翻转最频繁;3、扇出最大。时钟单元:Buffer、Inverter、ICG;由于时钟网络的扇出很大,因此时钟树上的Buffer或者Inverter的驱动强度必须足够大。另外,由于时钟频率非常高,翻转非常频繁,因此如果有普通的Cell离时钟单元非常近的话很有可能会...

Javascript高级程序设计3笔记

  完全是笔记,99.9%摘录自高程3,方便学习复习。 对象认识 “类” 原型 继承   一、对象认识 最原始的创建对象方式:   1 var person = new Object(); //new一个Object对象 person 2 person.name = "hank"; //给person添加属性name,初值为hank 3 perso...