vue3 JavaScript实现微信和qq消息提醒闪烁效果

文章讲述了作者在项目中如何使用CSS3和JavaScript实现告警信息的闪烁效果,以及在Vue.js中的代码实现,包括使用ref管理可见状态、定时器控制闪烁和处理可能影响点击事件的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

需求分析

在这里插入图片描述

最终效果如上图。
最开始想到使用css3动画,改变opacity来实现,这种方式最简单,实际做出来是呼吸灯效果,不是很好。
后来想到还是用js实现比较合适,改变隐藏和显示状态

代码

<template>
<div class="alarm-info">
  <div>|</div>
  <img src="@/assets/imgs/home/alarm.png" alt="" style="cursor: pointer" @click="popclick" />
  <!--这里是需要闪烁的元素-->
  <div class="alarm-number" :style="{ visibility: visibleStatus }">{{ state.alarmNumber }}</div>
  <!--end-->
  <div class="trigger-mask" @click="popclick"></div>
</div>
</template>
<script setup lang="ts">
import { onMounted, ref, onUnmounted } from "vue";
// 右上角红色告警闪烁效果
const visibleStatus = ref<"visible" | "hidden">("visible");
const blinkTimer = ref();
// 关闭闪烁
const stopBlink = () => {
  blinkTimer.value && clearInterval(blinkTimer.value);
};
//闪烁函数
const startBlink = () => {
  stopBlink();
  blinkTimer.value = window.setInterval(() => {
    if (visibleStatus.value == "visible") {
      visibleStatus.value = "hidden";
    } else {
      visibleStatus.value = "visible";
    }
  }, 500);
};
//获取告警数量请求
const getPopAlarmNumberData=()=>{
  //axios请求
  //……
  //如果数量大于0,就触发闪烁
  startBlink();
}
onMounted(() => {
  getPopAlarmNumberData();
});
//卸载页面记得清除定时器
onUnmounted(() => {
  blinkTimer.value && clearInterval(blinkTimer.value);
  blinkTimer.value = null;
});
</script>

注意

需要注意,闪烁的元素很可能没办法触发点击事件,这里解决办法,是上面定位一个透明元素,点击元素实现点击效果

Vue应用中实现微信QQ的授权登录功能,通常需要借助第三方库,如`vue-authentification-plugin`或者自定义`axios`请求来与微信QQ的OAuth服务交互。以下是一个简化的流程: 1. **注册开发者账号**: - 微信开放平台(https://open.weixin.qq.com/)或QQ开放平台(https://open.qq.com/)注册账号并创建应用。 2. **获取API密钥**: - 从每个平台获取App ID相应的secret key(对于微信是appsecret,QQ可能叫token或key)。 3. **安装依赖**: - 使用npm或yarn安装所需的插件,例如`vue-authentification-plugin` 或者 `axios`。 4. **配置插件**: - 对于`vue-authentification-plugin`,在`main.js`中添加配置: ```javascript import VueAuthenticationPlugin from &#39;vue-authentication-plugin&#39;; Vue.use(VueAuthenticationPlugin, { providers: [ { id: &#39;wechat&#39;, name: &#39;微信登录&#39;, icon: &#39;logo_wechat.png&#39;, // 图标路径 url: &#39;/oauth/wechat&#39;, // 授权回调地址 clientId: &#39;your_wechat_client_id&#39;, // 微信AppID clientSecret: &#39;your_wechat_client_secret&#39;, // 微信AppSecret scope: &#39;snsapi_userinfo&#39;, // 请求权限 }, // QQ同理,替换相应的配置 ] }); ``` 5. **调用微信/QQ登录**: - 用户点击登录按钮后,调用相应提供商的登录方法: ```javascript const wechatLogin = () => { this.$auth.wechat().then((response) => { // 登录成功后处理用户信息 // response contains the user info object }).catch((error) => { // 处理登录错误 }); }; const qqLogin = () => { // 类似地,替换为QQ相关的逻辑 }; ``` 6. **处理回调**: - 创建路由或者设置路由守卫,在用户从微信/QQ回来时,处理授权结果。 7. **安全注意事项**: - 接收从微信/QQ返回的数据后,务必在服务器端进行进一步验证,以防止CSRF攻击。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值