欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

最終效果

實現思路

窗口設置透明

建立系統(tǒng)托盤

獲取托盤坐標,實現應用在托盤上方出現

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

建立系統(tǒng)托盤

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 {
    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 事件參數
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ù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • JavaScript最全公共方法匯總并解析(前端開發(fā)收藏必備)

    JavaScript最全公共方法匯總并解析(前端開發(fā)收藏必備)

    JavaScript掌握各種常用的公共方法更是提升開發(fā)效率和代碼質量的關鍵,無論你是初學者還是資深開發(fā)者,了解并熟練運用這些方法都能讓你的代碼更加簡潔、高效,本篇博客將為你詳細匯總并解析最全的JavaScript公共方法,涵蓋數組、對象、字符串、日期等各個方面的常用技巧
    2024-06-06
  • Javascript操縱Cookie實現購物車程序

    Javascript操縱Cookie實現購物車程序

    Javascript操縱Cookie實現購物車程序...
    2006-11-11
  • javascript中的void運算符語法及使用介紹

    javascript中的void運算符語法及使用介紹

    void是javascript中的一個操作符,void會計算表達式的值,但是會丟棄表達式的返回值接下來將詳細介紹下,感興趣的你可以參考下或許對你有所幫助
    2013-03-03
  • 基于javascript數組實現圖片輪播

    基于javascript數組實現圖片輪播

    這篇文章主要為大家詳細介紹了基于javascript數組實現圖片輪播的相關資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-05-05
  • JS+HTML實現經典游戲吃豆人

    JS+HTML實現經典游戲吃豆人

    吃豆游戲可以說是我們80,90后共同的回憶錄,小時候常常在學習機上玩,所以也就有了強烈的欲望去寫。所以本文將利用JS+HTML實現這一經典游戲,需要的可以參考一下
    2022-04-04
  • window.onload的頁面加載技巧

    window.onload的頁面加載技巧

    大家仔細看下面兩段代碼,代碼一的window.onload = doIt()函數后面有();而代碼二的window.onload = doIt函數名后面沒有括號。
    2008-09-09
  • 結合ES6?編寫?JavaScript?設計模式中的結構型模式

    結合ES6?編寫?JavaScript?設計模式中的結構型模式

    這篇文章主要介紹了結合ES6編寫JavaScript?設計模式中的結構型模式,設計模式是軟件設計中常見問題的解決方案,這些模式很容易重復使用并且富有表現力
    2022-07-07
  • 通過JS和PHP兩種方法判斷用戶請求時使用的瀏覽器類型

    通過JS和PHP兩種方法判斷用戶請求時使用的瀏覽器類型

    在做微站點項目開發(fā)的時候,我們需要判斷當前瀏覽器類型是什么。接下來小編給大家分享通過JS和PHP兩種方法判斷用戶請求時使用的瀏覽器類型,非常不錯,感興趣的朋友一起學習吧
    2016-09-09
  • JS中作用域以及變量范圍分析

    JS中作用域以及變量范圍分析

    這篇文章主要介紹了JS中作用域以及變量范圍分析,需要的朋友可以參考下
    2020-07-07
  • JS實現的新浪微博大廳文字內容滾動效果代碼

    JS實現的新浪微博大廳文字內容滾動效果代碼

    這篇文章主要介紹了JS實現的新浪微博大廳文字內容滾動效果代碼,可實現頁面圖文元素定時滾動的效果,涉及JavaScript時間函數定時改變頁面元素的相關技巧,需要的朋友可以參考下
    2015-11-11

最新評論