介绍
小编给大家分享一Vue木下桶布局怎么弄,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获、下面让我们一起去了解一下吧!
公司最近在重构,使用的是Vue框架。涉及到一个品牌的布局,因为品牌的字符长度不一致,所以导致每一个的品牌标签长短不一。多行布局下就会导致每行的品牌布局参差不齐,严重影响美观。于是就有了本篇的木桶布局插件。
木桶布局的实现是这样分步骤的:
1,首先对要填放的内容进行排序,筛选出每一行的元素。
2,再对每一行元素进行修整,使其美观对齐。
分步骤
<强>一,根据需要选出每行的元素强>
首先获取我们需要的元素,和我们目标容器的宽度。
Vue组件容器:
& lt; template> & lt; div ref=癰arrel"祝辞 & lt; slot> & lt;/slot> & lt;/div> & lt;/template>
<强>二,再者我们需要获取容器和容器宽度强>
。barrelBox=efs.barrel美元; 这一点。barrelWidth=this.barrelBox.offsetWidth;
<强>三,接着循环我们的元素,根据不同的元素的宽度进行分组。强>
ps:对于元素的宽度获取的时候我们需要对盒模型进行区分。
Array.prototype.forEach。调用(项目(项目)=比;{ paddingRight=0; paddingLeft=0; marginLeft=方法(窗口。getComputedStyle(项目,““).getPropertyValue (& # 39; margin-left& # 39;)); marginRight=方法(窗口。getComputedStyle(项目,““).getPropertyValue (& # 39; margin-right& # 39;)); 让boxSizing=窗口。getComputedStyle(项目,““).getPropertyValue (& # 39; box-sizing& # 39;); 如果(boxSizing !==& # 39; border-box& # 39;) { paddingRight=方法(窗口。getComputedStyle(项目,““).getPropertyValue (& # 39; padding-right& # 39;)); paddingLeft=方法(窗口。getComputedStyle(项目,““).getPropertyValue (& # 39; padding-left& # 39;)); } 宽度=项目。offsetWidth + marginLeft + marginRight + 1; 项。realWidth=项目。offsetWidth - paddingLeft paddingRight + 1; 让tempWidth=rowWidth +宽度; 如果(tempWidth比;barrelWidth) { dealWidth (rowList rowWidth barrelWidth); rowList=[项目]; rowWidth=宽度; 其他}{ rowWidth=tempWidth; rowList.push(项); } })
<强>四,接着是对每一组的元素进行合理分配。强>
const dealWidth=(物品、宽度、maxWidth)=比;{ 我们保持=maxWidth -宽度; 让num=items.length; 我们仍然=保持% num; 让残渣=数学。地板(保持/num); 物品。forEach((项目、索引)=比;{ 如果(指数===num - 1) { item.style。宽度=项目。realWidth残+ +是+ & # 39;px # 39;; 其他}{ item.style。宽度=项目。realWidth +渣+ & # 39;px # 39;; } }) }
我这边是采用的平均分配的方式将多余的宽度平均分配到每一个元素里。如一行中全部元素占800 px,有8个元素,该行总长为960 px。则每行增加的宽度为(960 - 800)/8=16,每个与元素宽度增加16 px;
值得注意的是,js在获取元素宽度的时候会存在精度问题,所以需要进行预设一个像素进行缓冲。
以上是Vue木桶布局怎么弄的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!