解决并排盒子之间的边框宽度加倍问题

 在使用css建立多盒子排列为网格型时,左边一列的盒子总是会因为边框边框加倍而掉入下一行

 或者出现表框加倍。

 

 

 


.lifeservice ul li {
    position: relative;
    float: left;
    height: 70px;
    border-bottom: 1px solid #e4e4e4;
    border-right: 1px solid #e4e4e4;
    /* box-sizing: border-box; */
    text-align: center;
}

 为了解决这种现象,以我目前的知识总结了三种解决方法。

一、设置box-sizing: border-box

box-sizing指定盒模型分成两种情况:

1.box-sizing: content-box 盒子大小为 width + padding + border (以前默认的)

2.box-sizing: border-box 盒子大小为 width 如果盒子模型我们改为了 box-sizing: border-box ,那padding 和 border就不会撑大盒子了(前提 padding 和 border不会超过 width 宽度)

解决方法:

先对盒子设置25%宽度,再加上box-sizing: border-box,然后对靠左边的元素使用border-right:0;(这里可以使用结构伪类选择器)


.lifeservice ul li {
    position: relative;
    float: left;
    width: 25%;
    height: 70px;
    border-bottom: 1px solid #e4e4e4;
    border-right: 1px solid #e4e4e4;
    box-sizing: border-box;
    text-align: center;
}

.lifeservice ul li:nth-child(4n) {
    border-right: 0;
} 

 二、margin 负值法

解决并排盒子之间的边框宽度加倍问题。

原理:让每个盒子压住前面的盒子,边框叠加。

鼠标移动边框颜色变化效果。

ul li {
float:left;
list-style:none;
width:150px;
height:200px;
border:1px solid red;
margin-left:-1px;
}

 但是这种方法在使用:hover时会出现问题

 

当鼠标经过左侧盒子时出现右框不变蓝。此时可以使用相对定位来解决

ul li:hover {
position:relative;
border:1px solid blue;
}

 三、扩大外盒子,隐藏侧边

先使外部盒子宽增大使小盒子不会掉入下一行,

 

 但是侧边有部分多余,此时我们可以用overflow:hidden;对多余部分切除处理。

 这种方法比较简单,但是最后会使右侧盒子略微减小宽度,在实际的开发中这种方法比较常见,一般情况下大部分的人都选择这种方法。

 

 这个问题还有很多更好的解决方法,但是以我目前的知识只能给大家总结出这些解决方案。

  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值