前端 vue組件 layout-button-group - 按鈕組 - 高效開發 - 戴向天

大家好!我叫戴向天

QQ羣:602504799

QQ:809002582

如若有不理解的,可加QQ羣進行諮詢瞭解

layout-div 組件詳情 》https://blog.csdn.net/weixin_41088946/article/details/91448369

layout-image 組件詳情》https://blog.csdn.net/weixin_41088946/article/details/90759906

layout-swipr 組件詳情》https://blog.csdn.net/weixin_41088946/article/details/93395452

touch封裝》https://blog.csdn.net/weixin_41088946/article/details/90764437

<template>

  <layout-swipe :auto-play="false">
    <layout-div v-for="(page,p) in getRightFormat" :key="p">
      <layout-div class="flex over-h flex-bt" v-for="(row,key) in page" :key="key">
        <layout-div class="flex flex-1 flex-center over-h" v-for="(column,c) in row" :key="c">
          <layout-div class="t-c" @click="clickHandle(column)" :pad="[20,0]" v-if="column.url || column.name">
            <layout-image :src="column.url" :width="80" :height="80" class="mar-a"/>
            <layout-div :pad="[20,0,0]">{{column.name}}</layout-div>
          </layout-div>
        </layout-div>
      </layout-div>
    </layout-div>
    <layout-div slot="point"></layout-div>
  </layout-swipe>


</template>
<script>
  import LayoutSwipe from "./layout-swipe";
  import WxImage from "./layout-image";

  export default {
    components: {LayoutImage, LayoutSwipe },
    props: {
      icon: {
        type: Object,
        default: () => {
          return {
            width: 80,
            height: 80,
            fillet: 0
          }
        }
      },
      row: {        //行數
        type: Number,
        default: 2
      },
      column: {    //列數
        type: Number,
        default: 5
      },
      list: {
        type: Array,
        default: () => []
      }
    },
    data() {
      return {
        buttons: [],
      }
    },
    methods: {
      clickHandle(column) {      //將點擊事件傳送出去
        this.$emit('click', column)
      }
    },
    computed: {
      getRightFormat() {   //獲取正確的數據格式
        let column = [],     //每一行的數量
          row = [],         //一共多少列
          page = []
        this.list.forEach((item, i) => {
          if (i % this.column < this.column) {
            column.push(item);
          }
          if (column.length == this.column) {
            row.push(column);
            column = [];
          }
        })
        if (column.length) {
          while (column.length < this.column) column.push({})
          row.push(column);
        }

        row.forEach((item, i) => {
          page.push(item);
          if (page.length == this.row) {
            this.buttons.push(page)
            page = []
          }
        })
        if (page.length) this.buttons.push(page)
        return this.buttons
      }
    }
  }
</script>

使用方法

    <layout-button-group :list="list" @click="clickHandle"/>
    
export default {
    components: {LayoutButtonGroup},
    data() {
      return {
        list: [
          {name: '郭德綱', url: 'https://img.cct58.com/201612/16/10-42-39-48-12.jpg'},
          {name: '柳雲龍', url: 'https://img.cct58.com/201612/16/17-16-20-59-12.jpg'},
          {name: '舒淇', url: 'https://img.cct58.com/201612/16/17-39-40-28-26.jpg'},
          {name: '安以軒', url: 'https://img.cct58.com/201612/16/14-22-11-95-10.jpg'},
          {name: '袁立', url: 'https://img.cct58.com/201612/16/15-09-00-87-8.jpg'},
          {name: '古天樂', url: 'https://img.cct58.com/201612/16/09-48-33-79-10.jpg'},
          {name: '張瑞希', url: 'https://img.cct58.com/201612/16/15-53-24-25-10.jpg'},
          {name: '胡可', url: 'https://img.cct58.com/201612/16/15-09-41-54-10.jpg'},
          {name: '顧長衛', url: 'https://img.cct58.com/caiji/bdjq/170920/11/20170920115059.jpg'},
          {name: '邁克爾·傑克遜', url: 'https://img.cct58.com/201703/28/13/14ce36d3d539b600d50e5924e050352ac75cb765.jpg'},
          {name: '李瑞鎮', url: 'https://img.cct58.com/201703/28/13/f9dcd100baa1cd111b8d1086bc12c8fcc3ce2d58.jpg'},
          {name: '彭浩翔', url: 'https://img.cct58.com/caiji/bdjq/170920/01/20170920015033.jpg'},
          {name: '李克勤', url: 'https://img.cct58.com/caiji/bdjq/170920/03/20170920155612.jpg'},
          {name: '趙子琪', url: 'https://img.cct58.com/201612/16/14-38-22-18-14.png'},
          {name: '王潮歌', url: 'https://img.cct58.com/201703/29/13/0824ab18972bd40708667de572899e510fb30900.jpg'},
          {name: '李念', url: 'https://img.cct58.com/201612/16/14-51-18-59-14.jpg'},
        ],
        params: {
          mobile: '',
          password: ''
        },
      }
    },
    methods: {
      clickHandle(e){
        console.log(`您點擊的是${e.name}`)
      },
    }
  }

效果圖
在這裏插入圖片描述
在這裏插入圖片描述

class - style 具體內容如下

css 參考的 UI設計尺寸爲 750*1334

.flex {
  display: flex;
}
.over-h {
  overflow: hidden;
}
.flex-bt {
  justify-content: space-between;
}
.flex-1 {
  flex: 1;
}
.flex-center {
  justify-content: center;
  align-items: center;
}
.mar-a{
  margin: 0 auto;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章