溫馨提示×

溫馨提示×

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

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

怎么用vue+antd實(shí)現(xiàn)折疊與展開組件

發(fā)布時(shí)間:2022-09-22 09:45:26 來源:億速云 閱讀:478 作者:iii 欄目:開發(fā)技術(shù)

今天小編給大家分享一下怎么用vue+antd實(shí)現(xiàn)折疊與展開組件的相關(guān)知識點(diǎn),內(nèi)容詳細(xì),邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。

效果圖如下:

怎么用vue+antd實(shí)現(xiàn)折疊與展開組件

由于其它地方也需要實(shí)現(xiàn)這種功能,所以,需要封裝成一個(gè)組件。

代碼如下:

1. 父頁面代碼

1.1 變量:open:表示現(xiàn)在的狀態(tài),true是展開,false為折疊

1.2 變量:height:表示折疊時(shí)的高度,也就是根據(jù)標(biāo)題的高度來的。

1.3 插槽:在組件中寫的內(nèi)容是一個(gè)插槽,可以預(yù)知組件內(nèi)有個(gè)<slot></slot>來接收外部的內(nèi)容

<openCloseBox :open="true" :height="40">
  <div class="card_tit">
    <a-icon type="minus" /><span class="tab_tit">常規(guī)工藝</span>
  </div>
  <div class="card_con">
    <a-row>
      <a-col :span="12">產(chǎn)品類型:常規(guī)</a-col>
      <a-col :span="12">板子大?。撼R?guī)</a-col>
      <a-col :span="12">出貨方式:常規(guī)</a-col>
      <a-col :span="12">交貨數(shù)量:11</a-col>
    </a-row>
  </div>
</openCloseBox>

1.4 組件引入

import openCloseBox from './modules/openCloseBox.vue';
export default {
  name: 'index',
  components: {
    openCloseBox,
   },
}

2. 組件代碼

<template>
  <div
    class="openclose-box"
    :class="{
      'openclose-card-open': isOpen && card,
      'openclose-card-close': !isOpen && card,
      'openclose-box-open': isOpen && !card,
      'openclose-box-close': !isOpen && !card,
    }"
    :
  >
    <div
      class="openclose-btn"
      :class="{ 'openclose-btn-box': !card }"
      @click="isOpen = !isOpen"
    ></div>
    <a-card v-if="card">
      <slot></slot>
    </a-card>
    <slot v-else></slot>
  </div>
</template>

<script>
export default {
  name: 'OpenCloseBox',
  props: {
    open: {
      type: Boolean,
      default: false,
    },
    card: {
      type: Boolean,
      default: false,
    },
    height: {
      type: Number,
      default: 60,
    },
  },
  data() {
    return {
      isOpen: this.open,
    };
  },
};
</script>

<style lang="less" scoped>
.openclose-box {
  position: relative;
  /deep/ .ant-card-body {
    padding: 20px 18px;
  }
  .openclose-btn {
    font-size: 14px;
    line-height: 16px;
    color: #333;
    width: 100%;
    height: 56px;
    position: absolute;
    top: 0;
    right: 0;
    padding-right: 18px;
    display: flex;
    justify-content: flex-end;
    align-items: center;
    z-index: 1;
    user-select: none;
    cursor: pointer;
    .openclose-icon {
      color: #999;
    }
    &:hover {
      color: #f90;
      .openclose-icon {
        color: #f90;
      }
    }
  }
  .openclose-btn-box {
    height: 48px;
  }
}
.openclose-card-open {
  /deep/ .ant-card-body {
    height: auto;
  }
}
.openclose-card-close {
  /deep/ .ant-card-body {
    height: 56px;
    overflow: hidden;
  }
}
.openclose-box-open {
  height: auto;
}
.openclose-box-close {
  height: 60px;
  overflow: hidden;
}
</style>

完成!!

其它地方引用的效果如下:

展開效果:

怎么用vue+antd實(shí)現(xiàn)折疊與展開組件

折疊效果:

怎么用vue+antd實(shí)現(xiàn)折疊與展開組件

以上就是“怎么用vue+antd實(shí)現(xiàn)折疊與展開組件”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會(huì)為大家更新不同的知識,如果還想學(xué)習(xí)更多的知識,請關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI