最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Electron應用顯示隱藏時展示動畫效果實例

 更新時間:2022年05月29日 09:01:18   作者:FQY  
最近使用electron實現(xiàn)一個簡單的功能,下面這篇文章主要給大家介紹了關于Electron應用顯示隱藏時展示動畫效果的相關資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下

最終效果

實現(xiàn)思路

窗口設置透明

建立系統(tǒng)托盤

獲取托盤坐標,實現(xiàn)應用在托盤上方出現(xiàn)

CSS 里面寫上加載和退出的動畫

添加加載動畫的事件,即給元素套上動畫

設置單擊事件,單擊顯示或者隱藏程序(或者添加 blur 事件,隱藏應用)

給托盤添加右鍵菜單退出應用

實現(xiàn)過程

窗口設置透明

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, // 后臺運行是否禁止一些操作
    },
});

建立系統(tǒng)托盤

import { Tray } from "electron";

// 傳入圖標路徑
tray = new Tray(path.join(__dirname, "../../public/imgs/logo.ico"));

// 鼠標懸浮托盤時顯示的文字
tray.setToolTip("Todo");

獲取托盤坐標,實現(xiàn)應用在托盤上方

// 獲取托盤所在位置信息
const { width, height, x, y } = tray.getBounds();

// 獲取窗口信息 win 是 BrowserWindow 對象
const [w, h] = win.getSize();

// 剛好在正上方
win.setPosition(x + width / 2 - w / 2, y - h - 10);

// 封裝成函數(shù)
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 {
    0% {
        opacity: 0;
        transform: translateY(300px) scale(0);
    }
    100% {
        opacity: 1;
        transform: translateY(0) scale(1);
    }
}

@keyframes hide {
    0% {
        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 事件參數(shù)
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";

// 創(chuàng)建菜單
let menu: Menu = Menu.buildFromTemplate([
    {
        label: "Quit",
        click() {
            app.quit();
        },
    },
]);

// 掛載到托盤右鍵上
tray.setContextMenu(menu);

總結

到此這篇關于Electron應用顯示隱藏時展示動畫的文章就介紹到這了,更多相關Electron顯示隱藏展示動畫內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 小程序如何獲取多個formId實現(xiàn)詳解

    小程序如何獲取多個formId實現(xiàn)詳解

    這篇文章主要介紹了小程序如何獲取多個formId實現(xiàn)詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-09-09
  • 一系列Bootstrap導航條使用方法分享

    一系列Bootstrap導航條使用方法分享

    這篇文章主要為大家整理了一系列Bootstrap導航條使用方法,分享給大家,感興趣的小伙伴們可以參考一下
    2016-04-04
  • 查看圖片(前進后退)功能實現(xiàn)js代碼

    查看圖片(前進后退)功能實現(xiàn)js代碼

    前進后退實現(xiàn)的前提是:images文件夾下圖片的命名是從1~5.jpg有規(guī)律的,感興趣的朋友可以參考下哈,希望可以幫助到你
    2013-04-04
  • JavaScript的遞歸之遞歸與循環(huán)示例介紹

    JavaScript的遞歸之遞歸與循環(huán)示例介紹

    對于不同類型的需要重復計算的問題,循環(huán)和遞歸兩種方法各有所長,能給出更直觀簡單的方案,下面為大家詳細的介紹下JavaScript的遞歸與循環(huán),感興趣的朋友可以了解下
    2013-08-08
  • javascript自然分類法算法實現(xiàn)代碼

    javascript自然分類法算法實現(xiàn)代碼

    這篇文章介紹了javascript自然分類法算法實現(xiàn)代碼,有需要的朋友可以參考一下
    2013-10-10
  • 實現(xiàn)圖片預加載的三大方法及優(yōu)缺點分析

    實現(xiàn)圖片預加載的三大方法及優(yōu)缺點分析

    本文介紹了實現(xiàn)圖片預加載的三大方法(CSS/JAVASCRIPT/AJAX)以及這三種方法的優(yōu)缺點分析,是篇非常值得推薦的文章,小伙伴們可要仔細研究下。
    2014-11-11
  • JavaScript實現(xiàn)打地鼠小游戲

    JavaScript實現(xiàn)打地鼠小游戲

    這篇文章主要為大家詳細介紹了JavaScript實現(xiàn)打地鼠小游戲的相關代碼,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • 前端數(shù)據(jù)加密方式的常用6種使用最詳解

    前端數(shù)據(jù)加密方式的常用6種使用最詳解

    在前端開發(fā)中加密技術是保護數(shù)據(jù)安全的重要手段,本文介紹了六種常用的加密方法,其中包括Base64、MD5、SHA256、SHA1、AES和字符串的escape編碼,每種加密方法都有其特定用途和使用場景,選擇合適的加密方法可以有效提升應用的安全性,需要的朋友可以參考下
    2024-10-10
  • JavaScript實現(xiàn)驗證碼案例

    JavaScript實現(xiàn)驗證碼案例

    這篇文章主要為大家詳細介紹了JavaScript實現(xiàn)驗證碼案例,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • JavaScript中的null和undefined用法解析

    JavaScript中的null和undefined用法解析

    這篇文章主要介紹了JavaScript中的null和undefined用法解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-09-09

最新評論

教育| 盐池县| 科技| 淄博市| 翼城县| 永康市| 荆州市| 富顺县| 松溪县| 平遥县| 达州市| 宽城| 抚宁县| 桃园市| 横山县| 英德市| 随州市| 巨野县| 南京市| 河池市| 嘉祥县| 镇赉县| 将乐县| 澄迈县| 贵港市| 平舆县| 高台县| 桐城市| 紫阳县| 扶绥县| 宕昌县| 北宁市| 留坝县| 宁国市| 凤山县| 聂荣县| 阿拉善左旗| 泾源县| 方城县| 峡江县| 巫山县|