vue2 -- 公共弹窗组件

组件的使用方式:

 <panel-dialog :dialogShow.sync="dialogShow" title="设备详情">
    <!--<div>自定义内容</div> -->
 </panel-dialog>

其中title 和 width  可以直接写到标签上不用非要 :title=" "  :width=" " 这样来写, 

dialogShow 加上.sync 可以组件里面和父组件共同使用

组件:

 
<template>
  <div v-if="dialogShow" class="panelDialog" :style="'width:' + width">
    <!-- 这里套用一层就可以避免外层居中的样式和animate动画冲突了 -->
    <div class="animate__animated animate__fadeInDown">
      <div class="dialog">
        <i class="closeBtn el-icon-close" @click="closeFn"></i>
        <p class="title" v-if="title">{{ title }}</p>  
        <slot></slot> 
      </div>
    </div>
  </div>
</template>
<script>
export default {
  name: "PanelDialog",
  props: {
    dialogShow: {
      type: Boolean,
      default: false,
    },
    width: {
      type: String,
      default: "349px",
    },
    title: {
      type: String,
      default: "",
    },
  },
  data() {
    return {};
  },
  methods: {
    closeFn() { 
      this.$emit("update:dialogShow", false);
    },
  },
};
</script>
<style lang="scss" scoped>
.panelDialog {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);

  .dialog {
    width: 100%;
    min-height: 50px;
    padding: 10px 10px 0;
    box-sizing: border-box;
    position: relative;
    background-image: var(--cddk_dialog_bgCenter);
    background-size: 100% auto; 
    .closeBtn {
      position: absolute;
      top: -22px;
      right: 10px;
      font-size: 20px;
      color: #00dcf5;
      cursor: pointer;
      z-index: 2;
    }

    .title {
      width: 100%;
      height: 24px;
      line-height: 24px;
      padding: 0 15px;
      box-sizing: border-box;
      position: absolute;
      top: -24px;
      left: 0;
      font-size: 16px;
      font-weight: 300;
      color: var(--cddk_dialog_title);
    } 
  }
  
}
</style>
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值