样式优化-float 与 inline-block

优化背景

常见的三列式的排列布局,视觉要求区域底部无边距间距。旧代码使用float布局方式,js判断需要去除下边距的项,如下片段:

css

.item 
   background-color #FFFFFF
   width calc(((100% - 0.24rem) / 3))
   float left
   margin-right 0.12rem
   margin-bottom 0.12rem
   border-radius 0.08rem
   overflow hidden
   .item:nth-of-type(3n) 
     margin-right 0

js

// 设置商品项特殊样式
setSpecialClass(item, idx) {
  const len = this.itemList.length
  item.specialClass = ''
  if (this.data.componentInfoJson.col === 3 && (len % 3 === 1 || len % 3 === 2) && idx >= len - (len % 3)) {
    item.specialClass = 'no-margin-bottom'
  }
  return item
}

优化方案

1、照常使用float布局,设置顶部间距,消除前三项的顶部间距
2、使用 display: inline-block,设置底部间距,元素的垂直对齐方式为上( vertical-align: top),消除最后三项的底部间距
使用方案2 ,原js代码删除,css如下:
.item 
   background-color #FFFFFF
   width calc(((100% - 0.24rem) / 3))
   display inline-block
   vertical-align top
   margin-right 0.12rem
   margin-bottom 0.12rem
   border-radius 0.08rem
   overflow hidden
   &:nth-of-type(3n) 
     margin-right 0
   &:nth-last-child(1)
     margin-bottom 0
   &:nth-last-child(2)
     margin-bottom 0
   &:nth-last-child(3)
     margin-bottom 0

float 与 inline-block

且先看使用float布局且直接消除最后三项的底部间距的表现


float的排列方式是:每个float盒子定位都是依据上一个盒子的右边界来定位的,每个盒子都会往前查找,直到碰到页面边界。
而 display: inline-block 则严格按照从左到右来排列。
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 大家好,我是IT修真院武汉分院第11期的学员,一枚正直纯洁善良的前端程序员,今天给大家分享一下,修真院官网css任...
    斌仔_83e7阅读 3,846评论 0 2
  • 前端开发面试题 面试题目: 根据你的等级和职位的变化,入门级到专家级,广度和深度都会有所增加。 题目类型: 理论知...
    怡宝丶阅读 2,618评论 0 7
  • 『inline-block是什么? Inline-block是元素display属性的一个值。display设置这...
    小淘气_嘻阅读 613评论 0 1
  • •前端面试题汇总 一、HTML和CSS 21 你做的页面在哪些流览器测试过?这些浏览器的内核分别是什么? ...
    Simon_s阅读 2,239评论 0 8
  • 前端开发知识点 HTML&CSS对Web标准的理解、浏览器内核差异、兼容性、hack、CSS基本功:布局、盒子模型...
    Hebborn_hb阅读 857评论 0 1