仿蓝湖布局,避免自适应卡片列表页面留白过多

在这里插入图片描述
在这里插入图片描述
先上图,最终实现效果
希望实现的效果:根据屏幕宽度自适应,并且在右边留白过多的情况下,将整体内容居中。
之所以会做这个,如下图。是因为当magin存在的时候,视觉上看起来在右边完全还可以放下一个卡片,但是实际它的宽度已经不足够再放下一个card了。在这里插入图片描述
最终参考蓝湖的布局,当页面宽度留白太多的时候,处理了居中。但是这样需要计算很特别多重情况,很容易忽视一些特殊情况。并且居中的时候,内部的div会自动填充为100%,需要dom操作去修改内层(home-main)的宽度,才能实现flex的居中

<div ref="mainWrap" class="main-wrap">
  <div ref="main" class="home-main ">
    <g-empty-tip-card v-if="productList.length<=0" v-loading="" @add="handleAdd" />
    <g-product-card
      v-for="(item,index) in productList"
      v-else
      :key="index"
      :name="item.name"
      :pic="item.pic"
      :version="item.version"
      :rate="item.rate"
      @toParticula="toParticula(item.id)"
    />
  </div>
</div>

经过优化后,先计算mainWrap的宽度 足够放下多少个card,再将home-main的宽度设置为改宽度,就可以实现flex的居中了。但此时又有了一个问题,如果数量很少,居中了就很难看,所以多做了一步判断,是否一行可以放下所有的card,代码如下

  window.onresize = () => {
    return (() => {
      this.countWidth()
    })()
  }


countWidth() {
  const wrapWidth = window.getComputedStyle(this.$refs.mainWrap).width
  const num = Math.floor(parseInt(wrapWidth) / 320)
  if (this.productList.length > num) {
    this.$refs.mainWrap.classList.add('flex-c-c')
    this.$refs.main.style.width = num * 320 + 'px'
  } else {
    this.$refs.mainWrap.classList.remove('flex-c-c')
    this.$refs.main.style.width = wrapWidth
  }
}

最终的效果就是 当一行放的下的时候,就不再居中,如果放不下,根据每行可放下的card数量进行改变内层div的宽度来进行居中。这样就不会使得两边留白过多,产生视觉误会。

蓝湖使用教程的web页面可以通过以下步骤进行查看和学习: 1. 打开你的浏览器,输入蓝湖的官方网站地址。 2. 在官方网站的主页上,通常会有一个导航栏或菜单栏。寻找一个类似于"教程"、"使用指南"、"帮助中心"或类似的选项。 3. 点击导航栏中的相关选项,进入蓝湖的使用教程页面。 4. 在使用教程页面中,你可以学习关于蓝湖的各种功能、操作方法和最佳实践。 5. 阅读教程页面上提供的信息,并根据自己的需求和兴趣选择相应的内容进行学习。 请注意,具体的蓝湖使用教程web页面可能会因为不同的蓝湖版本或更新而有所变化。因此,建议在蓝湖的官方网站上查找最新的使用教程页面。 引用: 蓝湖官方网站链接<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [蓝湖Photoshop插件如何安装和使用?蓝湖Photoshop插件使用教程](https://blog.csdn.net/weixin_33746247/article/details/117980454)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [蓝湖的安装及使用](https://blog.csdn.net/u012069313/article/details/125555391)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值