CSS3: calc计算属性

本文介绍了CSS3中的calc计算属性,它允许为元素的尺寸设置动态值。支持的运算单位包括rem、em、percentage和px。文章强调了calc内部表达式使用运算符号时需加空格以避免解析错误,并通过实战示例展示了calc在响应式布局中的应用。

前言
正如其名,calc是css3中新增的计算属性,让很多属性增加了一个表达式的说法;
标准的写法:

  .class{
       /*
		 area: expression;
       */
	   width:calc();
	   padding:calc();
	   margin-top:calc();
	   ...
   }

兼容性
在这里插入图片描述
基本理论

  • calc可以做用于任何具有大小的东东,比如border、margin、pading、font-size和width等属性设置动态值
  • 支持的运算单位: rem , em , percentage , px
  • 计算优先级别和数学一致

注意点:

calc 内部的表达式,在使用运算符号时,两遍必须加上空格(虽然乘除可以无视,但还是建议带上)!!!!!,不然会解析错误!!,看演示写法

	width:calc(10 * 10px);
	width:calc(50% - 50px);
	width:calc(50% + 5em);
	width:calc(10% / 1rem);

实战效果图
仅仅作为演示,响应伸缩在这里插入图片描述
实战代码

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <title>CSS3 Calc</title>
    <style type="text/css" media="screen">
    	html{
    		font-size:62.5%;
    	}
		.wrapper{
			width:100%;
			border:5px solid #f00;
			margin:10px ;
			box-sizing:border-box;
			height:200px;
			clear:b;
		}
		.items{
			height:calc(100% - 40px);
			display:inline-block;
			border:1px solid #f70;
			text-align:center;
		}

		.w1 .items{

			float:left;
			margin-top:calc( 5 * 4px  );
			border:3px solid #0F16C6;
			width:calc(100% / 3 - 6px)
		}

		.w2 .items{
			float:left;
			margin-top:calc(200px - 20px * 9);
			width:calc(100% / 3 - 2px)
		}

		.w3 .items{
			float:left;
			width:calc(100% / 3 - (3 * 6px));
			margin:calc(2px * 4 );
		}

		.w3 .items:first-child{
			padding:calc(5 * 1rem - 3rem);
			box-sizing:border-box;
		}

    </style>
</head>

<body>
    <div class="wrapper w1">
        <div class="items">margin-top:calc( 5 * 4px  );</div>
        <div class="items">margin-top:calc( 5 * 4px  );</div>
        <div class="items">margin-top:calc( 5 * 4px  );</div>
    </div>
    <div class="wrapper w2">
        <div class="items">margin-top:calc(200px - 20px * 9);</div>
        <div class="items">margin-top:calc(200px - 20px * 9);</div>
        <div class="items">margin-top:calc(200px - 20px * 9);</div>
    </div>
    <div class="wrapper w3">
        <div class="items">width:calc(100% / 3 - (3 * 6px));<br>margin:calc(2px * 4 );<br>padding:calc(5 * 1rem - 3rem);</div>
        <div class="items";>width:calc(100% / 3 - (3 * 6px));<br>margin:calc(2px * 4 )</div>
        <div class="items";>width:calc(100% / 3 - (3 * 6px));<br>margin:calc(2px * 4 )</div>
    </div>
</body>

</html>



总结
calc 和flexbox搭配,用来写流式布局非常好;

CSS中,`calc()`函数用于执行计算以确定CSS属性值。你提到的写法 `height: calc(100% - 300)` 存在语法错误,正确的写法应该是: ```css height: calc(100% - 300px); ``` ### 回答问题 #### 为什么原来的写法不对? 1. **单位问题**:在CSS中,`calc()` 函数中的数值必须带有单位(例如 `px`, `%`, `em` 等),除非是乘法或除法的结果为纯数字。 在你的例子中,`300` 没有单位,而CSS无法理解这个值代表什么。因此需要指定单位,比如 `300px` 或 `300em`。 2. **空格问题**:在 `calc()` 中,加号 (`+`) 和减号 (`-`) 的前后必须有空格,否则会导致解析错误。例如: ```css height: calc(100% - 300px); /* 正确 */ height: calc(100%-300px); /* 错误 */ ``` #### 正确的写法及解释 以下是正确的写法及其解释: ```css height: calc(100% - 300px); ``` - `100%` 表示元素的高度占父元素高度的100%。 - `- 300px` 表示从100%中减去300像素。 - 结果是:元素的高度将是父元素高度的100%,再减去300像素。 #### 示例代码 以下是一个完整的HTML和CSS示例,展示如何使用 `calc()` 来设置高度: ```html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Calc Example</title> <style> body, html { margin: 0; padding: 0; height: 100%; } .container { height: calc(100% - 300px); /* 父元素高度减去300px */ background-color: lightblue; } </style> </head> <body> <div class="container"> 这个容器的高度是父元素高度减去300px。 </div> </body> </html> ``` 上述代码中,`.container` 的高度被设置为页面高度的100%,再减去300像素。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值