使用css3中calc()进行自适应布局

calc()能做什么?

calc()可以通过计算得到元素的宽度或者高度,让我们很容易进行自适应布局。

你可以为一个div元素,使用百分比、em、px和rem单位值计算出其宽度或者高度,比如说“calc(50% + 2em)”,这样一来你就不用考虑元素div的宽度值到底是多少,而把这个任务交由浏览器去计算。

calc()语法

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

.elm {
   calc(expression);
}

其中"expression"是一个表达式,用来计算长度的表达式。

calc()的运算规则

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

使用“+”、“-”、“*” 和 “/”四则运算;
可以使用百分比、px、em、rem等单位;
可以混合使用各种单位进行计算;
表达式中有“+”和“-”时,其前后必须要有空格,如"widht: calc(12%+5em)"这种没有空格的写法是错误的;
表达式中有“*”和“/”时,其前后可以没有空格,但建议留有空格。


浏览器的兼容性

浏览器对calc()的兼容性还算不错,在IE9+、FF4.0+、Chrome19+、Safari6+都得到较好支持,同样需要在其前面加上各浏览器厂商的识别符,不过可惜的是,移动端的浏览器还没仅有“firefox for android 14.0”支持,其他的全军覆没。

大家在实际使用时,同样需要添加浏览器的前缀。

实例

<head>
   <style>
    .left-elem {
         -moz-calc(100% - 100px);
         -webkit-calc(100% - 100px);
         calc(100% - 100px);
        float: left;
        overflow: hidden;
        white-space: nowrap;
        text-overflow: ellipsis;
        }

    .right-elem {
         100px;        
        text-align: right;
        display: inline-block;
    }
   </style>
</head>
<body>
   <div style="border:solid 1px red">
      <div class="left-elem">
        xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
      </div>
      <div class="right-elem">
        yyyyyyyyy
      </div>
   </div>
</body>

实现的效果如下:

使用css3中calc()进行自适应布局

当缩小浏览器尺寸时,左边的xxxxxx... 会呈现自适应效果。