vue简单实现Notify组件

使用vue简单实现vant的notify组件

思路:
使用基础 Vue 构造器,创建一个“子类”。参数是一个包含组件选项的对象。

html

<div id="notify"></div>

notify.js

import Vue from "vue"
import "./notify.css"
const Demo = Vue.extend({
  props:['msg'],
  render(){
    return (
      <div class="show-notify">{this.msg}</div>
    )
  }
})
export default function Notify(msg){
  let instance  = new Demo({
    propsData:{msg} // 使用propsData传参
  })
  let PostEl = instance.$mount().$el; //生成子组件的HTML部分
       //挂载到一个名叫notify的div中,此处也可以是BODY
  document.getElementById("notify").appendChild(PostEl);
  setTimeout(()=>{
    PostEl.style.top = "-50px"
    setTimeout(()=>{
      document.getElementById("notify").removeChild(PostEl)
    },200)
  },2000)
};

css

@keyframes slideDown {
  0% {transform: translateY(-50px);}
  100% {transform: translateY(0);}
}
.show-notify {
  width: 100%;
  height: 50px;
  line-height: 50px;
  text-align: center;
  font-size: 18px;
  color: white;
  background-color: red;
  position: fixed;
  top: 0;
  animation: slideDown 200ms;
  -webkit-animation: slideDown 200ms;
  transition: 200ms;
}

在组件中使用

// app.vue
<template>
  <div id="app">
    <button @click="handelClick">通知</button>
  </div>
</template>

<script>
import Notify from "./components/Notify/notify"
export default {
  name: "App",
  methods: {
    handelClick(){
      Notify('警告') // 通过js调用
    }
  },
};
</script>
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值