css3实现可以计算的自适应布局——calc()

本文介绍了CSS中的calc()函数,这是一种用于动态计算元素尺寸的强大工具。通过混合使用不同的单位如百分比、像素等,可以灵活地设定元素的宽度、高度、边距等属性。文章提供了具体的使用案例,帮助读者理解如何在实际布局中应用此函数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

开始我们需要先了解什么是calc() ,calc()是一个CSS函数,你可以使用calc()给元素的margin、pading、width等属性设置

而且你还可以在一个calc()内部嵌套另一个calc() 

clac()的语法就非常简单了 , 使用数学表达式来表示: 

expression 一个数学表达式,用来计算长度的表达式,该表达式的结果会作为最终的值。

clac()使用“+”、“-”、“*” 和 “/”四则运算,可以使用百分比、px、em、rem等单位,而且可以混用多种单位计算

需要注意的是

如果“0”作为除数会让HTML解析器抛出异常.

“+”和“-”时,前后必须要有空格 比如calc(100%-15px) 这是错误的

“*”和“/”时,前后可以不留空格,但是建议加上空格

 

举两个栗子

复制代码
 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>demo</title>
 6 <style>
 7 .box{
 8     width: 500px;
 9     height: 300px;
10 }
11 .left{
12     width: 250px;
13     background:#ccc;
14     float: left;
15 }
16 .right{
17     width: calc(100% - 250px);
18     float: right;
19     background: #333;
20 }
21 .left,.right{
22     height: 100%;
23 }
24 </style>
25 </head>
26 <body>
27 
28 <div class="box">
29     <div class="left"></div>
30     <div class="right"></div>
31 </div>
32 
33 </body>
34 </html>
复制代码

 

复制代码
 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>demo</title>
 6 <style>
 7 .demo{
 8     width: 500px;
 9 }
10 .box{
11     width: 100%;
12     height: 30px;
13     background: #ccc;
14 }
15 input{
16   width: 100%;
17   border:1px solid #333;
18   width: calc(100% - (0px + 1px) * 2);
19 }
20 </style>
21 </head>
22 <body>
23 <div class="demo">
24     <div class="box">
25         <input type="text">
26     </div>
27 </div>
28 </body>
29 </html>
复制代码

 

如果不使用calc()

 

 

 兼容问题也不是很大


 强势的分割线 -- 原创文章码字不易,转载请注明出处

### 使用 `postcss-pxtorem` 实现宽度和高度的自适应布局 为了使网页能够根据不同屏幕尺寸进行响应式调整,可以利用 `postcss-pxtorem` 将固定的 px 单位转换为相对单位 rem。这有助于创建更加灵活且易于维护的设计方案。 #### 安装依赖包 首先,在项目根目录下执行命令安装必要的 PostCSS 插件: ```bash npm install postcss postcss-pxtorem --save-dev ``` 接着配置 PostCSS 来启用这些插件。对于 Nuxt 或 Vue CLI 创建的应用程序来说,通常可以在项目的 `package.json` 文件内指定 PostCSS 配置选项;而对于 Vite 构建工具,则可能需要单独设置一个名为 `.postcssrc.js` 的文件来完成相同的工作[^2]。 #### 设置 PostCSS 配置 下面是一个典型的 PostCSS 配置实例,展示了如何集成 `postcss-pxtorem` 并对其进行参数化定制以便于处理宽度和高度属性中的像素值: ```javascript// .postcssrc.js or equivalent configuration file module.exports = { plugins: [ require(&#39;autoprefixer&#39;), require(&#39;postcss-import&#39;), require(&#39;postcss-preset-env&#39;)({ stage: 1, features: {&#39;custom-properties&#39;: false} }), require(&#39;postcss-pxtorem&#39;)({ rootValue: 16, // 设定设计稿的基础字体大小,默认是16px propList: [&#39;*&#39;], // 对所有样式属性生效,也可以只针对特定属性如[&#39;font&#39;, &#39;line-height&#39;] selectorBlackList: [], // 排除某些选择器不被转化成rem minPixelValue: 2, // 不小于该数值才转化为rem mediaQuery: true // 是否允许媒体查询里的px也转换为rem }) ] }; ``` 上述代码片段中设置了几个重要参数用于控制哪些 CSS 属性会被转换以及怎样计算最终的结果。特别是当涉及到宽高比例时,确保正确设定 `rootValue` 参数非常重要,因为它决定了整个文档流中文本节点的实际显示尺度[^3]。 #### 编写 HTML 和 CSS 一旦完成了以上准备工作之后就可以按照常规方式编写 HTML 结构并应用相应的类名或 ID 给目标容器。这里给出一段简单的例子说明如何定义具有动态变化特性的盒子模型: ```html<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"/> <title>Responsive Box Example</title> <link rel="stylesheet" href="./styles.css"/> </head> <body> <div class="responsive-box"></div> </body> </html> ``` 对应的 CSS 样式表如下所示: ```css/* styles.css */ .responsive-box { width: 50%; /* 这里原本可能是固定像素值比如&#39;375px&#39;*/ height: calc(100vh / 2); /* 利用视窗单位配合calc函数实现半屏高的效果 */ background-color: lightblue; } @media (max-width: 600px){ .responsive-box{ width:90%; } } ``` 在这个案例里面,`.responsive-box` 类下的元素会根据当前窗口的比例自动调整自身的宽度至父级容器的一半,并保持其高度始终占据半个可视区域的高度。同时通过媒体查询语句进一步增强了组件在小型屏幕上表现得更好——即让它的宽度扩大到几乎填满整个可用空间[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值