CSS3中的calc( )属性--可以计算的属性

本文详细介绍了CSS3中的calc()函数,它允许开发者通过简单的数学运算动态地设置元素的尺寸和位置,例如宽度、边距、填充等。文章还提供了实际应用场景的例子,包括三局平均分布布局和绝对定位元素的居中。

语法:
calc() = calc(四则运算)
说明:
(1)calc是英文单词calculate(计算)的缩写,是css3的一个新增的功能,你可以使用calc()给元素的border、margin、pading、font-size和width等属性设置动态值。
(2)任何长度值都可以使用calc()函数进行计算;
(3)calc()函数支持 “+”, “-“, “*”, “/” 运算;
(4)calc()函数使用标准的数学运算优先级规则;
(5)但需要注意的是 + - 必须用空格隔开;

width: calc(100% -8px);     // 这样会出错,结果为0
width: calc(100% - 8px);    //当 + -  符号用空格隔开时,运算成功

兼容性:
这里写图片描述
使用
calc()可以使用数学运算中的简单加(+)、减(-)、乘(*)和除(/)来解决问题,而且还可以根据单位如px,em,rem和百分比来转化计算。
比如三局平均分布的布局,中间间距为5像素。
这里写图片描述

<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
    <title>btn</title>
    <style>
        *{ margin: 0; padding: 0; }
        .box{ 
            width: calc(100%/3 - 5px); 
            float: left; 
            margin-right: calc(5px*3 /2);
            background: #aaa;
            color: #333;
            height: 100px;
            text-align: center;
            line-height: 100px;
        }
        .box:nth-child(3){
            margin-right: 0;
        }
    </style>
</head>
<body>
    <div class="box">1</div>
    <div class="box">2</div>
    <div class="box">3</div>
</body>
</html>

calc()还是比较用的,比如说想居中一个绝对定位的元素,一般都是left:50%;top:50%;然后再margin-left/margin-top值为-50%;现在.运用calc()也可以实现居中。

<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
    <title>btn</title>
    <style>
        .box{
            width: 100px; height: 100px;
            background: #aaa;
            position: absolute;
            left: calc( 50% - 50px );
            top: calc( 50% - 50px );
        }
    </style>
</head>
<body>
    <div class="box"></div>
</body>
</html>

效果如下:
这里写图片描述

### 使用 `calc()` 函数计算元素的剩余高度 在 CSS3 中,`calc()` 函数可以用来动态地设置元素的高度,特别是当需要基于父容器或其他因素计算剩余空间时。通过组合百分比单位和其他绝对长度单位(如 px),能够创建灵活且响应式的布局。 对于计算剩余高度的情况,通常会遇到如下场景:有一个固定的头部或底部区域,而中间的内容区希望占据页面上除去这些固定部分之后的所有可用垂直空间。此时就可以利用 `calc()` 来完成这一目标[^1]。 下面是一个简单的例子展示如何应用 `calc()` 实现这样的效果: ```css html, body { height: 100%; margin: 0; } .container { display: flex; flex-direction: column; min-height: 100vh; /* 确保整个视口都被覆盖 */ } .header { background-color: #f8f9fa; padding: 20px; } .content { flex-grow: 1; background-color: white; padding: 20px; box-sizing: border-box; } .footer { background-color: #e9ecef; text-align: center; padding: 10px; } ``` 在这个案例里,并未直接使用 `calc()` 来定义 `.content` 的高度;而是借助 Flexbox 布局中的 `flex-grow` 属性让其自动填充剩下的空间。不过如果想要更精确控制或者不适用Flexbox,则可以直接指定`.content` 高度为 `calc(100% - (headerHeight + footerHeight))` 形式[^2]。 例如,假设头尾部各占去50像素高,那么内容区应该被设为: ```css .content { height: calc(100vh - 70px); /* 总高度减去顶部和底部分别占用的空间 */ } ``` 这种方法使得即使窗口大小发生变化,内容区也能始终保持适当的比例并充分利用屏幕上的每一寸空间[^3]。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值