添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
首页 > 网络编程 > JavaScript > javascript技巧 > Electron显示隐藏展示动画

Electron应用显示隐藏时展示动画效果实例

作者:FQY

最近使用electron实现一个简单的功能,下面这篇文章主要给大家介绍了关于Electron应用显示隐藏时展示动画效果的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下

窗口设置透明

建立系统托盘

获取托盘坐标,实现应用在托盘上方出现

CSS 里面写上加载和退出的动画

添加加载动画的事件,即给元素套上动画

设置单击事件,单击显示或者隐藏程序(或者添加 blur 事件,隐藏应用)

给托盘添加右键菜单退出应用

窗口设置透明

const win = new BrowserWindow({
    width: 300,
    height: 400,
    frame: false, // 窗口边框
    skipTaskbar: true, // 窗口是否不显示在任务栏上面
    alwaysOnTop: true, // 窗口置顶
    transparent: true, // 窗口透明
    resizable: false,
    webPreferences: {
        // 通信文件 后面会用到
        preload: path.join(__dirname, "preload.js"),
        backgroundThrottling: false, // 后台运行是否禁止一些操作

建立系统托盘

import { Tray } from "electron";
// 传入图标路径
tray = new Tray(path.join(__dirname, "../../public/imgs/logo.ico"));
// 鼠标悬浮托盘时显示的文字
tray.setToolTip("Todo");

获取托盘坐标,实现应用在托盘上方

// 获取托盘所在位置信息
const { width, height, x, y } = tray.getBounds();
// 获取窗口信息 win 是 BrowserWindow 对象
const [w, h] = win.getSize();
// 刚好在正上方
win.setPosition(x + width / 2 - w / 2, y - h - 10);
// 封装成函数
const aboveTrayPosition = (win, tray) => {
    const { width, height, x, y } = tray.getBounds();
    const [w, h] = win.getSize();
    return [x + width / 2 - w / 2, y - h - 10]

CSS 里面写上加载和退出的动画

动画应该添加到HTML根元素上,根元素必须得是 宽高 100%

@keyframes show {
        opacity: 0;
        transform: translateY(300px) scale(0);
    100% {
        opacity: 1;
        transform: translateY(0) scale(1);
@keyframes hide {
        opacity: 1;
        transform: translateY(0) scale(1);
    100% {
        opacity: 0;
        transform: translateY(300px) scale(0);

添加加载动画的事件

// preload.js
import { ipcRenderer } from "electron";
// 对应下面的 win.webContents.send("show");
// 默认有个 event 事件参数
ipcRenderer.on("show", (e) => {
    const root = document.querySelector(".root") as HTMLElement;
    root.style.animation = "show 0.3s linear forwards";
// 对应下面的 win.webContents.send("hide", s);
ipcRenderer.on("hide", (e, s: number) => {
    const root = document.querySelector(".root") as HTMLElement;
    root.style.animation = `hide ${s}s linear forwards`;

设置单击事件,单击显示或者隐藏程序并加载动画

// 添加托盘图标单击事件
tray.on("click", () => {
    // 窗口是否隐藏
    if (!win.isVisible()) {
        win.setPosition(...aboveTrayPosition(win, tray));
        win.show();
        // 展示加载动画
        win.webContents.send("show");
    } else {
        const s = 0.3;
        // 展示退出动画
        win.webContents.send("hide", s);
        // 退出动画加载完之后再隐藏程序
        setTimeout(() => {
            win.hide();
        }, s * 1000);

给托盘添加右键菜单退出应用

import { Menu } from "electron";
// 创建菜单
let menu: Menu = Menu.buildFromTemplate([
        label: "Quit",
        click() {
            app.quit();
// 挂载到托盘右键上
tray.setContextMenu(menu);

到此这篇关于Electron应用显示隐藏时展示动画的文章就介绍到这了,更多相关Electron显示隐藏展示动画内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

  • 微信小程序实现手机获取验证码倒计时60s
    微信小程序实现手机获取验证码倒计时60s
    2022-05-05
  • HTML+JS模拟实现QQ下拉菜单效果
    HTML+JS模拟实现QQ下拉菜单效果
    2022-05-05
  • 微信小程序实战之网易云音乐歌曲详情页实现代码
    微信小程序实战之网易云音乐歌曲详情页实现代码
    2022-05-05
  • Electron应用显示隐藏时展示动画效果实例
    Electron应用显示隐藏时展示动画效果实例
    2022-05-05
  • 微信小程序实战之双人五子棋游戏是实现
    微信小程序实战之双人五子棋游戏是实现
    2022-05-05
  • UNiAPP中如何使用render.js绘制高德地图
    UNiAPP中如何使用render.js绘制高德地图
    2022-05-05
  • JavaScript实现事件总线(Event Bus)的方法详解
    JavaScript实现事件总线(Event Bus)的方法详解
    2022-05-05
  • 美国设下计谋,用娘炮文化重塑日本,已影响至中国
    美国设下计谋,用娘炮文化重塑日本,已影响至中国
    2021-11-19
  • 时空伴随者是什么意思?时空伴随者介绍
    时空伴随者是什么意思?时空伴随者介绍
    2021-11-09
  • 工信部称网盘企业免费用户最低速率应满足基本下载需求,天翼云盘回应:坚决支持,始终
    工信部称网盘企业免费用户最低速率应满足基本下载需求,天翼云盘回应:坚决支持,始终
    2021-11-05
  • 2022年放假安排出炉:五一连休5天 2022年所有节日一览表
    2022年放假安排出炉:五一连休5天 2022年所有节日一览表
    2021-10-26
  • 电脑版 - 返回首页

    2006-2023 脚本之家 JB51.Net , All Rights Reserved.
    苏ICP备14036222号