margin取负值详解

本文深入探讨CSS中Margin取负值的使用场景及效果,包括子集总宽度不超过父级宽度时的元素覆盖现象,以及超过父级宽度时元素的重新定位。通过具体实例,解释了Margin-left和Margin-right负值如何影响元素布局。

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

Margin取负值
Margin-left:
(1) 子集总宽度宽度不超过父级宽度时(不换行)
margin-left取负值表示包含块向左移动,使包含块的左边距减去前面元素的右边距为指定负值。
实际应用情况:
.wrapper {
background-color: black;
margin: 0 auto;
width: 600px;
height: 300px;
}

    .left,
    .right,
    .main {
        float: left;
        width: 200px;
        height: 300px;
    }
    
    .left {
        background-color: blue;
    }
    
    .right {
        background-color: blueviolet;
    }
    
    .main {
        margin-left: -50px;
        background-color: brown;
    }
<div class="wrapper">
        <div class="left">1</div>
        <div class="main">2</div>
        <div class="right">3</div>
    </div>

在这里插入图片描述可以看出当第二个div的margin-left为负值时,它向左移动,并覆盖住了第一个div,注意,这里是覆盖,如果是正数,第二个div会带着第三个div 一起离开第一个div。
(2) 子集总宽度超过父级宽度时
Margin-left取负值仍然使该元素会向左移动,但是当该元素与上一个元素(假设被覆盖后)的总宽度小于等于父级宽度度时,该元素会又回到与上一个元素同一水平线的位置。
.wrapper {
background-color: black;
margin: 0 auto;
width: 300px;
height: 300px;
}

    .left,
    .right,
    .main {
        float: left;
        width: 200px;
        height: 300px;
    }
    
    .left {
        background-color: blue;
    }
    
    .right {
        background-color: blueviolet;
    }
    
    .main {
        margin-left: -50px;
        background-color: brown;
    }

这里我将父级总宽度设为300px,第三个div的margin去掉,第二第三个元素会被挤到下方,且不在一排(注意),然后再将第二个div的margin-left设一个小于100的负值,会发现第二个div向左移动了,但是仍然在下方,直到margin-left设为-100px;才出现下面这种情况:
在这里插入图片描述
Margin-right取负值:后面的元素网左移动,遮盖该元素。
理解:margin-right=相邻元素的左边距位置-该元素的右边距位置。所以正数分开负数覆盖,-left同理。
且可以看出,浮动元素,当子元素超出父元素宽度换行时,换行后相当于外面有一个虚拟的父元素包含着他,宽度与父元素一致,同样,如果该虚拟宽度包裹不住剩下的所有子元素依然会换行(这里设div3的宽度为400px)。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值