关于css宽度分离

所谓宽度分离就是width 属性不与影响宽度的 padding/border(有时候包括 margin)属性共存

  • 例如: .box{width:200px;padding:20px;border:1px solid;}

为何要做宽度分离

  • 一说到分离就是为了好维护,比如常说的样式和行为分离、前后端分离、亦或者这里说的宽度分离
  • 由于dom的占位尺寸受margin、border、padding、content的影响,比如后期设计师说要将元素边框内有20px的空白,则会导致布局发生意想不到的错乱,这时候就需要重新计算width;如下例子:
// 这是初始样式,元素宽102px
.box{
width:100px;
border:1xp solid;
}
// 加20padding,元素就变成142px,布局不符合预期
.box{
width:100px;
padding:20px;
border:1px solid;
}
// 这时候就需要重新计算width,来保证元素占的大小
.box{
width:60px;
padding:20px;
border:1px solid;
}

如何做宽度分离

  • 在子元素外嵌套一层标签,父元素定宽,子元素因为 width 使用的是默认值 auto,所以会充分利用可用空间,充满父元素,这里的子元素特指display为block、list-item、flex等的块级元素(不包括替换元素)
.father {
width: 102px;
}
.son {
border: 1px solid;
}
// 加padding 20px,布局依旧不会乱,大小还是102px,,不需要烧脑子去计算了,而且页面结构反而更稳固
.father {
width: 102px;
}
.son {
padding:20px;
border: 1px solid;
}

box-sizing在没有水平margin的时候可以解决这样的问题,实现真正无计算,而“宽度分离”策略则可以彻底解所有的宽度计算的问题

转载于:https://my.oschina.net/u/3407699/blog/2120413

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值