css 父子盒子的width 问题

本文探讨了CSS中影响子元素宽度的几种情况,包括:未设置宽度时默认撑满父盒子,设置`display: inline`或`inline-block`导致不占宽,`float`属性和`position`属性(如`absolute`、`fixed`)使元素脱离文档流不占宽,以及`flex`布局下`flex-direction: row`对子元素宽度的影响。总结指出,判断元素是否占宽关键看其是否被视为块级元素。

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

1.前言

平时在写css的时候,并没有刻意关注盒子的width属性,有时候要加,有时候不加,有时候默认占满父盒子,有时候却又没有宽度。今来看看到底有哪些情况

2.介绍
  • 首先width它不是一个可以继承的属性,之所以可以和父盒子宽度一样,应该还是因为块级元素默认独占一行的缘故会撑满父盒子的宽度
  • 知道它是因为块级元素的特性撑满父元素,很多现象就可以解释了
  • 下面我们通过代码来一探究竟
//dom结构
<body>
  <div class="box">
   <div class="son"></div>
  </div>
</body>
//css样式
.box{
    width: 600px;
    height: 300px;
    background-color: aquamarine;   
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%,-50%);
   }
   .son{
    height: 100px;
    background-color: forestgreen;
   }
1. 当没有给子盒子设置宽度时(默认撑满父盒子)效果如下

在这里插入图片描述

2. 当给子元素设置 display: inline ,或者 display: inline-block;时 默认宽度就为0;(也就是只要是行内元素了就不会默认占宽了)效果如下

在这里插入图片描述

3. 很多时候用到float时也会有with 不占宽的问题,这时候我们就要认清本质,在浮动的时候首先,元素可以当作会变为inline-block 并且脱离文档流 所以效果也可想而知 效果同上
4. 还有position属性 它也可以改变元素的display属性,同样因为值为 absolute、fixed 都会使元素脱离文档流,并且可以看所display的值改为了inline-block 所以也同样不会占宽度
5. 还有使用flex布局时,如果父盒子 flex-direction: row;

也会使元素变成inline-block 同样也会使得子元素不占宽度

6.总结

总的来说想判断占不占宽度,就想想它是不是块级元素了,如果是那么便会默认占满父盒子的宽度

  • 个人理解 如果有错误请及时告知,以免误导其他同学!!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

木木林_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值