常规流,浮动流,定位,css:width:auto和margin:auto以及了解margin盒子塌陷

本文介绍了CSS布局中的常规流、浮动流和定位,包括绝对定位、相对定位和固定定位。详细讨论了width和margin为auto的情况,以及margin盒子塌陷现象和解决方法,如触发BFC。通过理解这些概念,可以更好地掌握元素在页面中的布局和对齐方式。

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

当在常规流下:

1)设置盒子width或margin为auto时,这时候子盒子会吸收所有父盒子未设置的宽度,不影响高(这就是设置margin:0 auto;会居中的原理);设置padding为auto不起作用
2)同时设置width和margin为auto时,这时width会抢走所有的父盒子未设置的宽,margin不起作用

在浮动流下:

设置盒子width或margin为auto时,不起作用(因为脱离文档流),只有里面有内容时才能撑开盒子,否则的话margin或width为0;非常规流下,外边距不会合并(margin)

定位(绝对定位,相对定位,固定定位)

一个元素,只要position的取值不是static,认为该元素是一个定位元素。定位元素会脱离文档流(相对定位除外),脱离文档流后浮动和常规盒子会被定位元素压着,可以设置z-index来改变(z-index设置为负数的话,会被文档流和浮动覆盖)相对定位的偏移量相对现在位置偏移;但是不会影响别的元素
绝对定位和固定定位都会改变让元素变成块盒,绝对定位子绝父相,用来做精准定位(子元素绝对定位,父元素相对定位;子元素会相对父级元素的第一个定位元素来定位,父级没有定位元素的话就相对html定位);固定定位相对浏览器视口做定位(一般用于广告、弹窗);

想要左右居中显示的话可以left和right偏移量都写上0,margin:auto;
想要上下居中显示的话可以top和bottom偏移量都写上0,margin:auto;

设置margin塌陷

 <style>
    .box {
      width: 200px;
      height: 100px;
      background-color: rgb(211, 31, 31);
    }
    .box div{
      margin: 20px 0;
      width:50px;
      height: 50px;
      background-color: rgb(74, 36, 134);
    }
 </style>
 <div class="box">
    <div></div>
 </div> 

你会发现父元素盒子塌陷了,原理:父子嵌套元素在垂直方向的margin,父子元素是结合在一起的,他们两个的margi会取其中最大的值,(兄弟元素之间也会取最大值)解决办法:
1)给父元素加边框(不推荐使用)
2)给父元素设置padding(不推荐使用)
3)触发BFC;父盒子设置下面四种之一(但是用的时候会有不同的影响,需要具体情况使用)
float的值不为none;
overflow的值不为visible;
position的值为fixed / absolute;
display的值为table-cell / table-caption / inline-block / flex / inline-flex

BFC(块级格式化上下文 Block Formatting Context)

它是一块独立渲染的区域,它规定在该区域中常规流块盒的布局
不同的BFC区域渲染时互不干扰
创建的BFC区域隔绝了内部核外部的联系,内部渲染不会影响外部规则
1)创建BFC元素时,需要计算内部浮动元素(清除浮动,一般还是建议利用伪类来清除浮动)
2)创建BFC元素时,他的边框不会与浮动元素重叠
3)创建BFC元素时,不会和子元素合并坍塌

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值