css中的em,px,%

#用em创建弹性盒子

  1. 浏览器默认渲染文字大小为16px,也就是,Web页面中“body”的文字大小在用户浏览器下默认渲染是“16px”。
  2. "em"是一个相对大小,必然有一个参考值,那这个参考值就是相对于它的父级。
  3. 一般我们在body中设置font-size:16px,那么body的后代元素设置字体大小为0.75em,实际文字大小就是12px。(0.75*16px = 12px)(注意:不能重新在其后代元素中进行过显示的设置,否则失效)
  4. 为了方便我们也可以设置body的font-size:1em,在ie浏览器下我们得设置html的fint-size:100%。
<think> 在CSS中,实现一个元素宽度为父元素宽度100%减去20px,有几种方法: 1. 使用calc()函数:这是最直接的方法,calc()允许在声明CSS属性值时执行计算。 2. 使用内联级元素和负边距:这种方法可能不够直接,但有时在旧浏览器中作为备用方案。 3. 使用Flexbox或Grid布局:结合自动边距等,但通常不如calc()直接。 这里主要介绍calc()方法,因为它是为这种计算而设计的。 示例代码: 假设有一个父容器和一个子元素,我们希望子元素的宽度为父容器宽度减去20px。 注意:calc()函数中运算符两侧必须要有空格,例如:`calc(100% - 20px)`,否则可能无效。 另外,也可以用于高度、位置等属性。 下面是一个完整的示例: </think> 在 CSS 中实现 `100% - 20px` 这样的效果,通常需要使用 `calc()` 函数。以下是几种实现方法和详细解释: ### 方法 1使用 `calc()` 函数(推荐) ```css .element { width: calc(100% - 20px); /* 宽度为父容器宽度20px */ height: calc(100vh - 20px); /* 高度为视口高度减20px */ margin: 10px; background-color: lightblue; } ``` **代码解释**: 1. `calc(100% - 20px)`:动态计算宽度/高度值 - `100%` 表示父容器的完整宽度 - `- 20px` 减去固定的 20 像素 - **运算符两侧必须加空格**(如 `100% - 20px` 有效,`100%-20px` 无效) 2. 应用场景: - 响应式布局中创建固定间距 - 适配不同屏幕尺寸 - 避免内容溢出容器 ### 方法 2:嵌套容器实现(兼容旧浏览器) ```html <div class="parent"> <div class="spacer"> <div class="child">内容</div> </div> </div> ``` ```css .parent { width: 100%; } .spacer { padding-right: 20px; /* 右侧留出20px空间 */ } .child { width: 100%; /* 实际宽度 = 父宽度 - 20px */ background-color: lightgreen; } ``` **原理**: 1. 外层容器 `.spacer` 设置 `padding-right: 20px` 2. 内层 `.child` 设置 `width: 100%`,实际宽度等于 `.spacer` 的内容区宽度(即总宽减 20px) ### 方法 3:Flexbox 方案 ```css .container { display: flex; } .element { flex: 1; /* 占据剩余空间 */ margin-right: 20px; /* 右侧留出20px间隔 */ } ``` ### ⚠️ 注意事项 1. **运算符空格**:`calc(100%-20px)` 无效,必须写作 `calc(100% - 20px)` 2. **单位混合**:可混合使用 `%`, `px`, `em`, `vh` 等单位(如 `calc(50vw + 10em)`) 3. **浏览器兼容**: - `calc()` 兼容 IE9+ 和所有现代浏览器 -浏览器(如 IE8)需使用嵌套容器方案 4. **表达式限制**: - 不支持嵌套 `calc(calc(...))` - 乘除法被乘数必须是无单位数字(如 `calc(100px * 2)`) ### 完整示例 ```html <!DOCTYPE html> <html> <head> <style> .parent { width: 300px; height: 200px; border: 2px solid red; } .calc-box { width: calc(100% - 40px); /* 宽度减40px */ height: calc(100% - 30px); /* 高度减30px */ background: blue; margin: 15px; /* 居中效果 */ } </style> </head> <body> <div class="parent"> <div class="calc-box"></div> </div> </body> </html> ``` **效果说明**: - 蓝色盒子实际尺寸:宽度 = 300px - 40px = 260px - 高度 = 200px - 30px = 170px - 通过 `margin: 15px` 实现居中
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值