Firefox 4: CSS3 calc

本文介绍 CSS3 中的 calc() 函数使用方法,包括加、减、乘、除等基本运算,并展示了如何结合 max 和 min 函数来实现更复杂的样式调整。通过实例演示了如何设置元素宽度和高度。
calc() 这样用:

#a {
width:75%;
margin-right: 1em;
}
#b {
width: -moz-calc(25% - 1em);
}


目前支持
+, -, *, /, mod, min, and max

这样用:
div {
height: -moz-min(36pt, 2em);
width: -moz-max(50%, 18px);
}


详细信息请猛击:
[url]http://hacks.mozilla.org/2010/06/css3-calc/[/url]
### 关于 `calc()` 计算 `vh` 和 `rem` 差值的问题 #### 直接答案 **可以**。CSS 的 `calc()` 函数完全支持不同单位之间的混合计算,包括视口单位(`vh`)和相对单位(`rem`)的差值运算。 --- ### 一、基本用法示例 #### 有效语法: ```css .element { /* 视口高度减去2个rem单位 */ height: calc(100vh - 2rem); /* 更复杂的计算 */ padding: calc(5vh + 3rem); } ``` #### 计算规则: 1. 浏览器会先分别解析 `vh` 和 `rem` 的实际像素值 2. 然后执行减法运算 3. 最终结果转换为像素值应用 --- ### 二、注意事项 1. **运算符两侧必须留空格**: ```css /* 正确写法 */ calc(100vh - 2rem); /* 错误写法(会导致失效) */ calc(100vh-2rem); ``` 2. **嵌套计算支持**: ```css width: calc(calc(100vw - 10rem) / 3); ``` 3. **单位不可简化**: ```css /* 错误:不能抵消单位 */ calc(100vh - 100px - 2rem); /* 必须保留所有单位 */ ``` --- ### 三、实际应用场景 #### 场景1:固定页脚布局 ```css .main-content { height: calc(100vh - 6rem); /* 总高度减去页头页脚 */ } ``` #### 场景2:响应式间距 ```css .article { margin: calc(2rem + 5vh) calc(1rem + 2vw); } ``` #### 场景3:网格间隙计算 ```css .grid { gap: calc(0.5rem + 1vh); } ``` --- ### 四、浏览器兼容性 | 浏览器 | 支持版本 | 特殊情况 | |---------------|----------|---------------------------| | Chrome | 26+ | 完全支持 | | Firefox | 16+ | 早期版本需加-moz-前缀 | | Safari | 7+ | 需要-webkit-前缀(6.1+) | | Edge | 12+ | 完全支持 | | IE | 9+ | 部分限制(不支持vw/vh计算)| #### 渐进增强写法: ```css .element { height: 90vh; /* 回退方案 */ height: calc(100vh - 2rem); } ``` --- ### 五、高级技巧 1. **CSS变量结合计算**: ```css :root { --header-height: 4rem; } .content { height: calc(100vh - var(--header-height)); } ``` 2. **最小高度保护**: ```css .container { min-height: calc(100vh - 10rem); max-height: calc(100vh - 5rem); } ``` 3. **视口比例计算**: ```css .hero-image { width: calc(50vw - 3rem); } ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值