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>
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>head</span><span class="token punctuation">&gt;</span></span>
    <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>meta</span> <span class="token attr-name">charset</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>UTF-8<span class="token punctuation">"</span></span><span class="token punctuation">&gt;</span></span>
    <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>title</span><span class="token punctuation">&gt;</span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>title</span><span class="token punctuation">&gt;</span></span>
    <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>style</span><span class="token punctuation">&gt;</span></span>
        .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;
        }
    <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>style</span><span class="token punctuation">&gt;</span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>head</span><span class="token punctuation">&gt;</span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>body</span><span class="token punctuation">&gt;</span></span>
    <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>div</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>container<span class="token punctuation">"</span></span><span class="token punctuation">&gt;</span></span>
        <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>div</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>a1<span class="token punctuation">"</span></span><span class="token punctuation">&gt;</span></span> a1 <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>div</span><span class="token punctuation">&gt;</span></span>
        <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>div</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>a2<span class="token punctuation">"</span></span><span class="token punctuation">&gt;</span></span> a 2 <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>div</span><span class="token punctuation">&gt;</span></span>
    <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>div</span><span class="token punctuation">&gt;</span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>body</span><span class="token punctuation">&gt;</span></span>

</html>

发布了3 篇原创文章 · 获赞 0 · 访问量 139

猜你喜欢

转载自blog.csdn.net/weixin_45610510/article/details/101604194