为 ElementUI 中的 Message 设置全局的偏移量

部分系统会在顶部有导航栏,element-ui 中 Message 消息提示的默认偏移量是 20px,会遮挡顶部内容,所以需要将偏移量进行全局调整。

环境

  • Vue 2.x
  • ElementUI 2.x

源码

import { Message as ElementUI_Message } from 'element-ui'

const OffsetMessage = function(options, type) {
    options = options || {}
    if (typeof options === 'string') {
        options = { message: options }
    }
    if (options.offset === undefined || options.offset === null) {
        options.offset = 90
    }
    if (typeof type === 'string') {
        options.type = type
    }
    return ElementUI_Message(options)
}

for (let prop in ElementUI_Message) {
    if (prop === 'success' || prop === 'warning' || prop === 'info' || prop === 'error') {
        OffsetMessage[prop] = function(options) {
            return OffsetMessage(options, prop)
        }
        continue
    }
    OffsetMessage[prop] = ElementUI_Message[prop]
}

export default OffsetMessage
export const Message = OffsetMessage

替换 Message

修改 main.js 文件,必须在 Vue.use(ElementUI) 之后重设 $message 才能生效

import Vue from 'vue'
import ElementUI from 'element-ui'
import OffsetMessage from './offset-message'


Vue.use(ElementUI)

Vue.prototype.$message = OffsetMessage

调用调整

1、如果是通过全局方法 $message 的方式进行调用,则无需进行修改

2、如果是通过单独引用的方式进行调用,需要修改导入方式

// import { Message } from 'element-ui'
import { Message } from './offset-message'

Message.success('OK')