vue Fold展开组件

效果

1. 单页写法

.fold {
  background-color: #fff;
  text-align: center;
  padding: 10px 0;
  span, .icon {
    display: inline-block;
    vertical-align: middle;
  }
}

<div v-if="showContent">被折叠展开的地方</div>

<p class="fold" v-if="showFold" @click="showContent=!showContent">
  <span>{{showContent?"收起":"展开"}}</span>
  <x-icon v-show="showContent" class="icon" type="ios-arrow-up" size="22"></x-icon>
  <x-icon v-show="!showContent" class="icon" type="ios-arrow-down" size="22"></x-icon>
</p>

import {Icon} from "vux";
components: {Icon},
data() {
  return {
    showFold: this.params.isFold,
    showContent: "",
  };
},
复制代码

2. 组件写法

组件代码

<style lang="scss">
  .fold {
    background-color: #fff;
    text-align: center;
    padding: 10px 0;
    span, .icon {
      display: inline-block;
      vertical-align: middle;
    }
  }
</style>

<template>
  <p class="fold" @click="fold()">
    <span>{{move?"收起":"展开"}}</span>
    <x-icon v-show="move" class="icon" type="ios-arrow-up" size="22"></x-icon>
    <x-icon v-show="!move" class="icon" type="ios-arrow-down" size="22"></x-icon>
  </p>
</template>

<script>
  import {Icon} from "vux";

  export default {
    name: "Fold",
    components: {Icon},
    props: {
      showContent: {
        type: Boolean
      }
    },
    data() {
      return {
        move: this.showContent
      }
    },
    methods: {
      fold() {
        this.move = !this.move;
        this.$emit('receiveFold', this.move);
      }
    }
  };
</script>

复制代码

父组件代码

<div v-if="showContent">被折叠展开的地方</div>

<Fold v-if="showFold" :show-content="showContent" @receiveFold="receiveFold"></Fold>


import Fold from "../Fold.vue";
components: {Fold},
data() {
  return {
    showFold: this.params.isFold,
    showContent: !this.params.isFold,
  };
},
methods: {
  //接收Fold组件的信息
  receiveFold(res) {
    this.showContent = res;
  },
},
复制代码
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值