vue+antd實(shí)現(xiàn)折疊與展開(kāi)組件
最近在寫(xiě)前臺(tái)頁(yè)面,遇到一個(gè)需求,如下:點(diǎn)擊頭部標(biāo)題,如果有內(nèi)容,則展開(kāi),否則不展開(kāi),其實(shí)就是展開(kāi)與折疊的組件。效果圖如下:
由于其它地方也需要實(shí)現(xiàn)這種功能,所以,需要封裝成一個(gè)組件。
代碼如下:
1. 父頁(yè)面代碼
1.1 變量:open:表示現(xiàn)在的狀態(tài),true是展開(kāi),false為折疊
1.2 變量:height:表示折疊時(shí)的高度,也就是根據(jù)標(biāo)題的高度來(lái)的。
1.3 插槽:在組件中寫(xiě)的內(nèi)容是一個(gè)插槽,可以預(yù)知組件內(nèi)有個(gè)<slot></slot>來(lái)接收外部的內(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, ? ? }" ? ? :style="{ height: !isOpen && !card ? height + 'px' : 'auto' }" ? > ? ? <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>
完成??!
其它地方引用的效果如下:
展開(kāi)效果:
折疊效果:
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
在vue中import()語(yǔ)法不能傳入變量的問(wèn)題及解決
這篇文章主要介紹了在vue中import()語(yǔ)法不能傳入變量的問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-04-04Vue的export?default和帶返回值的data()及@符號(hào)的用法說(shuō)明
這篇文章主要介紹了Vue的export?default和帶返回值的data()及@符號(hào)的用法說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-03-03vue實(shí)現(xiàn)簡(jiǎn)單的星級(jí)評(píng)分組件源碼
這篇文章主要介紹了vue星級(jí)評(píng)分組件源碼,代碼簡(jiǎn)單易懂非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-11-11詳解vue后臺(tái)系統(tǒng)登錄態(tài)管理
這篇文章主要介紹了vue后臺(tái)系統(tǒng)登錄管理,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04Vue監(jiān)聽(tīng)頁(yè)面變化的實(shí)現(xiàn)方法小結(jié)
在Vue.js應(yīng)用開(kāi)發(fā)過(guò)程中,監(jiān)聽(tīng)頁(yè)面變化是一個(gè)非常常見(jiàn)的需求,無(wú)論是為了響應(yīng)用戶交互、優(yōu)化性能,還是實(shí)現(xiàn)復(fù)雜的業(yè)務(wù)邏輯,監(jiān)聽(tīng)頁(yè)面變化的能力都是不可或缺的,本文將詳細(xì)介紹如何在Vue項(xiàng)目中實(shí)現(xiàn)頁(yè)面變化監(jiān)聽(tīng),需要的朋友可以參考下2024-10-10你知道Vue中神奇的$set是如何實(shí)現(xiàn)的嗎?
在日常開(kāi)發(fā)中,$set的也是一個(gè)非常實(shí)用的API。但是我們知其然更要知其所以然,接下來(lái)就跟隨小編一起看一下Vue中的$set是如何實(shí)現(xiàn)的吧2022-12-12Vue計(jì)算屬性與偵聽(tīng)器和過(guò)濾器超詳細(xì)介紹
這篇文章主要介紹了Vue計(jì)算屬性與偵聽(tīng)器和過(guò)濾器,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-10-10