CSS3:calc() 属性用法

简介:

calc是英文单词calculate(计算)的缩写,是css3的一个新增的功能,可以使用calc()给元素的border、margin、pading、font-size和width等属性设置动态值。

calc()能给元素的做计算,可以给一个div元素,使用百分比、em、px和rem单位值计算出其宽度或者高度,比如说:width:calc(50% + 2em)

calc()的语法:

.elm {
    width: calc(expression);//其中"expression"是一个用来计算长度的表达式
}

calc()的运算规则:

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

注:使用时,注意查看浏览器兼容性

浏览器兼容性

例子1:

每个格子width随着浏览器的放大缩小而改变
<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1" />
        <title>calc</title>
        <style type="text/css">
            * {margin: 0;padding: 0;}
            .col-3 {
                width: calc(100%/4 - 5px);
                float: left;
                margin-right: calc(5px*4/3);
                background: #eee;
                color: #333;
                height: 100px;
                text-align: center;
                margin-bottom: calc(5px*4/3);
                font-size: 18px;
                line-height: 100px;
            }
            .col-3:nth-child(4n) {margin-right: 0;}
        </style>
    </head>
    <body>
        <div class="container">
            <div class="col-3">1</div>
            <div class="col-3">2</div>
            <div class="col-3">3</div>
            <div class="col-3">4</div>
            <div class="col-3">5</div>
            <div class="col-3">6</div>
            <div class="col-3">7</div>
            <div class="col-3">8</div>
            <div class="col-3">9</div>
            <div class="col-3">10</div>
            <div class="col-3">11</div>
            <div class="col-3">12</div>
            <div class="col-3">13</div>
            <div class="col-3">14</div>
            <div class="col-3">15</div>
            <div class="col-3">16</div>
        </div>
    </body>
</html>

例子2:

a1和a2之间、跟页面左右间隔都是30px,其宽度随着页面宽度而自适应
<!DOCTYPE html>
<html>

    <head>
        <meta charset="UTF-8">
        <title></title>
        <style>
            .container {
                width: 500px;
                height: 100px;
                background: pink;
                margin: 50px auto;}
            .a1 {
                float: left;
                margin: 30px 15px 0 30px;
                width: -webkit-calc((100% - 90px)/2);
                background: red;
            }
            .a2 {
                float: left;
                margin: 30px 30px 0 15px;
                width: -webkit-calc((100% - 90px)/2);
                background: green;
            }
        </style>
    </head>
    <body>
        <div class="container">
            <div class="a1"> a1 </div>
            <div class="a2"> a 2 </div>
        </div>
    </body>
</html>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 14,687评论 1 92
  • 摘自http://www.w3cplus.com/css3/how-to-use-css3-calc-functi...
    Lareina林暖暖阅读 4,093评论 0 0
  • 其实CSS中的长度单位一共有8个,分别是px,em,pt,ex,pc,in,mm,cm。(ex:相对长度单位。相对...
    iam梦的的阅读 3,741评论 0 0
  • 什么是calc()? 学习calc()之前,我们有必要先知道calc()是什么?只有知道了他是个什么东东?在实际运...
    ddai_Q阅读 3,051评论 0 1
  • 今天浏览这个http://www.sitepoint.com站时,因为好奇看了下人家写的代码,结果发现了这行代码,...
    arlene112阅读 4,427评论 0 0

友情链接更多精彩内容