封装组件弹框

本文介绍如何在前端开发中封装一个可复用的组件——弹框。通过在父组件调用和子组件实现的步骤,详细阐述了组件化开发的思路和技术要点。
摘要由CSDN通过智能技术生成

封装组件弹框
在父组件上写

<template>
  <div>
    <span
      class="weui-switch"
      :class="{'weui-switch-on' : me_checked}"
      :value="value"
      @click="toggle"
    ></span>
  </div>
</template>

<script>
export default {
  name: 'kaiguan',
  // 接收数据 这步可有可无 也可以不用传递直接在这个封装的组件中去写
  // 因为后面有$emit 派发事件呢,可直接在其调用的组件中去书写业务逻辑
  props: {
    value: {
      type: Boolean,
      default: true
    }
  },
  data () {
    return {
      me_checked: this.value
    }
  },
  // 监听状态改变 使用 $emit 派发事件
  watch: {
    me_checked (val) {
      this.$emit('input', val)
    }
  },
  methods: {
    // 点击切换状态
    toggle () {
      this.me_checked = !this.me_checked
    }
  }
}
</script>
<style>
/*  这里写的最多的就是css样式了 */
/* 初始样式 */
  .weui-switch {
    display: block;
    position: relative;
    width: 100px;
    height: 62px;
    border: 1px solid #DFDFDF;
    outline: 0;
    border-radius: 30px;
    box-sizing: border-box;
    background-color: #DFDFDF;
    transition: background-color 0.1s, border 0.1s;
    cursor: pointer;
  }
  .weui-switch:before {
    content: " ";
    position: absolute;
    top: 0;
    left: 0;
    width: 100px;
    height: 60px;
    border-radius: 30px;
    background-color: #FDFDFD;
    transition: transform 0.35s cubic-bezier(0.45, 1, 0.4, 1);
  }
  .weui-switch:after {
    content: " ";
    position: absolute;
    top: 0;
    left: 0;
    width: 60px;
    height: 60px;
    border-radius: 30px;
    background-color: #FFFFFF;
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.4);
    transition: transform 0.35s cubic-bezier(0.4, 0.4, 0.25, 1.35);
  }
  /* 开的样式 */
  .weui-switch-on {
    border-color: #1AAD19;
    background-color: #1AAD19;
  }
  .weui-switch-on:before {
    border-color: #1AAD19;
    background-color: #1AAD19;
  }
  .weui-switch-on:after {
    transform: translateX(20px);
  }
</style>

在子组件中写

<template>
  <div class="tan">
    <div class="box">
      <div class="con">
        <h4>title</h4>
        <h4>content</h4>
      </div>
      <div class="btn">
        <button @click="qd">确定</button>
        <button @click="qx">取消</button>
      </div>
    </div>
  </div>
</template>
<script>
export default {
  methods: {
    qd () {
      // 确认按钮,这里使用this.$emit派发事件让其调用的组件触发事件
      this.$emit('qd')
      // Bus.$emit()
      // 这里也可以使用Bus.$emit()在点击确认之前传送写什么数据
    },
    qx () {
      // 取消按钮,这里使用this.$emit派发事件让其调用的组件触发事件
      this.$emit('qx')
    }
  }
}
</script>
<style lang="scss" scoped>
.tan {
  width: 400px;
  height: 400px;
  border: 1px solid;
  margin: 50% auto;
}
.btn > button {
  margin-left: 10px;
}
</style>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值