金木编程

公众号:金木编程

导航

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

calc()能做什么?

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

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

 

calc()语法

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

.elm {
  width: 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 {
        width: -moz-calc(100% - 100px);
        width: -webkit-calc(100% - 100px);
        width: calc(100% - 100px);
        float: left;
        overflow: hidden;
        white-space: nowrap;
        text-overflow: ellipsis;
        }

    .right-elem {
        width: 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>

 

实现的效果如下:

 

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

 

posted on 2016-07-11 14:58  金木杂谈  阅读(693)  评论(0编辑  收藏  举报