当前位置: 首页 > Web前端 > vue.js

flex换行布局最后一行space-between的问题

时间:2023-03-31 17:43:41 vue.js

.box-content{宽度:100%;显示:弹性;证明内容:空格之间;弹性流程:包装;.box-item{宽度:256px;高度:144px;边距:15px;&.main{背景颜色:#ff0000;}&.repair{背景颜色:#00ff00;}}}1.遇到的问题个数不固定,每行需要根据父级的宽度动态变化,并且一行中要求平均间距,会出现以下情况(例1)(例2)2.解决方案(1)设置为flex-start,动态计算每个子元素的右边距(2)父级宽度变化后,计算每行子元素的个数,然后减去取后的个数孩子总数和行数取模得到最后需要完成的数字。第一种方法稍微复杂一点,这里就不细说了,主要说说第二种方法。这里使用ResizeObserver方法来观察元素的高度、宽度和位置的变化。constresizeObserver=newResizeObserver(this.resizeChangeWH);resizeObserver.observe(this.$el);resizeChangeWH(entries){常量childNodes=this.$el.childNodes;让row=0,beforeNode=null;for(leti=0;i1?row-this.boxItemNum%row:0;}当父元素发生变化时,获取所有子元素,遍历子元素时发现某个子元素的offsetTop与之前不同。证明这个位置开始换行,即得到每一行的编号。运行后效果如下:附Vue源码:.box-content{宽度:100%;显示:弹性;证明内容:空格之间;弹性流程:包装;.box-item{宽度:256px;高度:144px;边距:15px;&.main{背景颜色:#ff0000;}&.repair{背景颜色:#00ff00;}}}