欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Vue下拉菜單組件化開發(fā)詳解

 更新時間:2021年09月27日 09:17:40   作者:Hgiao  
這篇文章主要為大家詳細介紹了Vue下拉菜單組件化開發(fā)過程,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了Vue下拉菜單組件化開發(fā)的具體代碼,供大家參考,具體內容如下

搞一個自定義組件,只是一個很簡單的下拉菜單,也就是一個思路,整起

第一步:在項目中專門創(chuàng)建一個放置自定義組件的文件夾(直接components底下的common中)

dropdown.vue 為一級盒子

dropdownMenu.vue 為二級盒子

dropdownItem.vue 為二級盒子內容

第二步 :

對dropdown.vue的操作

<template>
  <div class="box">
     <!-- 給按鈕加點擊事件  -->
    <div @click="showM">
          <!-- 一級按鈕  -->
      <slot name="title"></slot>
    </div>
        <!--  二級盒子  -->
        
        <!--  加v-if操作 隱藏顯示效果 -->
    <slot v-if="show" name="dropdown"></slot>
  </div>
</template>

<script>
  export default {
    name: "dropdown",
    data() {
      return {
        // 默認二級盒子關閉
        show: false
      }
    },
    methods: {
      showM() {
        this.show = !this.show
      },
      commitClick(value) {
      // 向父級暴露dropdown事件,并把值傳入
        this.$emit('change-item',value)
      }
    }
  }
</script>

<style scoped>
  .box {
    display: inline-block; /* 行內塊 */
    position: relative; /* 相對定位 */
    top:100px;
    margin-left:100px
  }
</style>

對于dropdownMenu僅僅只是把它當作一個盒子,只需要添加一個插槽,把盒子搭好即可

<template>
  <div class="dropdown-menu">
    <slot></slot>
  </div>
</template>

<script>
  export default {
    name: "dropdownMenu"
  }
</script>

<style scoped>
  .dropdown-menu {
    padding: 8px 0; /* 盒子內邊距上下為8px 左右為0 */
    border-radius: 4px;  /* 盒子圓角 */
    border: 1px solid #f2f6fc;  /* 邊框為1px 灰色 */
    position: absolute;  /* 絕對定位 */
    right: 0;   /* 在右側 */
    top: 110%; /* 盒子在按鈕下方 */
    background-color: #fff;  /* 背景顏色為白色 */
    box-shadow: 0 2px 4px rgba(0,0,0,0.12),0 0 6px rgba(0,0,0,.04);
    /* 為盒子添加陰影 */
  }
</style>

對dropdownItem的操作

<template>
  <div class="dropdown-item" @click="itemClick(value)">
    <slot></slot>
  </div>
</template>

<script>
export default {
  name: "dropdownItem",
  props:['value'],
  data() {
    return {};
  },
  methods: {
    itemClick(value) {
      // console.log(value)
      //通過this調用當前組件的父級的父級也就是dropdown的showM()方法來進行關閉
      this.$parent.$parent.showM();
      // 調用父級的父級(dropdown)的commitClick方法并傳如value值
      this.$parent.$parent.commitClick(value);
    },
  },
};
</script>

<style scoped>
 .dropdown-item {
   line-height: 40px; /* 行高40px */
   white-space: nowrap;  /* 不換行 */
   padding: 0 20px; /* 內邊距上下為0 左右為20px */
   color: #606266; /* 字體顏色為灰色 */
   cursor: pointer;  /* 鼠標移入為點擊樣子 */
 }
  .dropdown-item:hover {
    color: #409eff; /* 字體顏色為藍色 */
    background-color: #ecf5ff; /* 背景顏色為 淺~~藍色 非常淺就對了 */
  }
</style>

接下來對App.vue文件進行操作

<template>
  <div id="app">
    <dropdown @change-item="changeItem">
      <button slot="title">按鈕</button>
      <dropdown-menu slot="dropdown">
        <dropdown-item value="吃的">吃的</dropdown-item>
        <dropdown-item value="喝的">喝的</dropdown-item>
        <dropdown-item value="玩的">玩的</dropdown-item>
      </dropdown-menu>
    </dropdown>
  </div>
</template>

