flex结合js实现卡片布局自适应

效果:当页面缩放或者改变宽度的时候,所有卡片的宽度随之改变,并保证右侧没有空白间隙,如果直接使用flex响应式,则最后一行卡片的宽度会跟上面的卡片宽度不一致或者右侧有空白间隙,该方法是根据计算父div宽度除以定义卡片的最小宽度,计算出每行最多的个数,再计算出剩余宽度,平均分给每个卡片,最后使用:style赋值宽。

html:noteListItem组件为卡片

<div class="list-total">
 <div class="listItems" id="scroll">
  <noteListItem
   v-for="(item, index) in cloudList"
   :style="{ width: resultW }"
   :key="index"
   :info="item"
  />
 </div>
</div>

js:screenWidth一定要是外部div的宽,当页面缩放的时候是根据这个宽度进行计算,页面销毁的时候要把onresize监听页面宽度去掉哦

methods:{
 csclWidths() {
  this.screenWidth =document.getElementsByClassName("list-total")[0].clientWidth;
  let number = parseInt(this.screenWidth / 380);
  // 每个卡片的宽度
  let calcWidth = (this.screenWidth - number * 20) / number - 20;
  this.resultW = calcWidth + "px";
  this.$forceUpdate();
  }
 },
 widthOffect() {
   window.onresize = () => {
     return (() => {
        this.screenWidth =document.getElementsByClassName("list-total")[0].clientWidth;
          this.csclWidths();
        })();
     }
 },
},
destroyed(){
  window.onresize=null;
}

css:

.listItems {
  display: flex;
  justify-content: flex-start;
  align-items: center;
  flex-wrap: wrap;
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值