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

Electron應(yīng)用顯示隱藏時(shí)展示動(dòng)畫效果實(shí)例

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

最終效果

實(shí)現(xiàn)思路

窗口設(shè)置透明

建立系統(tǒng)托盤

獲取托盤坐標(biāo),實(shí)現(xiàn)應(yīng)用在托盤上方出現(xiàn)

CSS 里面寫上加載和退出的動(dòng)畫

添加加載動(dòng)畫的事件,即給元素套上動(dòng)畫

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

給托盤添加右鍵菜單退出應(yīng)用

實(shí)現(xiàn)過程

窗口設(shè)置透明

const win = new BrowserWindow({
    width: 300,
    height: 400,
    frame: false, // 窗口邊框
    skipTaskbar: true, // 窗口是否不顯示在任務(wù)欄上面
    alwaysOnTop: true, // 窗口置頂
    transparent: true, // 窗口透明
    resizable: false,
    webPreferences: {
        // 通信文件 后面會(huì)用到
        preload: path.join(__dirname, "preload.js"),
        backgroundThrottling: false, // 后臺(tái)運(yùn)行是否禁止一些操作
    },
});

建立系統(tǒng)托盤

import { Tray } from "electron";

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

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

獲取托盤坐標(biāo),實(shí)現(xiàn)應(yīng)用在托盤上方

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

// 獲取窗口信息 win 是 BrowserWindow 對(duì)象
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 里面寫上加載和退出的動(dòng)畫

動(dòng)畫應(yīng)該添加到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);
    }
}

添加加載動(dòng)畫的事件

// preload.js
import { ipcRenderer } from "electron";

// 對(duì)應(yīng)下面的 win.webContents.send("show");
// 默認(rèn)有個(gè) event 事件參數(shù)
ipcRenderer.on("show", (e) => {
    const root = document.querySelector(".root") as HTMLElement;
    root.style.animation = "show 0.3s linear forwards";
});

// 對(duì)應(yīng)下面的 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`;
});

設(shè)置單擊事件,單擊顯示或者隱藏程序并加載動(dòng)畫

// 添加托盤圖標(biāo)單擊事件
tray.on("click", () => {
    // 窗口是否隱藏
    if (!win.isVisible()) {
        win.setPosition(...aboveTrayPosition(win, tray));
        win.show();
        
        // 展示加載動(dòng)畫
        win.webContents.send("show");
    } else {
        
        const s = 0.3;
        // 展示退出動(dòng)畫
        win.webContents.send("hide", s);
        
        // 退出動(dòng)畫加載完之后再隱藏程序
        setTimeout(() => {
            win.hide();
        }, s * 1000);
    }
});

給托盤添加右鍵菜單退出應(yīng)用

import { Menu } from "electron";

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

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

總結(jié)

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

相關(guān)文章

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

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

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

    一系列Bootstrap導(dǎo)航條使用方法分享

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    JavaScript中的null和undefined用法解析

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

最新評(píng)論

麻阳| 吴桥县| 徐汇区| 安吉县| 买车| 修武县| 垣曲县| 瑞安市| 琼海市| 灵丘县| 蕉岭县| 河间市| 上蔡县| 赤峰市| 全椒县| 永泰县| 罗山县| 西藏| 磐石市| 衡水市| 忻州市| 高尔夫| 定州市| 延寿县| 嘉善县| 大城县| 城固县| 玉溪市| 云南省| 万源市| 河源市| 宁夏| 沙湾县| 涪陵区| 中牟县| 天台县| 北京市| 丹江口市| 汉川市| 左云县| 莲花县|