使用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>

实现的效果如下:

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

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

上一篇:numpy中数据合并,stack ,concentrate,vstack,hstack


下一篇:webview改变网页宽度