盒子模型中过度约束问题及其解决办法

盒子模型就是用来布局的,之前已经讲了盒子模型的基本内容,接下来我们就来看看用盒子模型进行水平布局时遇到的一个问题——过度约束问题。

<body>
    <div class="box1">
        <div class="box2"></div>
    </div>
</body>

首先我们先建立两个盒子box1 box2,然后我们给这两个盒子设置样式,如下图

 <style>
        .box1{
            width: 600px;
            height: 200px;
            border: 10px red solid;
        }
        .box2{
            width: 100px;
            height: 100px;
            background-color: aqua;
            padding: 0 20px;
            margin: 0 10px;
        }
    </style>

这样我们就得到了两个不一样的盒子。

我们来先看看能改变box2的水平方向大小位置的一些属性

有下列七个属性:margin-left、border-left、padding-left、width、padding-right、border-right、margin-right

浏览器规定,水平方向七个值相加必须等于其父元素内容区的宽度,如果不等于,浏览器会自动调整七个值中的一个值让其成立,这就是过度约束。

这个时候我们看看上面那串代码,七个值的和为20+10+10+100+10+10+20=180,这并不等于我们的父元素600,所以浏览器就会自动调整一个值让它们成立。

那么下来我们就来看看浏览器是如何调整的。

1.七个值中如果没有auto,那么浏览器默认调整margin-right

2.七个值中如果有auto,那么浏览器就调整auto

  可以设置auto的属性有margin-right width margin-left

(1)一个auto,谁是auto就调整谁

 (2)两个auto,只要width为auto就调整width

       margin-right width为auto  margin-left固定值   浏览器调整width

       margin-right margin-left为auto width固定值   浏览器同时调整margin-left 和margin-right,距离平分,盒子居中显示

       margin-left width为auto margin-right固定值   浏览器调整width

 (3)三个auto,调整width

总的来说,浏览器要调整,肯定优先调整width。

  • 7
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值