element全局消息提示组件自定义

有次开发想用element消息提示组件,但用不上其他组件就不想引入element,于是就自己写了。
官网有开发插件的方法:https://cn.vuejs.org/v2/guide/plugins.html
1、文件目录
在这里插入图片描述
2、message.vue

<template>
  <transition name="fade">
    <div class="message" :class="type" v-if="visible">
      <img src="../../assets/message-error.png" v-if="type=='error'" class="icon-type iconfont" :class="'icon-'+type">
      <img src="../../assets/message-success.png" v-if="type=='success'" class="icon-type iconfont" :class="'icon-'+type">
      <img src="../../assets/message-warning.png" v-if="type=='warning'" class="icon-type iconfont" :class="'icon-'+type">
      <img src="../../assets/message-info.png" v-if="type=='info'" class="icon-type iconfont" :class="'icon-'+type">
      <p class="content">{{content}}</p>
      <img src="../../assets/common-delete.png" v-if="hasClose" class="btn-close icon-close" @click="visible=false">
    </div>
  </transition>
</template>

<script>
    export default {
        name: "message",
        data() {
          return {
            content: '',
            time: 3000,
            visible: false,
            type:'',//'success','warning','error','info'
            hasClose:false,
          }
        },
        mounted() {
          this.close()
        },
        methods: {
          close() {
            window.setTimeout(() =>{
              this.visible = false
            }, this.time);
          }
        }
    }
</script>

<style scoped>
.message {
  min-width: 350px;
  box-sizing: border-box;
  border: 1px solid #EBEEF5;
  position: fixed;
  left: 188px;
  top: 20px;
  transform: translateX(-50%);
  background-color: #edf2fc;
  transition: opacity .3s,transform .4s,top .4s;
  padding: 15px 15px 15px 20px;
  display: flex;
  align-items: center;
  border-radius: 4px;
  overflow: hidden;
}
.error {
  background-color: #fef0f0;
  border-color: #fde2e2;
}
.iconfont{
  margin-right: 10px;
}
.message p {
  margin: 0;
}
.content {
  padding: 0;
  font-size: 14px;
  line-height: 1;
}
.error  {
  color: #F56C6C;
  background-color: #fef0f0;
  border-color: #fde2e2;
}
.warning {
  background-color: #fdf6ec;
  border-color: #faecd8;
  color: #E6A23C;
}
.success {
  color: #67C23A;
  background-color: #f0f9eb;
  border-color: #e1f3d8;
}
.info {
  color: #909399;
}
.btn-close {
  position: absolute;
  top: 50%;
  right: 15px;
  transform: translateY(-50%);
  cursor: pointer;
  color: #C0C4CC;
  font-size: 16px;
}

[class*=" icon-"], [class^=icon-] {
  width: 16px;
}
.el-message.is-closable .el-message__content {
  padding-right: 16px;
}
</style>

3、index.js
判断参数,使用$ mount()给组件手动挂载参数,然后将组件插入页面中

import Vue from 'vue'
import Message from './Message.vue'

const messageBox = Vue.extend(Message)

Message.install = function (options, type) {
  if (options === undefined || options === null) {
    options = {
      content: ''
    }
  } else if (typeof options === 'string' || typeof options === 'number') {
    options = {
      content: options
    }
    if (type != undefined && options != null) {
      options.type = type;
    }
  }

  let instance = new messageBox({
    data: options
  }).$mount()

  document.body.appendChild(instance.$el)

  Vue.nextTick(() => {
    instance.visible = true
  })
}

// 导出组件
export default Message

4、在main.js里全局引入
给Vue添加$ my_message方法

import Message from '@/components/message'

Vue.prototype.$my_message = Message.install;

5、在页面中调用

this.$my_message({
              content:'请选择地点',
              time:3000,
              type:'error',
              hasClose:false
            });

6、参数
content: 提示内容
time: 显示时间,单位毫秒
type:消息类型,‘success’,‘warning’,‘error’,‘info’
hasClose:是否显示关闭按钮

### 回答1: 在element中,可以使用全局样式覆盖默认样式。具体步骤如下: 1. 在项目中创建一个样式文件,例如global.css。 2. 在main.js(或者入口文件)中引入该样式文件:`import './global.css'`。 3. 在global.css文件中添加需要覆盖的样式,例如: ```css /* 覆盖el-input的边框颜色 */ .el-input { border-color: #ccc; } ``` 4. 在Vue组件中使用element组件时,该全局样式会自动应用。 注意事项: - 全局样式的优先级比局部样式低,如果需要覆盖局部样式,需要使用更具体的选择器。 - 全局样式会影响所有使用了element组件的地方,因此需要谨慎使用。建议只在必要的情况下使用全局样式。 ### 回答2: element是一款流行的前端UI框架,提供了丰富的组件和样式供开发者使用。在使用element时,可以根据自己的需求进行全局样式的自定义。 首先,我们可以在项目中建立一个独立的样式文件(例如element.css或者theme.scss),并在页面中引入该文件。然后我们可以使用CSS的选择器对element组件进行样式修改。 例如,我们可以使用选择器修改element的按钮的背景颜色: .button { background-color: #f00; } 同样地,我们也可以修改element的表格的样式: .el-table { margin-top: 20px; border: 1px solid #ccc; } 除了使用CSS选择器进行样式修改,element也提供了一些全局的变量供我们进行样式的自定义,我们可以在项目中建立一个scss文件,如theme.scss,并在其中定义我们想要修改的全局变量,例如primary-color、success-color等。然后我们在项目的入口文件中引入该scss文件,并且在编译时使用element的默认主题替换掉我们修改的全局变量。 为了方便开发者的样式修改,element还提供了一些mixin函数供使用,例如mixin(el-button)用于修改按钮的样式。我们可以在项目的scss文件中引入element的mixin,并在其中调用mixin函数进行修改。 综上所述,element提供了丰富的全局自定义样式的方法,我们可以通过选择器、全局变量、mixin函数等方式对element组件进行个性化的样式修改,以满足项目的需求。 ### 回答3: element全局自定义样式是指在使用element组件库开发项目时,我们可以根据自己的需求对element组件的样式进行个性化的定制和修改。 在element组件库中,我们可以通过修改全局样式变量来对组件的样式进行自定义。这些全局样式变量定义在一个名为theme-chalk的SCSS文件中,我们可以通过修改这个文件来改变组件的默认样式。 要修改全局样式变量,我们需要先安装sass编译器,并设置自定义主题的入口样式文件。然后,在这个入口样式文件中,我们可以通过覆盖和修改element组件库中的全局样式变量来改变组件的外观。 例如,如果我们想修改元素的字体大小,我们可以找到theme-chalk文件夹中的_variables.scss文件,在文件中找到对应的变量,如$font-size-base,将它的值修改为我们希望的大小。保存修改后的样式文件,重新编译项目,就可以看到修改后的样式生效。 除了修改全局样式变量外,我们还可以通过添加自定义样式类来实现样式的个性化定制。我们可以为某个element组件添加一个自定义的class属性,并在样式文件中定义该class的样式规则,从而覆盖组件的默认样式。 需要注意的是,全局样式的修改会影响到整个项目中使用到的所有组件,因此在修改样式时要慎重考虑。另外,element组件库也提供了一套基于BEM命名规范的样式类命名方式,我们可以根据需要灵活运用。 总之,element全局自定义样式可以让我们根据自己的需求来改变组件的外观,使得项目更加个性化和美观。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值