左右固定,flex布局 固定的图片个数 中间距离自适应

      <div class="bookView" v-loading="state.bookViewLoading">
        <div class="bookEle" v-for="(item, index) in state.bookViewData" :key="item.id">
          <el-image @click="toDetail(item)" :src="item.imageUrl" lazy>
            <template #error>
              <div class="image-slot">
                <img
                  @click="toDetail(item)"
                  src="@/assets/image/dashboard/noPicture.png"
                  style="width: 100%; height: 100%"
                  alt=""
                />
              </div>
            </template>
          </el-image>
          <div class="iaIcon" v-show="item.isAI">AI</div>
          <p @click="toDetail(item)">{{ item.bookName }}</p>
        </div>
      </div>
// // 动态计算每行放几个图片,及每个图片之间的自适应间距
const adjustImageSpacing = () => {
  const container = document.querySelector('.bookView')
  // 获取容器宽度并减去padding
  const containerWidth1 = container.offsetWidth
  const containerWidth = Math.floor(container.getBoundingClientRect().width)
  nextTick(() => {
    // 计算每行最多可放置的图片数量
    // const maxImagesPerRow = Math.floor(containerWidth / (159 + 28))
    // 计算每个图片之间的间距
    const gap = Math.floor((containerWidth - 6 * 159) / (6 - 1))
    // 设置图片间距,第一个和最后一个图片除外
    for (let i = 0; i < state.bookViewData.length; i++) {
      if ((i + 1) % 6 !== 0 && (i + 1) % 6 !== 1) {
        container.children[i].style.marginRight = `${gap}px`
      } else if ((i + 1) % 6 === 0) {
        container.children[i].style.marginRight = '0'
      } else if ((i + 1) % 6 === 1) {
        container.children[i].style.marginRight = `${gap}px`
      }
    }
  })
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值