ElementUI通知功能Notification和MessageBox踩坑

1.样式修改

很多小伙伴会发现,不管是less种的**/deep/还是scss**中的::v-deep都无法直接修改以上两种功能的底层样式,导致无法修改样式的原因在这里,关键字——scope

在这里插入图片描述

那么如何修改样式?

新建style标签,不要给style添加scope,利用官方文档中的customClass属性,给Notification 加上类名,保证组件样式唯一,配合内置的类型即可进行样式修改。
样式的修改多样化,既可以通过添加class类名进行修改,也可以直接在style对象中直接添加样式。
完整代码在最下面。

在这里插入图片描述

2.调用方法以及DOM结构修改

利用Vue中的createElement 参数进行DOM元素的创建。

直接上完整版代码。

<template>
  <div class="contain"></div>
</template>
<script>
export default {
  data() {
    return {
      notifyArr: [],
      Data: [{ content: 'QQQQQ' }],
    };
  },
  created() {
    this.messageNotice();
  },
  methods: {
    messageNotice() {
      const ele = this.$createElement;
      this.Data.forEach((item) => {
        let notifySolo = this.$notify({
          title: '系统维护公告',
          message: ele(
            'div',
            {
              style: 'width: 100%;height:180px; position: relative;',
            },
            [
              ele(
                'div',
                {
                  class: 'notifyContent',
                },
                item.content
              ),
              ele(
                'el-button',
                {
                  class: 'notifyButton',
                  type: 'primary',
                  on: {
                    click: this.iKnowHandler,
                  },
                },
                '知道了'
              ),
            ]
          ),
          duration: 0,
          customClass: 'notify',
          position: 'bottom-right',
          showClose: false,
        });
        this.notifyArr.push(notifySolo);
      });
    },
    iKnowHandler() {
      this.notifyArr[0].close();
    },
  },
};
</script>

<style lang="less" scoped></style>
<style lang="scss">
// ::v-deep .el-notification.right {
//   padding: 0;
// }
// 提醒样式
.notify {
  background: #32353b;
  border: 1px solid #313d4f;
  border-radius: 4px;
  width: 370px;
  padding: 0;
  .notifyContent {
    font-size: 14px;
    color: #ffffff;
    width: 370px;
    height: 60px;
    padding: 24px;
  }
  .notifyButton {
    background: #4880ff;
    border-radius: 4px;
    width: 92px;
    height: 38px;
    color: #ffffff;
    position: absolute;
    right: 0px;
    bottom: 0px;
    margin: 24px;
    border: none;
  }
  .el-notification__group {
    margin-left: 0;
    .el-notification__title {
      font-size: 18px;
      color: #ffffff;
      height: 60px;
      width: 100%;
      display: flex;
      align-items: center;
      padding: 0 24px;
      border-bottom: 1px solid #636971;
    }
  }
}
</style>

上面这个组件适合新手即插即用。

注:给on添加方法时,不能给方法名加()。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值