小編給大家分享一下Vue木桶布局怎么弄,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
創(chuàng)新互聯專業(yè)網站設計制作、網站設計,集網站策劃、網站設計、網站制作于一體,網站seo、網站優(yōu)化、網站營銷、軟文發(fā)布平臺等專業(yè)人才根據搜索規(guī)律編程設計,讓網站在運行后,在搜索中有好的表現,專業(yè)設計制作為您帶來效益的網站!讓網站建設為您創(chuàng)造效益。
公司最近在重構,使用的是Vue框架。涉及到一個品牌的布局,因為品牌的字符長度不一致,所以導致每一個的品牌標簽長短不一。多行布局下就會導致每行的品牌布局參差不齊,嚴重影響美觀。于是就有了本篇的木桶布局插件。
木桶布局的實現是這樣分步驟的:
1、首先對要填放的內容進行排序,篩選出每一行的元素。
2、再對每一行元素進行修整,使其美觀對齊。
分步驟
一、根據需要選出每行的元素
首先獲取我們需要的元素、和我們目標容器的寬度。
Vue組件容器:
<template> <div ref="barrel"> <slot></slot> </div> </template>
二、再者我們需要獲取容器和容器寬度
this.barrelBox = this.$refs.barrel; this.barrelWidth = this.barrelBox.offsetWidth;
三、接著循環(huán)我們的元素,根據不同的元素的寬度進行分組。
ps:對于元素的寬度獲取的時候我們需要對盒模型進行區(qū)分。
Array.prototype.forEach.call(items, (item) => { paddingRight = 0; paddingLeft = 0; marginLeft = parseInt(window.getComputedStyle(item, "").getPropertyValue('margin-left')); marginRight = parseInt(window.getComputedStyle(item, "").getPropertyValue('margin-right')); let boxSizing = window.getComputedStyle(item, "").getPropertyValue('box-sizing'); if (boxSizing !== 'border-box') { paddingRight = parseInt(window.getComputedStyle(item, "").getPropertyValue('padding-right')); paddingLeft = parseInt(window.getComputedStyle(item, "").getPropertyValue('padding-left')); } widths = item.offsetWidth + marginLeft + marginRight + 1; item.realWidth = item.offsetWidth - paddingLeft - paddingRight + 1; let tempWidth = rowWidth + widths; if (tempWidth > barrelWidth) { dealWidth(rowList, rowWidth, barrelWidth); rowList = [item]; rowWidth = widths; } else { rowWidth = tempWidth; rowList.push(item); } })
四、接著是對每一組的元素進行合理分配。
const dealWidth = (items, width, maxWidth) => { let remain = maxWidth - width; let num = items.length; let remains = remain % num; let residue = Math.floor(remain / num); items.forEach((item, index) => { if (index === num - 1) { item.style.width = item.realWidth + residue + remains + 'px'; } else { item.style.width = item.realWidth + residue + 'px'; } }) }
我這邊是采用的平均分配的方式將多余的寬度平均分配到每一個元素里。如一行中全部元素占800px,有8個元素,該行總長為960px。則每行增加的寬度為(960-800)/8=16,每個與元素寬度增加16px;
值得注意的是,js在獲取元素寬度的時候會存在精度問題,所以需要進行預設一個像素進行緩沖。
以上是Vue木桶布局怎么弄的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注創(chuàng)新互聯行業(yè)資訊頻道!
本文名稱:Vue木桶布局怎么弄
URL分享:http://jinyejixie.com/article36/pgscpg.html
成都網站建設公司_創(chuàng)新互聯,為您提供做網站、網站設計公司、App設計、手機網站建設、服務器托管、電子商務
聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