<script>
  import dropdown from './components/common/dropdown'
  import dropdownMenu from "./components/common/dropdownMenu";
  import dropdownItem from "./components/common/dropdownItem";
  export default {
    name: 'App',
    components: {
      dropdown,dropdownMenu,dropdownItem
    },
    methods:{
      changeItem(e){
        console.log(e)
      }

    }
  }
</script>

在main.js導入組件

import zgDropdown from "@/components/common/dropdown"
import zgDropdownMenu from "@/components/common/dropdownMenu"
import zgDropdownItem from "@/components/common/dropdownItem"
Vue.component('zgDropdownItem',zgDropdownItem)
Vue.component('zgDropdown',zgDropdown)
Vue.component('zgDropdownMenu',zgDropdownMenu)

app.vue也要相應修改

<template>
  <div id="app">
    <zg-dropdown @change-item="changeItem">
      <button slot="title">按鈕</button>
      <zg-dropdown-menu slot="dropdown">
        <zg-dropdown-item value="吃的">吃的</zg-dropdown-item>
        <zg-dropdown-item value="喝的">喝的</zg-dropdown-item>
        <zg-dropdown-item value="玩的">玩的</zg-dropdown-item>
      </zg-dropdown-menu>
    </zg-dropdown>
  </div>
</template>

<script>
  export default {
    name: 'App',
    methods:{
      changeItem(e){
        console.log(e)
      }

    }
  }
</script>
<style scoped>

</style>

大概就是這么一個思路。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • vue element實現表格合并行數據

    vue element實現表格合并行數據

    這篇文章主要為大家詳細介紹了vue element實現表格合并行數據,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-11-11
  • 使用Vue?CLI配置代碼壓縮、加密和混淆功能示例代碼

    使用Vue?CLI配置代碼壓縮、加密和混淆功能示例代碼

    這篇文章主要介紹了使用Vue?CLI配置代碼壓縮、加密和混淆功能,通過配置 vue.config.js 文件,我們可以使用 Vue CLI 輕松實現對 Vue 應用程序代碼的壓縮、加密和混淆,需要的朋友可以參考下
    2023-06-06
  • vue+高德地圖寫地圖選址組件的方法

    vue+高德地圖寫地圖選址組件的方法

    這篇文章主要介紹了vue+高德地圖寫地圖選址組件的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-05-05
  • vue中eslintrc.js配置最詳細介紹

    vue中eslintrc.js配置最詳細介紹

    這篇文章主要介紹了vue中eslintrc.js配置最詳細介紹,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-12-12
  • vue用遞歸組件寫樹形控件的實例代碼

    vue用遞歸組件寫樹形控件的實例代碼

    最近在vue項目中遇到需要用樹形控件的部分,比如導航目錄是不確定的,所以必須要用樹形結構,下面腳本之家小編給大家?guī)砹藇ue用遞歸組件寫樹形控件的實例代碼,需要的朋友參考下吧
    2018-07-07
  • vue進入頁面加載數據緩慢實現loading提示過程

    vue進入頁面加載數據緩慢實現loading提示過程

    這篇文章主要介紹了vue進入頁面加載數據緩慢實現loading提示過程,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • Vue組件間通信方法總結(父子組件、兄弟組件及祖先后代組件間)

    Vue組件間通信方法總結(父子組件、兄弟組件及祖先后代組件間)

    這篇文章主要給大家介紹了關于Vue組件間通信的相關資料,其中包括父子組件、兄弟組件及祖先后代組件間的通信,文中通過示例代碼介紹的非常詳細,對大家學習或者使用Vue具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-04-04
  • vue3中getCurrentInstance不推薦使用及在<script?setup>中獲取全局內容的三種方式

    vue3中getCurrentInstance不推薦使用及在<script?setup>中獲取全局內容的三種方式

    這篇文章主要給大家介紹了關于vue3中getCurrentInstance不推薦使用及在<script?setup>中獲取全局內容的三種方式,文中通過介紹的非常詳細,對大家的學習或者工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2024-02-02
  • Vue3+X6流程圖實現數據雙向綁定詳解

    Vue3+X6流程圖實現數據雙向綁定詳解

    這篇文章主要為大家詳細介紹了Vue3如何結合X6流程圖實現數據雙向綁定,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2024-03-03
  • Vue中的父子組件傳值及傳方法

    Vue中的父子組件傳值及傳方法

    這篇文章主要介紹了Vue中的父子組件傳值及傳方法,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-11-11

最新評論