91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Vue木桶布局怎么弄

發布時間:2020-10-20 16:46:33 來源:億速云 閱讀:294 作者:小新 欄目:web開發

小編給大家分享一下Vue木桶布局怎么弄,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

公司最近在重構,使用的是Vue框架。涉及到一個品牌的布局,因為品牌的字符長度不一致,所以導致每一個的品牌標簽長短不一。多行布局下就會導致每行的品牌布局參差不齊,嚴重影響美觀。于是就有了本篇的木桶布局插件。

木桶布局的實現是這樣分步驟的:

1、首先對要填放的內容進行排序,篩選出每一行的元素。

2、再對每一行元素進行修整,使其美觀對齊。

分步驟

一、根據需要選出每行的元素

首先獲取我們需要的元素、和我們目標容器的寬度。

Vue組件容器:

<template>
  <div ref="barrel">
      <slot></slot>
  </div>
</template>

二、再者我們需要獲取容器和容器寬度

this.barrelBox = this.$refs.barrel;
this.barrelWidth = this.barrelBox.offsetWidth;

三、接著循環我們的元素,根據不同的元素的寬度進行分組。

ps:對于元素的寬度獲取的時候我們需要對盒模型進行區分。

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木桶布局怎么弄的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

马边| 龙里县| 伊金霍洛旗| 福州市| 从化市| 旬邑县| 子长县| 锦屏县| 澄城县| 平陆县| 楚雄市| 武乡县| 新兴县| 景德镇市| 专栏| 普兰店市| 阳信县| 友谊县| 镇平县| 民勤县| 突泉县| 察隅县| 平远县| 湘潭市| 苍山县| 江永县| 当雄县| 会昌县| 通榆县| 二连浩特市| 嵊泗县| 彭水| 台江县| 高邮市| 深泽县| 庄浪县| 云霄县| 沐川县| 恩平市| 神木县| 肇东市|